Squidbleed (CVE-2026-47729) A 29-year-old heap buffer overread vulnerability, dubbed Squidbleed (CVE-2026-47729), has been discovered in all versions of Squid Proxy in its default configuration. The bug, found by Anthropic's Claude Mythos Preview, leaks internal memory via FTP directory listing parsing, exposing cleartext HTTP requests. The flaw predates Squid's commit history and affects multi-user environments like schools and corporate networks. Squidbleed CVE-2026-47729 Heartbleed's ancient cousin, hiding in Squid since 1997. Two weeks ago, we dropped an HTTP/2 bomb https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb cooked up by Codex Cyber. This time, we sent Claude Mythos Preview spelunking through Squid’s guts, and it surfaced clutching a 29-year-old bug. Meet Squidbleed : a Heartbleed-style vulnerability that leaks internal memory from every version of Squid Proxy, in its default configuration. This bug is a whirlwind tour of old-school Internet lore. It involves FTP, NetWare, and DJB, names that only the most diehard Internet fans will recognize. It comes down to a few of C's favorite footguns: null-terminated strings, pointer arithmetic, and a weird strchr edge case. Mix these ingredients into an open-source web proxy, and you get a heap buffer overread that quietly leaks random users' HTTP requests, despite three decades of releases, audits, and rewrites. One caveat: the impact is situational. Most traffic is HTTPS, which the proxy relays as an opaque CONNECT tunnel, so only cleartext HTTP and TLS-terminating setups are exposed. The proxy must also be allowed to reach an attacker-controlled FTP server TCP port 21 . A tip of the hat to Anthropic, our partner-in-crime on the quest to make open-source software a little more secure. The Target: Squid Proxy Squid is a widely deployed multipurpose web proxy. While it was designed to speed up page loads by caching frequently accessed content, it can also be used for traffic interception, monitoring, and filtering. Thus, Squid is often found in multi-user environments such as schools or corporate networks. In fact, I encountered Squid while attempting to access the Internet on a recent flight: As you might expect, the version of Squid deployed on that plane was released nearly 10 years ago and is affected by the vulnerability I'm about to share with you. FTP: Finicky To Parse While HTTP forms the majority of web traffic, Squid also supports FTP File Transfer Protocol, a legacy protocol for moving files between machines by default. When connecting to an FTP server via Squid, a nice HTML file listing is helpfully generated: Unfortunately for Squid, FTP doesn't have a standardized machine-readable file listing format. Instead, the FTP LIST command typically returns something that sort of looks like the output from ls -l : -rw-r--r-- 1 1000 1000 40 May 20 04:17 hello.txt -rw-r--r-- 1 1000 1000 21 May 20 04:17 readme.txt This poorly-specified textual format is notoriously hard to parse, especially while staying compatible with every FTP server on the Internet. One of our Internet heroes, DJB, wrote about it too, calling the format hard to parse with even moderate reliability https://cr.yp.to/ftp/list.html . And when DJB says something is hard, you know it really is. It is thus no surprise that when I asked Claude Mythos Preview to: Spawn more agents to investigate the full FTP state machine behavior better one of the first bugs it found was in Squid's FTP directory listing parser. Searching for NULL The bug predates all available commit history in Squid's GitHub repo https://github.com/squid-cache/squid/ . Commit bb97dd37a https://github.com/squid-cache/squid/commit/bb97dd37a , created on Jan 18, 1997, includes the following changelog entry: Fixed ftpget to recognize 'NetWare' servers and skip whitespace before filenames. NetWare was a network operating system, wildly popular in the late 80s and 90s for running corporate file and print servers, and its bundled FTP service was a common way to move files on and off those machines. This was necessary as NetWare FTP servers output 4 spaces https://cr.yp.to/ftpparse/ftpparse.c between the modification timestamp and the filename: d R----F-- supervisor 512 Jan 16 18:53 login - R----F-- rhesus 214059 Oct 20 15:27 cx.exe This was contrary to the behavior of most other FTP servers, which used just a single space. With that historical context in mind, let's have a look at the modern implementation https://github.com/squid-cache/squid/blob/dc001f638/src/clients/FtpGateway.cc L625-L640 of that fix, nearly 30 years on: // from compat/compat shared.h define w space " \t\n\r" copyFrom = buf + tokens i + 2 .pos + strlen tokens i + 2 .token ; if flags.skip whitespace { while strchr w space, copyFrom ++copyFrom; } else { / Handle the following four formats: "MMM DD YYYY Name" "MMM DD YYYYName" "MMM DD YYYY Name" "MMM DD YYYY Name" Assuming a single space between date and filename suggested by: Nathan.Bailey@cc.monash.edu.au and Mike Battersby