SSHole — en sårbarhed, der tillader forbindelser via SSH uden password i systemer med Musl

OpenSSH-udviklere har udgivet en nødopdatering af OpenSSH 10.6p2, som inkluderer beskyttelse mod en kritisk sårbarhed (CVE ikke tildelt), der har kodenavnet «SSHole» og muliggør omgåelse af autentificering. I systemer med Musl-biblioteket tillader sårbarheden tilslutning til en bruger, der ikke har en adgangskode, ved at indtaste en vilkårlig adgangskode, der indeholder mere end 256 tegn. Problemet påvirker Linux-distributioner, der bruger det standard musl-bibliotek, men ikke bruger PAM (Pluggable Authentication Modules), såsom OpenWRT, Alpine, Buildroot og Yocto. En særlig fare er det, at login med adgangskode ofte er deaktiveret for brugeren root, hvilket giver mulighed for enhver at oprette forbindelse eksternt med administratorrettigheder.

Fejlen, der fører til sårbarheden, ligger ikke i OpenSSH-koden, men udnyttes gennem sshd. På grund af alvorligheden af problemet er der i version 10.6p2 af OpenSSH foreslået en midlertidig løsning til blokering af sårbarheden. Systemejere, der er ramt af problemet, anbefales at de ikke venter på opdateringer, men straks deaktiverer adgangskodeautentificering ved at indstille parameteren «PasswordAuthentication no» i /etc/ssh/sshd_config eller helt deaktivere SSH.

Problemet optræder ikke i systemer, der ikke er baseret på Linux, og i Linux-miljøer baseret på glibc, samt i systemer, der bruger PAM til adgangskodeautentificering. En rettelse er allerede tilgængelig i Alpine og OpenWRT.

Sårbarheden er relateret til en forkert interaktion mellem OpenSSH og funktionen crypt() fra musl. For at beskytte mod opdagelse af eksisterende brugere gennem analyse af forskelle i behandlingstiden for anmodninger har OpenSSH siden 2016 anvendt en standard metode til kontrol af adgangskode, hvor det kalder funktionen «crypt(den indsendte adgangskode, salt)» med saltet fra en anden bruger, der har en gyldig adgangskodehash, hvorefter den sammenligner den returnerede hash fra funktionen crypt med værdien fra feltet med adgangskodehashen.

I musl returnerer funktionen crypt() for SHA-512-hashes symbolet «*», hvis længden af den indsendte adgangskode overstiger 256 byte (denne grænse blev indført i 2012 for at beskytte mod DoS-angreb, da overførsel af store værdier medfører stor belastning på CPU'en). Det samme symbol bruges i feltet med adgangskodehashen i «/etc/shadow» for at angive konti, hvor adgangskodeautentificering er deaktiveret.

Som følge af angrebet kan en angriber, der har mulighed for at oprette forbindelse til en SSH-server, forbinde sig til enhver konto, hvor der i «/etc/shadow» i passwordfeltet er angivet symbolet «*», ved at overføre en streng med en længde fra 257 til 1024 byte. Problemet påvirker mange eksisterende Docker-billeder bygget med Alpine Linux samt standard Alpine-billeder til cloud-systemer AWS og Azure, hvor bruger root har symbolet «*» i stedet for en hashkode.

Bemærkelsesværdigt er det, at der oprindeligt i de officielle Docker-billeder, der anvender Alpine, siden 2015 blev angivet en tom root-adgangskode, og efter opdagelsen af dette faktum blev der i stedet for en hashkode angivet symbolet «!». Men dette forhindrede indlogning med SSH-nøgler, så siden 2022 blev symbolet for at blokere adgang via kodeord ændret til «*».

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster