19 % av de översta Docker-bilderna har inte ett root-lösenord

I lördags den 18 maj, Jerry Gamblin från Kenna Security kontrollerade 1000 av de mest populära bilderna från Docker Hub baserat på root-lösenordet de använder. I 19 % av fallen var den tom.

19 % av de översta Docker-bilderna har inte ett root-lösenord

Bakgrund med alpin

Anledningen till miniforskningen var Talos Vulnerability Report som publicerades tidigare denna månad (TALOS-2019-0782), vars författarna - tack vare upptäckten av Peter Adkins från Cisco Umbrella - rapporterade att Docker-bilder med den populära alpina containerdistributionen inte har ett root-lösenord:

"Officiella versioner av Alpine Linux Docker-avbildningar (sedan v3.3) innehåller ett NULL-lösenord för root-användaren. Denna sårbarhet berodde på en regression som infördes i december 2015. Kontentan av detta är att system som distribueras med problematiska versioner av Alpine Linux i en container och använder Linux PAM eller annan mekanism som använder systemets skuggfil som en autentiseringsdatabas kan acceptera ett NULL-lösenord för rootanvändaren."

Versionerna av Docker-bilder med Alpine testade för problemet var 3.3–3.9 inklusive, liksom den senaste versionen av edge.

Författarna gav följande rekommendation för berörda användare:

"Rotkontot måste uttryckligen inaktiveras i Docker-bilder byggda från problematiska versioner av Alpine. Det sannolika utnyttjandet av sårbarheten beror på miljön, eftersom dess framgång kräver en externt vidarebefordrad tjänst eller applikation som använder Linux PAM eller annan liknande mekanism."

Problemet var utslagen i alpina versionerna 3.6.5, 3.7.3, 3.8.4, 3.9.2 och edge (20190228 ögonblicksbild), och ägare av berörda bilder ombads att kommentera raden med root in /etc/shadow eller se till att paketet saknas linux-pam.

Fortsatte med Docker Hub

Jerry Gamblin bestämde sig för att vara nyfiken på "hur vanlig praxis att använda nulllösenord i behållare kan vara." För detta ändamål skrev han en liten Bash manus, vars kärna är mycket enkel:

  • genom en curl-begäran till API:et i Docker Hub efterfrågas en lista över Docker-bilder som finns där;
  • via jq sorteras det efter fält popularity, och av de erhållna resultaten återstår de första tusen;
  • för var och en av dem är den uppfylld docker pull;
  • för varje bild som tas emot från Docker Hub exekveras docker run med att läsa den första raden från filen /etc/shadow;
  • om strängens värde är lika med root:::0:::::, namnet på bilden sparas i en separat fil.

Vad hände? I den här filen Det fanns 194 rader med namnen på populära Docker-bilder med Linux-system, där root-användaren inte har ett lösenord inställt:

"Bland de mest kända namnen på den här listan var govuk/governmentpaas, hashicorp, microsoft, monsanto och mesosphere. Och kylemanna/openvpn är den mest populära behållaren på listan, dess statistik uppgår till mer än 10 miljoner drag.”

Det är dock värt att påminna om att detta fenomen i sig inte innebär en direkt sårbarhet i säkerheten för de system som använder dem: allt beror på exakt hur de används (se kommentar från alpfallet ovan). Vi har dock sett "berättelsens moral" många gånger: skenbar enkelhet har ofta en baksida som alltid måste komma ihåg och konsekvenserna av vilka tas med i beräkningen i dina teknikapplikationsscenarier.

PS

Läs även på vår blogg:

Källa: will.com

Lägg en kommentar