CVE-2026-47729
Squid vulnerability analysis and mitigation

Overview

CVE-2026-47729, dubbed "SquidBleed", is a heap out-of-bounds read vulnerability in Squid's FTP gateway that allows a trusted, low-privileged client to read arbitrary memory from unrelated concurrent transactions. The flaw affects all Squid versions prior to 7.6, including all 4.x, 5.x, 6.x, and 7.x up to and including 7.5 releases. The bug traces back to a coding error introduced in a 1997 commit and duplicated in 2017, making it a nearly 29-year-old latent vulnerability. It was publicly disclosed on June 23, 2026, and carries a CVSS v3.1 base score of 6.5 (Medium) (Squid Advisory, Feedly).

Technical details

The root cause is an improper validation of syntactic correctness of input (CWE-1286) in the ftpListParseParts() function within src/clients/FtpGateway.cc, leading to an out-of-bounds read (CWE-125). When parsing FTP directory listings in TypeA or TypeB formats, if a listing entry's date field is not followed by a filename, the code calls strchr() on a NUL-terminated string without first checking whether the pointer has reached the end of the input buffer. Because strchr() in C always returns a non-NULL pointer when searching for a NUL character (\0), the parser advances beyond the allocated buffer into adjacent heap memory. The fix, applied in commit 865a131, adds a *copyFrom && null-check guard before each strchr() call to restrict parsing to the input buffer (Squid Commit, Squid PR #2408). Exploitation requires the attacker to control or operate a misbehaving FTP server that a trusted Squid client connects to via Squid's FTP gateway feature.

Impact

Successful exploitation results in a memory disclosure (confidentiality impact: High), allowing an attacker to read heap memory from Squid's process space that belongs to unrelated, concurrent transactions passing through the proxy. This leaked memory can contain sensitive data such as cleartext HTTP requests, Basic Authentication credentials, Bearer tokens, API keys, and Authorization headers from other users sharing the same Squid proxy instance. There is no integrity or availability impact, and the vulnerability does not enable remote code execution on its own. In shared proxy environments (e.g., corporate or ISP proxies), the cross-transaction memory leak creates significant risk of credential theft and lateral movement using harvested tokens (Squid Advisory, Feedly).

Exploitability

A public proof-of-concept exploit is available on GitHub (0xBlackash/CVE-2026-47729), implemented as a single-file Python script that runs a malicious FTP server to trigger the heap leak and extract Basic Auth credentials and Bearer tokens from adjacent memory via truncated LIST responses (PoC GitHub). The EPSS score is approximately 0.0195 (~1.95%), and as of the time of reporting there is no confirmed evidence of in-the-wild exploitation or threat actor attribution. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires low privileges (a trusted Squid client) and network access to route FTP traffic through the vulnerable Squid instance, but does not require user interaction (Feedly).

Exploitation steps

  1. Setup a malicious FTP server: Deploy a rogue FTP server (as demonstrated in the public PoC) that responds to LIST commands with malformed directory listings in TypeA or TypeB format where the date field is present but no filename follows.
  2. Trigger FTP gateway access: Cause a trusted Squid client (or act as one) to connect to the malicious FTP server via Squid's FTP gateway feature (e.g., by requesting ftp://attacker-controlled-server/). This can be achieved via SSRF, social engineering, or direct access if the attacker has low-privileged proxy access.
  3. Send truncated LIST response: The malicious FTP server responds to the client's directory listing request with a crafted LIST response that omits the filename after the date field, triggering the vulnerable ftpListParseParts() parsing path in FtpGateway.cc.
  4. Trigger out-of-bounds read: Squid's parser calls strchr() past the end of the input buffer, reading adjacent heap memory from other concurrent transactions being processed by the proxy.
  5. Extract leaked memory: The PoC captures the out-of-bounds data returned to the client, parsing it for HTTP headers, Authorization values, Bearer tokens, and Basic Auth credentials belonging to other users' sessions (PoC GitHub, Squid Advisory).

Indicators of compromise

  • Network: Unusual FTP connections through Squid's gateway to unknown or external FTP servers; FTP LIST responses with malformed directory entries (date present, filename absent) in TypeA/TypeB format; unexpected outbound FTP traffic from internal clients via the proxy.
  • Logs: Squid access logs showing ftp:// scheme requests to unfamiliar or external FTP servers from internal clients; repeated FTP gateway requests in short succession that may indicate automated exploitation attempts.
  • Process: Squid worker processes exhibiting anomalous memory read patterns; potential heap corruption artifacts in Squid crash dumps or core files if the read extends into unmapped memory.
  • Application: Unexpected credential reuse or API key usage from IP addresses inconsistent with the legitimate owner's location, potentially indicating harvested tokens from leaked proxy memory.

Mitigation and workarounds

Upgrade to Squid 7.6 (released June 8, 2026), which contains the fix in commit 865a131 (Squid Release). For installations that cannot upgrade immediately, the official workaround is to block all FTP gateway access via squid.conf by adding the following above any http_access allow lines:

acl FTP proto FTP
acl ftp_allowlist url_regex ^ftp://trusted\.server\.example\.com
http_access deny FTP !ftp_allowlist

If FTP gateway functionality is not required at all, the simplest mitigation is http_access deny FTP. Patches for stable releases are available at the Squid patch archive for Squid 7 (Squid Advisory).

Community reactions

The vulnerability attracted significant community attention under the nickname "SquidBleed", drawing comparisons to the Heartbleed vulnerability due to its cross-transaction memory disclosure nature and the fact that the bug originated in 1997 code. The Hacker News and Reddit /r/netsec threads generated substantial discussion, with researchers highlighting the risk to shared proxy environments. SecurityWeek, The Hacker News, The Register, Security Affairs, and SC World all published coverage. Horizon3.ai published an attack research post, and runZero published a blog analyzing the vulnerability's detection and impact. The discovery was credited independently to Pavel Kohout of Aisle Research, Lam Jun Rong of Calif.io (in collaboration with Anthropic Research), and Youssef Awad of CTF.ae (Squid Advisory, The Hacker News, SecurityWeek).

Additional resources


SourceThis report was generated using AI

Related Squid vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-33526CRITICAL9.2
  • Squid logoSquid
  • squid-sysvinit
NoYesMar 26, 2026
CVE-2026-32748HIGH8.7
  • Squid logoSquid
  • libecap
NoYesMar 26, 2026
CVE-2026-33515MEDIUM6.9
  • Squid logoSquid
  • squid
NoYesMar 26, 2026
CVE-2026-47729MEDIUM6.5
  • Squid logoSquid
  • squid3
NoYesJul 16, 2026
CVE-2026-50012MEDIUM5.5
  • Squid logoSquid
  • squid:4::libecap
NoYesJul 16, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management