{"id":"CVE-2026-66747","state":"PUBLISHED","title":"ENDLESSDOORS: Zbtlink Router rctl/kworker Phone-Home Root Implant","description":"Zbtlink router firmware ships an embedded remote-control implant, ENDLESSDOORS, present in every published build across the product line. It is the open-source ycsunjane/rctl tool built in as an OpenWrt package (librctl.so), started at boot and run as root under the process name kworker to blend in with the kernel's [kworker/*] threads. It opens no listening port; it phones home over cleartext TCP to a hardcoded command-and-control server (command channel 7000, interactive-shell callback 7001) with no authentication and no transport encryption, re-attempting contact roughly every 35 seconds. Its command handler passes any received string to popen() as uid=0, and a reserved rctlbash command returns an interactive root shell. Because the channel is unauthenticated and cleartext, control is not limited to whoever planted it: any party that answers at the C2 address, occupies the network path (DNS or route hijack), or acquires the hardcoded fallback domain obtains unauthenticated remote code execution as root.","publishedAt":"2026-08-05T10:50:45.576Z","updatedAt":"2026-08-05T14:20:12.478Z","severity":{"score":9.3,"label":"Critical","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","source":"VulnCheck"},"assigner":"VulnCheck","products":["Zbtlink CPE2801 Firmware","Zbtlink WE1026-5G-WD Firmware","Zbtlink WE1326 Firmware","Zbtlink WE2007 Firmware","Zbtlink WE2008-DSIM Firmware","Zbtlink WE2416 Firmware","Zbtlink WE3326 Firmware","Zbtlink WE5927 Firmware","Zbtlink WE5931 Firmware","Zbtlink WE5931AC Firmware","Zbtlink WE826-T3-DSIM Firmware","Zbtlink WG108 Firmware","Zbtlink WG209 Firmware","Zbtlink WG259 Firmware","Zbtlink WG1602 Firmware","Zbtlink WG1608-DSIM Firmware","Zbtlink WG2105 Firmware","Zbtlink WG2107 Firmware","Zbtlink WG3526 Firmware","Zbtlink ZBT-Z8102AX-2SIM Firmware"],"affected":[{"vendor":"Zbtlink","product":"CPE2801 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.10.09","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:cpe2801_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE1026-5G-WD Firmware","defaultStatus":"unaffected","versions":[{"version":"21.04.07","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we1026-5g-wd_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE1326 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.02.18_1","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we1326_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE2007 Firmware","defaultStatus":"unaffected","versions":[{"version":"23.08.12","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we2007_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE2008-DSIM Firmware","defaultStatus":"unaffected","versions":[{"version":"23.08.11","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we2008-dsim_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE2416 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.03.22_1","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we2416_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE3326 Firmware","defaultStatus":"unaffected","versions":[{"version":"20.09.30","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we3326_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE5927 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.08.10","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we5927_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE5931 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.05.31","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we5931_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE5931AC Firmware","defaultStatus":"unaffected","versions":[{"version":"22.05.31","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we5931ac_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE826-T3-DSIM Firmware","defaultStatus":"unaffected","versions":[{"version":"21.12.21","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we826-t3-dsim_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG108 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.08.06_1","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg108_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG209 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.07.28","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg209_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG259 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.03.23","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg259_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG1602 Firmware","defaultStatus":"unaffected","versions":[{"version":"23.10.11","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg1602_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG1608-DSIM Firmware","defaultStatus":"unaffected","versions":[{"version":"23.03.16","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg1608-dsim_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG2105 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.05.30","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg2105_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG2107 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.09.08","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg2107_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG3526 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.11.01","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg3526_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"ZBT-Z8102AX-2SIM Firmware","defaultStatus":"unaffected","versions":[{"version":"7.6.7.2-25.0814_114432","status":"affected","versionType":"custom"}],"platforms":["ARM"],"cpes":["cpe:2.3:o:zbtlink:z8102ax_firmware:*:*:*:*:*:*:*:*"]}],"references":["https://www.vulncheck.com/blog/zbt-endlessdoors","https://www.zbtlink.com/pages/zbt-router-firmware-download","https://github.com/ycsunjane/rctl","https://www.vulncheck.com/advisories/zbt-endlessdoors"],"weaknesses":["CWE-506"],"ingestedAt":"2026-10-29T20:12:41.951Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/66xxx/CVE-2026-66747.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-66747","state":"PUBLISHED","datePublished":"2026-08-05T10:50:45.576Z","dateUpdated":"2026-08-05T14:20:12.478Z","assignerShortName":"VulnCheck","assignerOrgId":"83251b91-4cc7-4094-a5c7-464a1b83ea10","dateReserved":"2026-07-27T16:27:47.648Z"},"containers":{"cna":{"title":"ENDLESSDOORS: Zbtlink Router rctl/kworker Phone-Home Root Implant","descriptions":[{"lang":"en","value":"Zbtlink router firmware ships an embedded remote-control implant, ENDLESSDOORS, present in every published build across the product line. It is the open-source ycsunjane/rctl tool built in as an OpenWrt package (librctl.so), started at boot and run as root under the process name kworker to blend in with the kernel's [kworker/*] threads. It opens no listening port; it phones home over cleartext TCP to a hardcoded command-and-control server (command channel 7000, interactive-shell callback 7001) with no authentication and no transport encryption, re-attempting contact roughly every 35 seconds. Its command handler passes any received string to popen() as uid=0, and a reserved rctlbash command returns an interactive root shell. Because the channel is unauthenticated and cleartext, control is not limited to whoever planted it: any party that answers at the C2 address, occupies the network path (DNS or route hijack), or acquires the hardcoded fallback domain obtains unauthenticated remote code execution as root."}],"affected":[{"vendor":"Zbtlink","product":"CPE2801 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.10.09","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:cpe2801_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE1026-5G-WD Firmware","defaultStatus":"unaffected","versions":[{"version":"21.04.07","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we1026-5g-wd_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE1326 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.02.18_1","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we1326_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE2007 Firmware","defaultStatus":"unaffected","versions":[{"version":"23.08.12","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we2007_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE2008-DSIM Firmware","defaultStatus":"unaffected","versions":[{"version":"23.08.11","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we2008-dsim_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE2416 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.03.22_1","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we2416_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE3326 Firmware","defaultStatus":"unaffected","versions":[{"version":"20.09.30","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we3326_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE5927 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.08.10","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we5927_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE5931 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.05.31","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we5931_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE5931AC Firmware","defaultStatus":"unaffected","versions":[{"version":"22.05.31","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we5931ac_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WE826-T3-DSIM Firmware","defaultStatus":"unaffected","versions":[{"version":"21.12.21","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:we826-t3-dsim_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG108 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.08.06_1","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg108_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG209 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.07.28","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg209_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG259 Firmware","defaultStatus":"unaffected","versions":[{"version":"21.03.23","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg259_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG1602 Firmware","defaultStatus":"unaffected","versions":[{"version":"23.10.11","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg1602_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG1608-DSIM Firmware","defaultStatus":"unaffected","versions":[{"version":"23.03.16","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg1608-dsim_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG2105 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.05.30","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg2105_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG2107 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.09.08","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg2107_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"WG3526 Firmware","defaultStatus":"unaffected","versions":[{"version":"22.11.01","status":"affected","versionType":"custom"}],"platforms":["MIPS","ARM"],"cpes":["cpe:2.3:o:zbtlink:wg3526_firmware:*:*:*:*:*:*:*:*"]},{"vendor":"Zbtlink","product":"ZBT-Z8102AX-2SIM Firmware","defaultStatus":"unaffected","versions":[{"version":"7.6.7.2-25.0814_114432","status":"affected","versionType":"custom"}],"platforms":["ARM"],"cpes":["cpe:2.3:o:zbtlink:z8102ax_firmware:*:*:*:*:*:*:*:*"]}],"references":[{"url":"https://www.vulncheck.com/blog/zbt-endlessdoors","name":"VulnCheck Research Blog","tags":["technical-description","exploit"]},{"url":"https://www.zbtlink.com/pages/zbt-router-firmware-download","name":"Vendor Firmware Download Page","tags":["product"]},{"url":"https://github.com/ycsunjane/rctl","name":"Upstream Open Source rctl"},{"url":"https://www.vulncheck.com/advisories/zbt-endlessdoors","name":"VulnCheck Advisory","tags":["third-party-advisory"]}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"NONE","userInteraction":"NONE","vulnConfidentialityImpact":"HIGH","subConfidentialityImpact":"NONE","vulnIntegrityImpact":"HIGH","subIntegrityImpact":"NONE","vulnAvailabilityImpact":"HIGH","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED","version":"4.0","baseSeverity":"CRITICAL","baseScore":9.3,"vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"}},{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV3_1":{"version":"3.1","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH","baseSeverity":"CRITICAL","baseScore":9.8,"vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-506","lang":"en","description":"CWE-506 Embedded Malicious Code","type":"CWE"}]}],"providerMetadata":{"shortName":"VulnCheck","orgId":"83251b91-4cc7-4094-a5c7-464a1b83ea10","dateUpdated":"2026-08-05T10:55:20.206Z"},"datePublic":"2026-08-05T00:00:00.000Z","credits":[{"lang":"en","value":"Jacob Baines of VulnCheck","type":"finder"}],"source":{"discovery":"UNKNOWN"},"x_generator":{"engine":"vulncheck"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-05T14:19:25.533200Z","id":"CVE-2026-66747","options":[{"Exploitation":"poc"},{"Automatable":"yes"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-08-05T14:20:12.478Z"}}]}}}