Home/ Blog/ Security news/ Article
Blog · Security news

Your Squid proxy can leak other users' passwords, and the 7.6 update won't fix it

Squidbleed (CVE-2026-47729) leaks memory from Squid proxies in default config, including login credentials. A public exploit is out, and 7.6 does not patch it.

Row of sealed mailbox cabinets with one door sprung open, papers drifting out

If you run a Squid proxy, a hostile FTP server can make it hand back scraps of other people's traffic, including the passwords and API tokens they sent through it. That is Squidbleed (CVE-2026-47729), a memory-disclosure flaw in the same family as Heartbleed, and it is live in Squid's default configuration. Two things changed over the weekend. A working exploit that automatically decodes stolen logins appeared on GitHub on June 21, and it became clear that the Squid 7.6 release many admins installed this month does not actually close the hole.

That second detail is the trap. The Squid team shipped 7.6 on June 8 and patched a separate buffer-overflow bug (CVE-2026-50012) in it. Squidbleed's fix was held back to the next release. As Squid maintainer Amos Jeffries clarified on the oss-security list, the fix for CVE-2026-47729 lands in Squid 7.7, not 7.6. So an admin who saw "Squid patches critical proxy bugs" headlines, upgraded to 7.6, and moved on is carrying a false sense of safety.

What Squidbleed actually leaks

The bug lives in Squid's FTP gateway, the code that lets the proxy fetch ftp:// URLs on a user's behalf and render a directory listing. When Squid parses a malformed FTP listing in a NetWare-style format, a missing check sends it reading past the end of a buffer. The root cause is a classic C footgun: the code calls strchr to scan for whitespace without first confirming it has not reached the end of the string. Per the C standard, strchr(w_space, '\0') returns a valid pointer rather than nothing, because the terminating null byte counts as part of the string. That one assumption walks the parser into adjacent heap memory.

What sits in that adjacent memory is the problem. Squid reuses 4 KB buffers across unrelated transactions, so the bytes Squid reads back can hold leftover data from other users' requests, including HTTP Authorization headers. The discoverer, Lam Jun Rong of Calif.io, reported it on April 17, and the bug has been present in Squid since 1997. SUSE rates it CVSS 6.5, moderate. That score undersells it. A moderate rating assumes you have to work for the payoff, but the public exploit turns raw leaked bytes into parsed credentials with no effort.

Why a default install is exposed

You do not need an exotic configuration to be vulnerable. FTP support is compiled in and enabled by default, and TCP port 21 sits in Squid's default Safe_ports access-control list. So a default Squid will follow an ftp:// link a user clicks, connect out to whatever host that link points at, and parse whatever listing comes back. An attacker who controls that FTP server, or who can lure a proxied user toward one, controls the input that triggers the overread.

The published proof of concept does exactly this. It stands up a fake FTP server that sends truncated NetWare-style listings, drives the target proxy to connect to it repeatedly, sprays the heap, and reads back the leaked memory. Its README claims real-time decoding of Basic Auth and Bearer tokens out of the leaked bytes. This is the difference between a paper risk and an operational one: as of this weekend, the credential extraction is automated.

One thing narrows the blast radius. Most modern traffic is HTTPS, which a forward proxy relays as an opaque CONNECT tunnel it never decrypts, so those bytes are not sitting in Squid's parseable buffers. The credentials at real risk are in cleartext HTTP, or in deployments where Squid terminates TLS itself and sees the plaintext. If your Squid is a pure CONNECT-tunnel forward proxy, your exposure is lower. If it terminates TLS or carries cleartext HTTP with auth headers, treat this as urgent.

What to do before 7.7 lands

The clean fix is the Squid 7.7 release, where the parser gets a null-terminator check before the strchr call. The source patches were merged into the supported branches across April and May, so distribution backports are arriving; check your vendor's advisory for the exact fixed package rather than trusting a version number alone, and do not assume a jump to 7.6 covered you.

You do not have to wait for a rebuild to cut the risk today, because the entire attack hinges on Squid making an outbound FTP connection and parsing the response. Disable FTP handling, or remove port 21 from your Safe_ports ACL and deny the ftp protocol in your access rules, and the trigger goes away. For a forward proxy whose users do not actually browse FTP sites, that costs nothing.

What to hunt for

The behavioral signal is your proxy initiating FTP control connections to arbitrary internet hosts. A forward proxy reaching out to a stranger's server on port 21 is unusual in 2026, and a burst of repeated FTP connections to one host is exactly what the heap-spray loop in the exploit produces. Alert on outbound port-21 connections originating from your Squid hosts to destinations outside any FTP you actually use. Pair that with a review of who can reach the proxy: if untrusted clients can feed it ftp:// URLs and the proxy can reach the open internet, you have the full preconditions in place.

Squidbleed is a reminder that "patched" is a claim to verify, not accept. Two bug fixes landed a release apart under nearly the same headline, and the more dangerous of the two is the one that did not make the first cut. Read the advisory, confirm the version that actually carries your fix, and shut off the FTP path in the meantime.

Frequently asked questions

What is Squidbleed (CVE-2026-47729)?

Squidbleed is a memory-disclosure flaw in the Squid proxy's FTP gateway, in the same family as Heartbleed. A malformed FTP directory listing makes Squid read past a buffer and return adjacent heap memory, which can contain other users' HTTP Authorization headers and credentials. It affects the default configuration.

Does upgrading to Squid 7.6 fix Squidbleed?

No. Squid 7.6, released June 8, 2026, fixed a separate buffer-overflow bug (CVE-2026-50012). The Squid maintainer confirmed the Squidbleed fix was held back to Squid 7.7. Admins who upgraded only to 7.6 are still exposed and should verify the fixed version for their platform.

Is there a public exploit for Squidbleed?

Yes. A proof-of-concept exploit was published on GitHub on June 21, 2026. It runs a fake FTP server, drives the target proxy to connect, sprays the heap, and reads back leaked memory. Its README claims automatic decoding of Basic Auth and Bearer tokens from the leaked bytes.

How can I mitigate Squidbleed without upgrading?

The attack needs Squid to make an outbound FTP connection and parse the response. Disable FTP handling, or remove TCP port 21 from the Safe_ports access-control list and deny the ftp protocol in your rules. For a forward proxy whose users do not browse FTP sites, this neutralizes the trigger at no cost.

Which Squid deployments are most at risk?

Proxies carrying cleartext HTTP or terminating TLS are most exposed, because the credentials they handle sit in memory Squid can leak. A pure forward proxy that relays HTTPS as an opaque CONNECT tunnel never sees that plaintext, so its exposure is lower, though the FTP trigger still applies.

Ready to meet the Guardians?

Deploys fast - agentless for monitoring and cloud, a lightweight agent for deep endpoint security. Just Suriq, standing watch.