Events Secure.com at Black Hat USA 2026

Zyxel GS1900 Zero-Day Slipped Past a June Patch and Hit 996 Switches

Zyxel GS1900 zero-day bypassed a June patch and hit 996 switches in 48 countries. See what was stolen, the fixed firmware, and the IOCs.

Attackers broke into 996 Zyxel GS1900 switches across 48 countries using a zero-day that walked right past a June security patch. Zyxel has now shipped a real fix. If your switches still run the June firmware, you are exposed.

What Happened?

In June, Zyxel patched CVE-2026-7273, a buffer overflow in the GS1900 web management interface. Around August 17, a suspected Chinese-speaking group tracked as Kapibala started hitting the switches anyway.

When a threat intelligence firm disclosed the campaign on September 21, everyone blamed the old bug. CISA added it to its Known Exploited Vulnerabilities catalog that same day.

Then a firmware security firm found the attackers’ exploit in an exposed archive on their own servers. The code intentionally checked for the patched firmware. By September 28, researchers had confirmed it worked on all ten patched releases.

Zyxel GS1900 · Timeline

Patched in June. Still hacked in August.

The June update looked like the end of the story. Attackers had already built an exploit that checked for it and walked around it.

Jun 16
June patch ships
CVE-2026-7273 fixed
Aug 17
Attacks begin
996 switches, 48 countries
Sep 21
Wrong bug blamed
Old CVE added to KEV
Sep 28
Bypass confirmed
Works on all 10 patched builds
Oct 22
Real fix ships
CVE-2026-107441
Nov 3
Advisory goes public
Update now

Switches sat on a “patched” build for months while the exploit kept working.

How the Bypass Works

The Flaw: CVE-2026-107441

The new flaw is CVE-2026-107441, rated 8.8 on the CVSS scale. It is an out-of-bounds write in the switch’s dispatcher.cgi program.

The June patch added size checks. But attackers corrupt a parameter counter before those checks run. From there, they write to memory and run commands as root. No login needed.

The exploit then pulled a small collector script from attacker servers over TFTP and ran it on the switch.

CVE-2026-107441 · Attack chain

One request. Root on the switch.

No password, no user click. Anyone who could reach the web management page could run this chain.

01
Crafted HTTP request
Sent to dispatcher.cgi with no login
02
Counter corrupted first
Breaks the parameter count before the June checks run
03
Memory overwritten
Out of bounds write lets commands run as root
04
Collector pulled in
Script fetched over TFTP on port 6969
05
Network map stolen
Configs, hashed root passwords, network details

The fix: cap parameter sizes and check the count before any data is copied.

The Fix and Affected Models

Zyxel confirmed the bug on October 11, shipped fixed firmware on October 22, and published its advisory on November 3. The new builds cap parameter sizes and check the count before copying data.

Ten models are affected: GS1900-8, 8HP, 10HP, 16, 24, 24E, 24EP, 24HPv2, 48, and 48HPv2.

What’s the Impact?

Switches see everything. The attackers grabbed device configurations, hashed root passwords, and network details. That is a map of the internal network.

Worse, 564 of the 996 victims (57%) still used factory default passwords. Patching now closes the hole. It does not undo stolen data.

Zyxel GS1900 · By the numbers

Most victims kept the factory password.

996
Switches compromised
48
Countries hit
57%
Still on factory default credentials
Most hit countries · compromised switches
Italy133
United States129
Taiwan123
France90
South Korea69
Netherlands66

564 of 996 switches used factory credentials. Source: published threat intelligence, Sept 2026.

How to Avoid This

  • Update every GS1900 switch to the October 22 firmware. The June build is not enough.
  • Pull the web management interface off user networks and the internet. Allow it only from a locked admin network.
  • Change default and reused admin passwords, then rotate any secrets stored in switch configs.
  • Hunt for signs of compromise: accounts named kapibala or kapibala2, a file at /home/web/tmp/info.txt, and outbound TFTP on port 6969.
  • Retest after patching. Run a safe exploit check against the fixed build instead of trusting the version number.

Your Patch Said Fixed. The Attackers Said Otherwise.

A patch is a promise, and promises need proof. Secure.com runs on a simple loop: Attack. Harden. Prove. Repeat.

  • The Red Teammate attacks your own exposed edge devices, so a weak fix shows up before a real attacker finds it.
  • The SOC Teammate watches for quiet signs on network gear, like odd TFTP traffic or new admin accounts.
  • The Cloud and Infrastructure Teammate flags management interfaces reachable from places they should never be.
  • Big moves, like pushing firmware or blocking a device, wait for human approval.
  • Every test and fix is logged, so you can show auditors proof instead of a ticket that says “done.”

The Bottom Line

This attack did not beat unpatched switches. It beat patched ones. The only fix you can trust is one you have tested like an attacker would.

Frequently Asked Questions

What is CVE-2026-107441?
CVE-2026-107441 is an out-of-bounds write in the dispatcher.cgi program of Zyxel GS1900 switches, rated 8.8 on the CVSS scale. It lets an attacker with no login run commands as root, and it bypasses the June fix for CVE-2026-7273.
Which Zyxel GS1900 models are affected?
Ten models: GS1900-8, 8HP, 10HP, 16, 24, 24E, 24EP, 24HPv2, 48, and 48HPv2.
Is the June Zyxel firmware update enough?
No. The exploit works on all ten June builds. Update every GS1900 switch to the firmware Zyxel released on October 22.
How can I tell if my switch was compromised?
Look for admin accounts named kapibala or kapibala2, a file at /home/web/tmp/info.txt, and outbound TFTP traffic on port 6969. If you find any of these, rotate every password and secret stored in the switch config.
Who is behind the Zyxel GS1900 attacks?
Researchers track the activity as Kapibala, a suspected Chinese-speaking group. The campaign began around August 17, 2026.