Een hoop overlezen in de Squid-webproxy kan het HTTP-verzoek van een andere gebruiker in leesbare tekst, inclusief eventuele inloggegevens of sessietokens die het bevat, lekken naar iedereen die al verkeer via dezelfde proxy mag sturen.
De bug is terug te voeren op een wijziging in de FTP-parsering uit 1997 en is nog steeds actief in de standaardconfiguratie van Squid. Onderzoekers van Calif.io maakten het in juni bekend en gaven het een naam Inktvis (CVE-2026-47729), na Heartbleed, dat op dezelfde manier geheugen lekte.
Squid beschrijft dit als een aanval door een vertrouwde client: iemand die al toestemming heeft om de proxy te gebruiken, niet een willekeurige host op internet. Dat komt overeen met het gebruikelijke huis van Squid, gedeelde netwerken zoals scholen, kantoren en openbare wifi. In deze opstellingen is de aanvaller gewoon een andere gebruiker van dezelfde proxy.
Het lek bereikt ook alleen verkeer dat Squid kan lezen. Normale HTTPS rijdt door een ondoorzichtige CONNECT-tunnel, zodat Squid er nooit in kan kijken; het blootgestelde verkeer is HTTP met leesbare tekst, plus TLS-beëindigende instellingen waarbij Squid decodeert en inspecteert.
De aanvaller heeft de proxy ook nodig om een FTP-server te bereiken die hij beheert op poort 21. Zowel FTP als die poort zijn standaard ingeschakeld.
Hoe het lek werkt
De bug zit in de FTP-parser voor directorylijsten van Squid. Om met oude NetWare-servers om te gaan die lijsten met extra spaties opvulden, slaat de code witruimte over met een lus: while (strchr(w_space, *copyFrom)) ++copyFrom;.
Als de FTP-server van de aanvaller een lijstregel verzendt die direct na de tijdstempel eindigt, zonder bestandsnaam, komt copyFrom op de null-terminator van de tekenreeks terecht. strchr behandelt die eindigende NUL als onderdeel van de string die wordt doorzocht, dus retourneert het een pointer in plaats van NULL, en de lus stopt nooit. Het loopt van het einde van de buffer af en xstrdup kopieert wat volgt terug naar de aanvaller als bestandsnaam.
De gelekte bytes zijn het nuttige deel. Squid hergebruikt vrijgekomen geheugenbuffers zonder ze op nul te zetten, dus een buffer van 4 KB die onlangs het HTTP-verzoek van een slachtoffer bevatte, bevat nog steeds het grootste deel ervan. Een korte FTP-regel overschrijft alleen de eerste paar bytes; het overlezen retourneert de rest.
De demo van Calif haalt een Authorization-header op van een slachtoffer dat dezelfde proxy deelt, voldoende om als die gebruiker op te treden. Proof-of-concept-code is openbaar en er is op het moment van schrijven geen melding gemaakt van exploitatie in het wild.
Wat te doen
Als u een patch uitvoert, controleer dan de oplossing en niet alleen de versie. Controleer of de bewaker zich in FtpGateway.cc bevindt, of controleer de backport van uw distributie, aangezien distributies hun eigen builds verzenden (Debian-pakketten Squid 5.7).
De openbare draad is nog steeds inconsistent: onderhouder Amos Jeffries zei eerst dat Squid 7.6 de oplossing droeg, en corrigeerde dat vervolgens naar 7.7, en op 22 juni merkte Salvatore Bonaccorso van Debian op dat de commit waarnaar wordt verwezen eruit ziet alsof deze al in 7.6 zit.
De oplossing is klein: een nul-terminatorcontrole vóór de kwetsbare strchr-aanroepen, samengevoegd met de ontwikkelingstak in april en v7 in mei. Squid 7.6 patcht afzonderlijk CVE-2026-50012, een niet-gerelateerde cache_digest heap overflow.
De schonere zet is degene die de onderzoekers sowieso aanbevelen: schakel FTP uit. Chromium heeft FTP jaren geleden laten vallen, en de meeste netwerken bevatten bijna niets ervan, dus als je het uitschakelt, wordt dit aanvalsoppervlak gratis verwijderd, welke build je ook gebruikt.
Het risico is reëel, maar beperkt. SUSE beoordeelt het als matig, CVSS 6.5, en de vector verklaart de score: de aanvaller heeft proxytoegang nodig (lage rechten), en de enige impact is vertrouwelijkheid, niets op de integriteit of beschikbaarheid.
Calif crediteert Anthropic’s Claude Mythos Preview, het model achter Project Glasswing, met het vrijwel onmiddellijk opvangen van de strchr-eigenaardigheid; hetzelfde soort verborgen parserbug-AI-agenten zijn elders opgedoken, ook in FFmpeg. Calif geeft aan dat de FTP-code van Squid misschien niet de laatste plaats is waar hij vergat te stoppen met lezen.