Er is nu een openbare proof-of-concept beschikbaar CVE-2026-55200een kritieke fout in libssh2 waardoor een kwaadaardige of gecompromitteerde SSH-server geheugenbeschadiging kan veroorzaken op een verbindende client, met mogelijke code-uitvoering. Geen inloggegevens, geen gebruikersinteractie. De bug treft elke release tot en met 1.11.1 en heeft een CVSS 4.0-score van 9,2.
libssh2 is een SSH-bibliotheek aan de clientzijde, geen server. Dat onderscheid is van belang. Het is ingebed in curl, Git, PHP, back-upagenten, firmware-updaters en een lange reeks apparaten.
Alles wat het verbindt en contact maakt met een niet-vertrouwd SSH-eindpunt is een potentieel doelwit. Veel van die exemplaren zijn statisch gekoppeld, dus een update van een distributiepakket zal ze niet beïnvloeden, en je weet misschien niet dat ze er zijn.
Hoe de bug werkt
De fout zit in ssh2_transport_read() in transport.c, de functie die binnenkomende SSH-pakketten parseert tijdens de handshake. Het las het door de aanvaller gecontroleerde pakketlengteveld en verwierp alleen waarden onder de 1. Er werd nooit een bovengrens afgedwongen.
De grootteberekening voegt packet_length toe aan een paar kleine waarden met behulp van 32-bits rekenkunde, dus een lengte van 0xffffffff wikkelt zich om tot een klein getal. libssh2 wijst vervolgens een buffer toe die geschikt is voor het kleine aantal, terwijl latere code het volledige, extra grote pakket erin schrijft.
Het resultaat is een heap-write buiten het bereik, geclassificeerd als CWE-680, integer-overflow naar buffer-overflow, een klassieke primitief voor code-uitvoering. De oplossing voegt de ontbrekende controle toe, waarbij elke pakketlengte boven LIBSSH2_PACKET_MAXPAYLOAD wordt afgewezen voordat de berekening wordt uitgevoerd.
libssh2 is hier eerder over gestruikeld. In 2019 bracht het versie 1.8.1 uit om een reeks van negen fouten op te lossen, aangevoerd door CVE-2019-3855, een vrijwel identieke integer-overflow in de transportread waardoor een kwaadwillende server ook code kon uitvoeren op een verbindende client. Zeven jaar later is dezelfde soort bug terug in dezelfde code.
Beveiligingsonderzoeker Tristan Madani meldde het probleem. Beheerders hebben de patch op 12 juni samengevoegd via pull request #2052. VulnCheck publiceerde de CVE op 17 juni.
Er is een openbare proof-of-concept gepubliceerd in ‘exploitarium’, een GitHub-archief met exploitcode waarvan de auteur zegt dat de inzendingen zijn gepost zonder voorafgaande rapportage. Het archief bevat een lokaal geverifieerde SSH-trigger-scaffold en een gecontroleerd lokaal RCE-harnas voor de libssh2-bug, geen kant-en-klare externe exploit. Betrouwbare code-uitvoering tegen een live-applicatie zou nog steeds afhangen van het binaire doel, het gedrag van de allocator, de oplossingen en hoe de software libssh2 insluit.
De context is het overwegen waard. De auteur geeft toe dat het archief onvolledig is uitgekomen, met enkele zwakke vermeldingen en AI die de fuzzing veroorzaakte. Op dit moment is de CISA-beoordeling voor de exploitatie van de CVE nog steeds nul, en is er geen sprake van gebruik in het wild.
Wat te doen
Er is nog geen vaste libssh2-release. De patch bevindt zich in de hoofdbron en er wordt nog steeds gewerkt aan een getagde release, dus Linux-distributies en downstream-projecten backporteren deze zelf; Debian heeft bijvoorbeeld al een gerepareerde ingebouwde testversie.
NHS England Digital heeft een advies uitgebracht waarin de getroffen organisaties worden opgeroepen om te updaten.
- Inventariseer alles wat libssh2 koppelt, inclusief statische of gebundelde kopieën die pakketbeheerders niet zullen markeren. curl-, Git- en PHP-implementaties zijn veelgebruikte dragers.
- Pas een build toe die commit 97acf3d bevat, of het nu een distro-backport of een gepatchte bronbuild is, en bekijk het advieskanaal van uw leverancier voor de releasestatus.
- Totdat er een patch is, beperkt u de uitgaande SSH-verbindingen met vertrouwde servers en verifieert u de hostsleutels. Geef prioriteit aan clients die externe SSH-servers bereiken of hosts omzetten via namen die een aanvaller zou kunnen omleiden. Let op afwijkingen bij te grote pakketten en onverklaarbare clientcrashes.
Patch ook de rest van de batch: CVE-2026-55199 (CVSS 8.2), een denial of service die een verbindende client in een CPU-lus vastzet via een nep-extensietelling, en CVE-2025-15661 (CVSS 8.3), een SFTP-heap over-read.
Het kernprobleem is een pre-auth geheugencorruptie in code die in meer clients en apparaten wordt verzonden dan iemand volledig in kaart heeft gebracht.
De open vragen zijn hoe snel iemand het lokale harnas omzet in een betrouwbare externe exploit, en hoeveel gebundelde kopieën kwetsbaar blijven omdat niemand zich herinnert dat ze libssh2 erin hebben verzonden.