← Back to Feed CACHED · 2026-08-02 16:14:05 · CACHE_KEY CVE-2026-55202
CVE-2026-55202 · CWE-290 · Disclosed 2026-06-17

Tinyproxy through 1.11.3

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

Someone left the visitor counter on the front door of a garden shed, and the vendor is treating it like a bank vault breach

CVE-2026-55202 affects Tinyproxy through version 1.11.3, a lightweight HTTP/HTTPS forward proxy popular in containers, IoT devices, and small-network deployments. The flaw is in stathost detection: Tinyproxy compares incoming Host headers against a configured stathost value (default tinyproxy.stats) to decide whether to serve an internal statistics page. The comparison logic fails to normalize the header, so an unauthenticated remote attacker can craft a Host header that passes the check and access the stats page — or cause routing confusion between stathost and transparent-proxy code paths. The fix landed in commit 09312a1 (PR #606). Affected: all versions 0 through 1.11.3. No formal release beyond 1.11.3 yet; you need the commit or a distro backport.

The vendor scored this 8.2 HIGH with C:H/I:L/A:N, but that Confidentiality:High rating is hard to justify. The stathost page exposes connection counts, open-connection numbers, and error tallies — basic operational telemetry, not credentials, tokens, or business data. Calling that C:H is CVSS theater. A more honest vector would use C:L, landing around 6.5 before friction adjustments. The routing-confusion angle (transparent-proxy misclassification) is acknowledged in the PR but is not demonstrated as a reliable ACL bypass in any public write-up. With the actual impact scoped to low-value metrics disclosure, this is a MEDIUM at most.

"Stats-page info leak on a lightweight proxy — vendor HIGH is inflated to MEDIUM at best"
02 · The Attack Path

3 steps from start to impact.

STEP 01

Identify an exposed Tinyproxy instance

The attacker scans for Tinyproxy banners on common proxy ports (8888, 8080, 3128). As of 2024 Censys data, roughly 90,000 Tinyproxy instances were internet-facing. The server header identifies the software and version trivially.
Conditions required:
  • Tinyproxy instance reachable over the network
Where this breaks in practice:
  • Enterprise environments rarely expose Tinyproxy externally — it is a lightweight tool, not an enterprise-grade proxy
  • Most deployments sit behind NAT or firewall rules restricting inbound access
Detection/coverage: Shodan/Censys queries for tinyproxy server banner; network IDS signatures for proxy identification scans
STEP 02

Craft a spoofed Host header matching stathost

The attacker sends an HTTP request with Host: tinyproxy.stats (the default) or whatever custom StatHost value is configured. The flawed comparison logic accepts the header without normalization, routing the request to the internal statistics handler. No authentication is required.
Conditions required:
  • Knowledge of the configured StatHost value (default is well-known)
  • Network access to the proxy port
Where this breaks in practice:
  • If the operator changed StatHost to a non-default value, the attacker must guess it
  • The stats page contains only connection counts and error tallies — low-value data
Detection/coverage: WAF or reverse-proxy rules inspecting Host headers for tinyproxy.stats; access logs showing requests to the stathost
STEP 03

Read proxy statistics or trigger routing confusion

The attacker receives the stats HTML page showing open connections, total requests, and bad-connection counts. In theory, the detection mismatch could also cause a request intended for stathost to be processed as transparent-proxy traffic, potentially bypassing ACLs. However, no public PoC demonstrates a reliable ACL bypass via this path.
Conditions required:
  • Successful Host header spoofing from step 2
Where this breaks in practice:
  • The disclosed data has minimal operational value to an attacker
  • Routing confusion leading to ACL bypass is speculative — no demonstrated exploit chain exists
Detection/coverage: Monitor for unexpected 200 responses from the stathost endpoint in proxy logs
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo evidence. Not listed in CISA KEV. No known campaigns or threat-actor usage reported.
Proof-of-conceptNone public. No PoC repos found on GitHub or exploit databases. The attack is trivial (single curl command with a crafted Host header), so weaponization is straightforward but low-reward.
EPSS0.00381 (bottom quartile) — reflects the low attractiveness of this bug to real-world attackers.
KEV statusNot listed. No CISA KEV entry as of 2026-08-03.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N — vendor 8.2 HIGH. The C:H component is the primary inflation point; actual disclosed data is low-sensitivity operational metrics.
Affected versionsTinyproxy 0 through 1.11.3 (all versions ever released).
Fixed versionCommit 09312a1no formal release yet. Debian tracker shows backport activity.
Exposure (Censys/Shodan)~90,000 Tinyproxy instances were internet-facing per Censys (May 2024 data for CVE-2023-49606). Current numbers are likely similar. Most are in the US (~12K), South Korea (~3.7K), and China.
Disclosure date2026-06-17 — disclosed via NVD and GitHub PR #606.
ReporterNot publicly attributed. Fix merged via PR #606 on the tinyproxy/tinyproxy repository.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (4.5/10)

The single most decisive factor driving the downgrade is that the Confidentiality:High rating is unjustified — the stathost page exposes only connection counts and error tallies, which is low-sensitivity operational telemetry, not credentials or business data. Correcting the CVSS to C:L alone drops the base score to ~6.5, and the absence of any demonstrated ACL-bypass chain pushes the real-world risk further into MEDIUM territory.

HIGH Vulnerability existence and stats-page info disclosure impact
MEDIUM Routing confusion / ACL bypass as a secondary impact
HIGH Absence of in-the-wild exploitation and public PoC

Why this verdict

  • Confidentiality impact is overstated. The stathost page discloses connection counts, open connections, and error tallies — not credentials, session tokens, or sensitive business data. C:H is inaccurate; C:L is the correct rating, which alone drops the CVSS base from 8.2 to ~6.5.
  • No demonstrated ACL bypass chain. The routing-confusion angle (transparent-proxy misclassification) is mentioned in the PR but no researcher or public PoC has demonstrated a reliable access-control bypass. The I:L rating may itself be generous.
  • EPSS confirms low real-world attractiveness. At 0.00381, this sits in the bottom quartile of all scored CVEs. Attackers have better things to do than harvest proxy connection counts.
  • Role multiplier: Tinyproxy is a lightweight forward proxy used in containers, IoT, and small-network edge deployments. It is not an identity provider, hypervisor, backup server, domain controller, or any other high-value-role component. Even in its most critical deployment (forward proxy for a network segment), the stathost page does not provide fleet-scale, identity-scale, or supply-chain-scale blast radius. The worst plausible outcome is low-value info disclosure on a single proxy instance. No high-value role floor applies.

Why not higher?

To warrant HIGH, the vulnerability would need to disclose genuinely sensitive data (credentials, tokens, PII) or provide a reliable path to ACL bypass enabling unauthorized proxy use or request smuggling. Neither is demonstrated. The stats page contains only operational counters, and the routing-confusion vector remains theoretical with no public exploit chain.

Why not lower?

The bug is unauthenticated and remotely exploitable with zero complexity against ~90K internet-facing instances. Even though the disclosed data is low-value, the attack surface is real and the fix requires a source-level commit with no formal release. Dropping below MEDIUM would undercount the exposure population and the ease of exploitation.

05 · Compensating Control

What to do — in priority order.

  1. Disable the stathost feature — Comment out or remove the StatHost and StatFile directives in tinyproxy.conf and restart the service. This eliminates the attack surface entirely. No mitigation SLA applies for MEDIUM — go straight to the 365-day remediation window.
  2. Restrict proxy port access via firewall rules — Ensure Tinyproxy's listening port (default 8888) is not exposed to untrusted networks. Use iptables/nftables or security groups to limit inbound access to authorized clients only.
  3. Set a non-default StatHost value — If you need stats, change StatHost to a long, random hostname (e.g., stats-a8f3e2b1c4d7.internal). This makes blind spoofing infeasible without knowledge of the configured value.
  4. Apply the upstream commit — Cherry-pick commit 09312a1 from the tinyproxy repository, or wait for a distro backport. This is the definitive fix within the 365-day noisgate remediation SLA.
What doesn't work
  • WAF rules matching Host: tinyproxy.stats — only catches the default stathost name; custom values bypass the rule, and the normalization flaw means variant encodings may also evade matching
  • BasicAuth on the proxy — Tinyproxy's authentication applies to proxy requests, not to stathost access; the stathost check fires before auth in the request pipeline
06 · Verification

Crowdsourced verification payload.

Run this on each host running Tinyproxy. Requires read access to the tinyproxy binary or package metadata, and optionally curl to probe the stats endpoint. Example: bash check_cve_2026_55202.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-55202 checker for Tinyproxy stathost Host header bypass
# Run on the host running tinyproxy. No elevated privileges needed for version check.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

PATCHED_COMMIT="09312a1"
VULN_MAX_VER="1.11.3"

# Try to get version from tinyproxy binary
if command -v tinyproxy &>/dev/null; then
  VER=$(tinyproxy -v 2>&1 | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
elif command -v dpkg &>/dev/null; then
  VER=$(dpkg -l tinyproxy 2>/dev/null | awk '/^ii/{print $3}' | grep -oP '[0-9]+\.[0-9]+\.[0-9]+')
elif command -v rpm &>/dev/null; then
  VER=$(rpm -q tinyproxy --qf '%{VERSION}' 2>/dev/null)
else
  echo "UNKNOWN - tinyproxy not found on this host"
  exit 2
fi

if [ -z "$VER" ]; then
  echo "UNKNOWN - could not determine tinyproxy version"
  exit 2
fi

# Compare versions
version_lte() {
  [ "$1" = "$(printf '%s\n%s' "$1" "$2" | sort -V | head -1)" ]
}

if version_lte "$VER" "$VULN_MAX_VER"; then
  # Check if distro backported the fix
  if command -v dpkg &>/dev/null; then
    FULL_PKG_VER=$(dpkg -l tinyproxy 2>/dev/null | awk '/^ii/{print $3}')
    if echo "$FULL_PKG_VER" | grep -qiE '(cve.2026.55202|09312a1)'; then
      echo "PATCHED - tinyproxy $VER (backport detected in $FULL_PKG_VER)"
      exit 0
    fi
  fi
  echo "VULNERABLE - tinyproxy $VER (<= $VULN_MAX_VER, fix is commit $PATCHED_COMMIT)"
  exit 1
else
  echo "PATCHED - tinyproxy $VER (> $VULN_MAX_VER)"
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a MEDIUM — no mitigation SLA applies under the noisgate framework, so go straight to the 365-day noisgate remediation SLA. Monday morning: confirm which hosts run Tinyproxy (check your CMDB and scan for port 8888/8080 banners), disable the StatHost feature on any internet-facing instances immediately as a quick win, and queue the upstream commit 09312a1 or a distro backport into your normal patch cycle. There is no active exploitation, no public PoC, and the disclosed data is low-value operational metrics. Do not let the vendor's 8.2 HIGH score bump this ahead of genuinely critical work. If you also run Tinyproxy 1.11.3, check for CVE-2026-54387 (request smuggling, CVSS 9.1) — that one deserves more urgency.

Sources

  1. NVD — CVE-2026-55202
  2. GitHub PR #606 — Stathost detection fix
  3. GitHub commit 09312a1
  4. Censys — Tinyproxy exposure data (CVE-2023-49606)
  5. Vulnerability-Lookup — CVE-2026-55202
  6. tinyproxy.conf man page — StatHost documentation
  7. BleepingComputer — Tinyproxy exposure context
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.