Skip to content

Build Not yet confirmed elsewhere1 publisher 3 min read Published

Answering one hardcoded address gives you root on 20+ Zbtlink router models

VulnCheck's ENDLESSDOORS ships enabled on more than 20 Zbtlink models and runs as root from boot, and because it opens no port at all, the check that would have caught it has to happen on the firmware image.

The Engineer · Build desk

Send a correction

Illustration accompanying Answering one hardcoded address gives you root on 20+ Zbtlink router models
Generated illustration

What happened

  • VulnCheck disclosed ENDLESSDOORS, tracked as CVE-2026-66747, a remote-control implant found in the firmware of more than 20 Zbtlink router models and giving unauthenticated root code execution.
  • The implant is enabled by default, starts at boot and runs as root, so no misconfiguration or exposed management interface is needed to bring it into play.
  • It opens no listening port; instead it dials a hardcoded C2 server outbound over cleartext TCP, with no authentication and no transport encryption on the channel.
  • VulnCheck says that because the channel is unauthenticated, anyone who answers at the C2 address or who can occupy the network path to it gets root command execution on the router.

Why it matters

  • What it limits constraint A clean port scan cannot clear a device whose implant never listens, so the assurance work moves to whoever handles the firmware image before the unit is racked.
  • Who's exposed exposure An upstream provider, or whoever ends up holding that hardcoded address, sits inside the customer's trust boundary by default, needing no action of their own and generating no signal the customer would see.
  • What it costs cost Using the shipped network rules means paying for a tap between the router and the WAN link, because the implanted box is itself the egress point and a LAN-side sensor never sees the call home.
  • Who has to decide decision Anyone buying commodity perimeter hardware now has to decide whether image inspection belongs in acceptance testing, which lands the cost on procurement lead times rather than on the detection backlog.

Testing a unit for this means becoming the thing it calls. Put the router on a bench network, answer for the hardcoded destination, and watch whether root commands land. That is precisely the position VulnCheck's exploit takes, alongside the PCAP, Nuclei template, ASM queries and Snort, Suricata and YARA rules in the coverage package [5]. It is a procedure involving a cable and a socket, not a query you run against an asset inventory.

Which makes the missing list the operational problem. The bulletin gives a count, more than 20 models, and not an enumeration of them [1][14]. Until models and firmware builds are named, an operator with a mixed fleet has no filter to apply, and no scan that would supply one.

Notice what the same bulletin can count. VulnCheck's Target Intelligence puts 7,100-plus exposed vulnerable Ruby on Rails instances on the board [6] and roughly 1,115 internet-exposed vCenter servers [7]. For the Zbtlink fleet there is no exposure figure at all [13]. That follows from the mechanism rather than from any gap in the tooling: both of those numbers come from finding things that listen, and this implant originates the connection instead [3].

The rest of the week's list is inbound work by comparison. The Rails Active Storage bug is an unauthenticated file read to RCE [8]. One vCenter flaw lets an attacker with network access sign in as full administrator [9]; the other lets an unauthenticated attacker plant a file that runs as root [10]. The SMB escalation needs any valid user credential [11]. So four of the five require no credentials [15], and three of those four are reached by connecting to the target. The fourth is reached by answering when the target calls you.

That is why the acceptance test has to read the image, and reading is not the same as checking a signature. A signature tells you the firmware is the vendor's build; here the default-on root process is in the vendor's build [1][2]. The check that catches it is extraction and inspection: enumerate what init starts, note what runs as root, then boot the image on an isolated network and record what it dials [2][3]. Slow, and it needs someone who can read a squashfs.

In my context that is still the cheaper half of the problem, because I can put a gate in procurement and I cannot put a sensor on the transit path between a branch router and an address in somebody else's netblock. If your leverage runs the other way, invert the priority. The thing not to do is treat a clean port scan as evidence, because on this device a clean port scan is the expected result [3].

What to watch

  • Publication of the affected Zbtlink model and firmware-build list, which is what would turn this from a bench test into an inventory query.
  • Any report of someone other than the original operator answering at the hardcoded C2 address or taking the path position VulnCheck's exploit uses.
  • Whether Zbtlink issues firmware without the default-on root process, and how customers are expected to verify that it is gone.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence58
Adoption32
Hype gap+18
Incentives74
Confidence52
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    VulnCheck disclosed ENDLESSDOORS, a remote-control implant in the firmware of 20+ Zbtlink router models, tracked as CVE-2026-66747, Zbtlink Router ENDLESSDOORS Implant Unauthenticated Root Code Execution.

    Reported Supported Source: VulnCheck Initial Access IntelligenceView cited source
  2. [2]

    The ENDLESSDOORS implant is enabled by default, starts at boot, and runs as root.

    Reported Supported Source: VulnCheckView cited source
  3. [3]

    Unlike a conventional remote vulnerability, ENDLESSDOORS opens no listening port; it is a fully outbound phone-home implant that dials a hardcoded C2 server over cleartext TCP with no authentication and no transport encryption.

    Reported Supported Source: VulnCheckView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. docs.vulncheck.com

    1 article · August 31, 2026

    New exploits and detections for backdoored Zbtlink routers, Ruby on Rails, vCenter Server x2, Microsoft Windows x2, and more.

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

  • Firmware Supply Chain SecurityFollow
  • Network Edge Device CompromiseFollow
  • Unauthenticated RCE in Enterprise SoftwareFollow
  • Exploit and Detection EngineeringFollow

Entities

Loading related stories