Tio år gammalt SSH-hål ger lösenordsfri inloggnig i Alpine Linux
Felet ligger i samverkan mellan OpenSSH och musl när PAM saknas, över en miljard nedladdningar av Dockerbilden men routerns fasta programvara får aldrig någon uppdatering, alla parter lagar sin egen kod och pekar ut någon annan som skyldig
Bilder
Photo of Dan Goodin
arstechnica.com
Ett tio år gammalt fel, smeknamnat sshole, låter angripare logga in på vissa Linux-enheter via SSH utan att känna till något lösenord. Det bekräftade underhållarna av Alpine Linux i torsdags. "En angripare som når din SSH-port kan logga in utan lösenord", skriver de. "En enda anslutning räcker, det fungerar varje gång och inga upprepade försök behövs."
Felet sitter inte i OpenSSH själv, utan i växelspelningen mellan OpenSSH och musl, det lätta C-bibliotek som Alpine använder i stället för det vanliga glibc. När OpenSSH byggs utan PAM – det sedvanliga ramverket för identitetskontroll – och målkontot är konfigurerat utan lösenord, släpps en angripare in som anger fler än 256 tecken i lösenordsfältet. Kontot måste dessutom ha ett lösenordskryptogram saltat med SHA256 eller SHA512, förklarade forskarna på Checkpoint: sshd lånar saltet från just det kontot, och utan det misslyckas angreppet. Rotkonton är säkra i standardinställningarna, men varje nåbart konto med rättigheter via doas eller sudo kan användas för att ta sig vidare.
Att det är just Alpine som drabbats är tämligen illavarslande. Distributionens basavbildning på Docker Hub har över en miljard nedladdningar, och den har länge varit standardvalet för routrar, smarta tv-apparater och industriella styrsystem – inbäddade enheter som ofta inte kan uppdateras alls. Den som upptäckte felet menar att OpenWRT berörs, liksom byggsystemena buildroot och yocto, även om detta ännu inte bekräftats. OpenWRT levereras som standard med Dropbear i stället för OpenSSH, vilket minskar men inte stänger exponeringen. Shodan listar drygt 22 miljoner system med öppen SSH på port 22; bara en bråkdel uppfyller angreppets villkor.
Både OpenSSH och Alpine har släppt korrigeringar, medan musl-utvecklaren Rich Felker hävdar att felet ligger hos anroparen, inte biblioteket – och att musl-utvecklarna ändå velat ändra den här mekanismen sedan länge. Varje part har lappat sin egen kod och skjutit skulden på någon annan.
Det är ett bekant mönster: i öppen källkod med löst sammanknutna delar finns ingen som helst instans som bär ansvaret eller kostnaden när gränssnittet mellan komponenterna brister. Statligt finansierad digital förvaltning och stora infrastrukturprojekt byggda på just sådana fritt nedladdade komponenter — många svenska myndigheter och kommuner kör virtualiserade miljöer på Alpine-baserade containrar — riskerar att ärva exakt det här hullet: ingen äger problemet, så ingen åtgärdar det.
Fast den bekymrande grunden är en annan. Firmware som levereras i den router du har i hallen kommer aldrig att se någon av de här uppdateringarna.