Gebruikers van Alpine Linux die OpenSSH draaien zonder PAM-integratie lopen een groot beveiligingsrisico. Een fout in de musl libc-bibliotheek maakt het mogelijk om in te loggen op accounts zonder wachtwoord via extreem lange wachtwoorden.
Een kritieke kwetsbaarheid in de manier waarop en de musl libc-bibliotheek samenwerken, heeft geleid tot een beveiligingsadvies van de Alpine Linux-ontwikkelaars. De fout zorgt ervoor dat aanvallers toegang kunnen krijgen tot accounts die eigenlijk beveiligd zouden moeten zijn tegen wachtwoordgebruik, zoals de root-gebruiker of specifieke cloud-gebruikers.
Het probleem ontstaat door een samenloop van technische keuzes in de code van de bibliotheek en de manier waarop de SSH-daemon wachtwoorden verifieert. Dit maakt bepaalde systemen kwetsbaar voor een directe inbraak zonder dat er een geldig wachtwoord nodig is. De kwetsbaarheid is de ‘erfenis’ van een patch die OpenSSH in 2016 moest uitrollen en de manier waarop wachtwoordhashes verwerkt worden, veranderde.
De oorzaak van de bypass
De kern van het probleem ligt bij de functie crypt(), die onderdeel is van de musl libc-bibliotheek. Wanneer een wachtwoord langer is dan 256 tekens, geeft deze functie een foutmelding terug in de vorm van een asterisk (*). Dit was een bewuste keuze om crashes te voorkomen die zouden ontstaan als de functie een lege waarde zou teruggeven.
In veel Alpine Linux-installaties hebben accounts zonder wachtwoord, zoals de root-gebruiker of gebruikers die enkel via SSH-keys werken, een asterisk in hun wachtwoordveld. Wanneer een aanvaller een wachtwoord van bijvoorbeeld 300 tekens stuurt, geeft de bibliotheek een asterisk terug. De SSH-daemon vergelijkt dit met het opgeslagen veld, ziet een match en staat de toegang toe.
De kwetsbaarheid is vooral aanwezig bij systemen die geen PAM gebruiken. Dit is de standaardconfiguratie voor de op Alpine Linux. Het risico wordt vergroot als er op hetzelfde systeem ten minste één ander account bestaat met een geldig wachtwoordhash, wat de verwerking van de foutieve aanvraag activeert.
Bescherming en actie
De ontdekking van de bug door heeft geleid tot een snelle reactie van de ontwikkelaars, nadat de kwetsbaarheid tien jaar lang onopgemerkt bleef. OpenSSH heeft in een patch uitgebracht die dit gedrag corrigeert. Gebruikers van Alpine Linux worden dringend geadviseerd om de openssh-package onmiddellijk te updaten via de opdracht apk upgrade.
Het is van cruciaal belang om na de update ook de draaiende sshd-daemon te herstarten. Alleen het updaten van de softwarepakketten is niet voldoende om de beveiliging van de actieve verbindingen te waarborgen.
Indien een update op dit moment niet mogelijk is, is de enige veilige tijdelijke oplossing het volledig uitschakelen van wachtwoordauthenticatie. Dit kan door de instelling PasswordAuthentication uit te schakelen. Gebruikers die vermoeden dat zij al getroffen zijn, kunnen in de logbestanden zoeken naar de melding Accepted password voor accounts die normaal gesproken geen wachtwoord hebben.