← Back to Feed CACHED · 2026-07-19 03:12:30 · CACHE_KEY CVE-2026-16096
CVE-2026-16096 · CWE-119 · Disclosed 2026-07-18

A vulnerability has been found in Shibby Tomato 1

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A stack overflow in a router firmware whose maintainer walked away years ago

CVE-2026-16096 is a stack-based buffer overflow in the sub_40BB50 routine of Shibby Tomato 1.28 (RT-N5x MIPSR2 Build 124) — specifically in the code that handles the /proc/webmon_recent_domains interface exposed through the router's httpd web UI. A crafted request writes past the allocated stack buffer and can corrupt the return address, giving a remote authenticated attacker the ability to hijack the MIPS control flow and execute code as the router's httpd process (typically root on Tomato). Affected: Shibby Tomato 1.28, RT-N5x MIPSR2, Build 124 (and by structural similarity likely earlier Shibby builds sharing the same webmon code). No fix will ship — Shibby Tomato has been end-of-life for years; the successor project is FreshTomato.

Vendor severity of HIGH (8.8) with PR:L is defensible on paper — authenticated web-UI RCE on a network edge device sounds bad. But the score assumes an accessible, patchable, deployed-at-scale product. This is dead consumer firmware on ~15-year-old Broadcom SoHo hardware (RT-N16/N66U class). The realistic population is hobbyist home routers and a long tail of neglected small-office boxes. In an enterprise fleet of 10,000 hosts this CVE should almost never appear; if it does, it's shadow-IT hardware that needs to be removed, not patched.

"End-of-life consumer router firmware with authenticated web-UI overflow. Real fix is decommission, not patch."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Reach the Tomato web admin interface

Attacker must have network reachability to the Tomato httpd listener, typically TCP/80 or TCP/443 on the LAN interface. Remote WAN admin is off by default in Shibby Tomato. Tooling: any HTTP client — curl, Burp, or a Python requests script.
Conditions required:
  • Network path to router's LAN or (rare) WAN admin interface
  • httpd listener enabled
Where this breaks in practice:
  • WAN admin is disabled out of the box on Shibby Tomato
  • Consumer routers sit behind NAT — external reachability requires user misconfiguration
  • Enterprise networks should not have SoHo Tomato routers acting as gateways in the first place
Detection/coverage: Shodan/Censys fingerprint 'Tomato Firmware' banner but result counts are in the low tens of thousands globally; GreyNoise shows no targeted mass-scanning for the Tomato httpd path.
STEP 02

Authenticate to the web UI

The CVSS vector is PR:L, meaning the attacker must already hold valid admin credentials. Tools: hydra / medusa for credential spray, or a stolen admin password lifted from an earlier compromise or default-credential audit. Tomato's default is admin/admin on first boot — real risk vector for lazy deployments.
Conditions required:
  • Valid credentials for the router admin panel
  • Or a working session cookie replayed from an admin browser
Where this breaks in practice:
  • Any halfway-serious operator changed the default admin password
  • There is no unauthenticated path to sub_40BB50 documented
Detection/coverage: Web-UI auth failures are logged locally on Tomato (/var/log/messages) but rarely forwarded off-box in SoHo deployments.
STEP 03

Trigger the overflow in sub_40BB50 via /proc/webmon_recent_domains handling

The vulnerable function processes the webmon_recent_domains input without length validation. An authenticated POST or GET carrying an oversized parameter walks past the stack frame, overwriting saved registers and the return address. Weaponization would be a Metasploit-style MIPS ROP chain — none is public yet.
Conditions required:
  • Authenticated session from step 2
  • Ability to send crafted HTTP parameter of controlled length
Where this breaks in practice:
  • MIPS big-endian ROP is hand-crafted per build; there is no drop-in exploit
  • Non-executable stack behavior varies by kernel build — some Tomato builds ship without NX enforcement, easing exploitation
Detection/coverage: No signature exists in mainstream IDS rulesets (Snort/Suricata ET) for this specific overflow at time of writing.
STEP 04

Code execution as root on the router

Tomato's httpd runs as root. Successful exploitation yields a root shell on the device — DNS hijack, iptables NAT rewrite for on-path MitM, firmware persistence via /etc/config, or pivot into the LAN.
Conditions required:
  • Working MIPS payload matched to the exact kernel/libc of Build 124
Where this breaks in practice:
  • No persistence across reflash; power-cycle + reflash to FreshTomato clears the compromise
  • Blast radius is limited to whatever sits behind that single router
Detection/coverage: Post-exploitation DNS or routing anomalies would be visible in NetFlow if the router sits inside a monitored segment.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. No campaigns, no GreyNoise tags, no honeypot hits keyed to /proc/webmon_recent_domains.
Public PoCNo public PoC as of 2026-07-19. TheHackerWire wrote up the flaw but did not publish a weaponized exploit.
EPSSFreshly disclosed; EPSS unlikely above ~0.05 / <5th percentile on first ingest — matches the profile of an EOL-hardware, auth-required overflow.
KEV statusNot listed and unlikely to be — CISA KEV tracks products in active use across federal/critical infra.
CVSS 3.1 vectorAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H — 8.8 HIGH. The PR:L is the load-bearing element; treating this as PR:N would push it to 9.8.
Affected versionsShibby Tomato 1.28 RT-N5x MIPSR2 Build 124; adjacent Shibby builds sharing the webmon code path are almost certainly affected.
Fixed versionNone — Shibby Tomato is abandoned. Migration target is FreshTomato.
Exposure dataShodan queries for Tomato Firmware return low-tens-of-thousands globally; the Shibby-specific banner slice is a fraction of that. Censys similar. Enterprise exposure ≈ 0.
DisclosurePublished 2026-07-18; write-up at TheHackerWire.
CWECWE-119 — Improper Restriction of Operations within the Bounds of a Memory Buffer.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.4/10)

The decisive factor is abandoned consumer firmware with authenticated-only reach and near-zero enterprise footprint — this is decommission territory, not patch territory. The PR:L prerequisite plus a LAN-only admin interface plus zero installed base in serious environments collapses the blast radius well below the vendor's 8.8.

HIGH Authentication requirement (PR:L is documented in the vector)
HIGH Vendor abandonment — no patch is coming
MEDIUM Absence of public PoC (may change quickly)
MEDIUM Enterprise installed-base estimate

Why this verdict

  • Authentication required (PR:L) — the attacker needs valid router admin credentials before they can touch sub_40BB50. That single prerequisite eliminates opportunistic mass exploitation.
  • LAN-only exposure by default — Tomato ships with WAN admin disabled; internet-reachable Shibby Tomato admin panels are a rounding error in Shodan.
  • Installed base is hobbyist SoHo, not enterprise — RT-N5x MIPSR2 hardware is a decade-plus old Broadcom class of consumer routers. If it appears in a corporate scan, it is shadow IT.
  • Role multiplier: on the realistic deployment (SoHo home/hobbyist router), a compromise ends at the household or a single small branch — no fleet, no identity, no domain implication. There is no high-value-role variant of Shibby Tomato because the product itself is not deployed in high-value roles; enterprise gateways use Palo/Fortinet/Cisco, not abandoned OSS forks.
  • No fix path — because Shibby is EOL, remediation is *replace the device or reflash to FreshTomato*, which is an asset-lifecycle action, not a patch cycle. This further argues for a MEDIUM 'plan to remove' verdict rather than a HIGH 'patch now' verdict.

Why not higher?

HIGH would be defensible only if there were an internet-exposed unauthenticated path or an active exploitation campaign. Neither exists: PR:L is baked into the vector, WAN admin is off by default, and there is no PoC or KEV listing. The vendor's 8.8 over-weights a theoretical worst case against the real installed base.

Why not lower?

LOW/IGNORE would be wrong because when Shibby Tomato *does* appear in an environment, successful exploitation is root on a network gateway with DNS-hijack and MitM potential. Anyone with a Shibby router still in production has a real, if narrow, RCE they need to resolve — even if the resolution is decommission rather than patch.

05 · Compensating Control

What to do — in priority order.

  1. Inventory and eliminate Shibby Tomato from the environment — Scan for the Tomato Firmware HTTP banner on internal ranges (Nmap http-title, or a targeted curl sweep). Any hits are almost certainly unmanaged SoHo hardware; retire and replace with a supported edge device. Complete inventory within the noisgate MEDIUM 365-day remediation window — no artificial mitigation SLA applies.
  2. If retention is unavoidable, flash the device to FreshTomato — FreshTomato is the maintained fork and does not carry the abandoned Shibby webmon code. This is the only vendor-blessed 'patch' available.
  3. Change the router admin password and disable WAN admin — Because the vector requires authentication, credential hygiene is the highest-leverage control. Confirm Administration → Admin Access → Allow Wireless Access and Remote Access are disabled. Rotate admin credential to a 20+ char random secret stored in your password manager.
  4. Segment the router off management VLANs — Even if you cannot remove it, ensure the device does not have a path to Active Directory, jump hosts, or backup infrastructure. Blocks lateral movement if a router is compromised.
  5. Alert on the Tomato admin banner appearing on any monitored subnet — Add a passive detection to your scanner (Nessus/Qualys custom check, or a scheduled nmap --script http-title job) that opens a ticket the moment a Tomato device shows up. Prevents recurrence.
What doesn't work
  • Waiting for a vendor patch — Shibby stopped shipping. There is no patch pipeline.
  • Cloud WAF / edge CDN filtering — the vulnerable surface is a LAN-side router admin UI, not an internet-facing web app.
  • EDR / host antivirus — these routers run BusyBox MIPS Linux; no EDR agent lives here.
  • IDS signatures on /proc/webmon_recent_domains — the traffic is LAN-internal HTTP to a router admin port, rarely mirrored to any IDS sensor.
06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation on the same L2/L3 segment as the suspect router. Invoke as ./check_shibby.sh 192.168.1.1 (or a CIDR-expanded target list). Requires only curl and standard user privileges. Outputs VULNERABLE, PATCHED, or UNKNOWN per host.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate check for CVE-2026-16096 — Shibby Tomato 1.28 RT-N5x Build 124
# Usage: ./check_shibby.sh <ip-or-host>
set -u
TARGET="${1:-}"
if [[ -z "$TARGET" ]]; then
  echo "usage: $0 <ip-or-host>" >&2
  exit 2
fi

CURL=(curl -sS -k --max-time 5 -o /dev/null -w '%{http_code} %{content_type}\n')

# 1) Probe common Tomato admin ports
BANNER=""
for SCHEME_PORT in "http://${TARGET}:80" "https://${TARGET}:443" "http://${TARGET}:8080"; do
  RESP=$(curl -sS -k --max-time 5 -D - "${SCHEME_PORT}/" 2>/dev/null | head -n 40)
  if echo "$RESP" | grep -qiE 'Tomato|WWW-Authenticate:.*Tomato'; then
    BANNER="$RESP"
    ENDPOINT="$SCHEME_PORT"
    break
  fi
done

if [[ -z "$BANNER" ]]; then
  echo "${TARGET}: UNKNOWN (no Tomato banner observed)"
  exit 0
fi

# 2) Look for Shibby build fingerprint
SHIBBY=$(curl -sS -k --max-time 5 "${ENDPOINT}/about.asp" 2>/dev/null | grep -Eoi 'Shibby[^<"]{0,64}|Build[[:space:]]*12[0-9]|1\.28' | tr '\n' ' ')

if echo "$SHIBBY" | grep -qi 'Shibby' && echo "$SHIBBY" | grep -qE 'Build[[:space:]]*124|1\.28'; then
  echo "${TARGET}: VULNERABLE (Shibby Tomato 1.28 / Build 124 fingerprint: ${SHIBBY})"
  exit 1
fi

if echo "$BANNER" | grep -qi 'FreshTomato'; then
  echo "${TARGET}: PATCHED (FreshTomato detected)"
  exit 0
fi

echo "${TARGET}: UNKNOWN (Tomato-family device, but Shibby 1.28/Build 124 not confirmed)"
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: do not treat this like a normal HIGH. Kick off an inventory sweep for the Tomato Firmware banner across internal ranges by end of week — anything that surfaces is shadow IT and needs a retirement ticket. Because the reassessed verdict is MEDIUM, the noisgate mitigation SLA does not apply (no artificial 30-day drill); ride the noisgate remediation SLA of ≤365 days to decommission or reflash to FreshTomato. If you must keep a Shibby device online, immediately disable WAN admin, rotate the router admin password, and segment the device away from AD/PAM/backup networks — those are the only real levers, since no vendor patch will ever ship. Re-escalate to HIGH only if a public MIPS PoC drops or GreyNoise starts tagging targeted scans against /proc/webmon_recent_domains.

Sources

  1. TheHackerWire — Shibby Tomato 1.28 Remote Stack Buffer Overflow
  2. TheHackerWire — Related Shibby Tomato OOB Write (CVE-2026-16095)
  3. TheHackerWire — CVE-2026-16097 Shibby Tomato Stack Overflow
  4. CISA Vulnerability Summary Bulletin (June 2026)
  5. VulDB CVE index (Tomato entries)
  6. FreshTomato project (maintained successor)
  7. CWE-119 — Improper Restriction of Operations within the Bounds of a Memory Buffer
  8. LinksysInfo forum thread on Shibby Tomato K26USB 1.28 RT-N5x
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.