A legnépszerűbb Docker-képek 19%-a nem rendelkezik root jelszóval
Múlt szombaton, május 18-án Jerry Gamblin, a Kenna Security munkatársa ellenőrizve 1000 legnépszerűbb kép a Docker Hubból az általuk használt root jelszó alapján. Az esetek 19%-ában üres volt.
Alpesi háttér
A mini-kutatás oka a Talos Vulnerability Report volt, amely a hónap elején jelent meg (TALOS-2019-0782), amelynek szerzői - a Cisco Umbrella munkatársa, Peter Adkins felfedezésének köszönhetően - arról számoltak be, hogy a népszerű Alpine konténer-terjesztéssel rendelkező Docker-képek nem rendelkeznek root jelszóval:
„Az Alpine Linux Docker lemezképek hivatalos verziói (a v3.3 óta) NULL jelszót tartalmaznak a root felhasználó számára. Ez a sérülékenység a 2015 decemberében bevezetett regresszió eredménye. Ennek lényege, hogy az Alpine Linux problémás verzióival telepített rendszerek egy konténerben, és Linux PAM-ot vagy más olyan mechanizmust használnak, amely a rendszer árnyékfájlját használja hitelesítési adatbázisként, NULL jelszót fogadhatnak el a root felhasználó számára.
A problémára tesztelt Docker-képek Alpine-nal 3.3–3.9-es verziói, valamint az Edge legújabb kiadása.
A szerzők a következő ajánlást fogalmazták meg az érintett felhasználók számára:
„A root fiókot kifejezetten le kell tiltani az Alpine problémás verzióiból készült Docker-képekben. A sérülékenység kiaknázásának valószínűsége a környezettől függ, mivel a sikerhez egy Linux PAM-ot vagy más hasonló mechanizmust használó, kívülről továbbított szolgáltatásra vagy alkalmazásra van szükség."
A probléma az volt Eltüntetett az Alpine 3.6.5, 3.7.3, 3.8.4, 3.9.2 és edge verziókban (20190228 pillanatkép), és az érintett képek tulajdonosait megkérték, hogy kommentálják a sort a root /etc/shadow vagy győződjön meg arról, hogy a csomag hiányzik linux-pam.
Folytatás a Docker Hubbal
Jerry Gamblin úgy döntött, hogy kíváncsi lesz arra, „mennyire gyakori a null jelszavak használata konténerekben”. Erre a célra írt egy kis Bash script, aminek a lényege nagyon egyszerű:
a Docker Hub API-hoz intézett curl kérésén keresztül kérik az ott tárolt Docker-képek listáját;
a jq-n keresztül mező szerint van rendezve popularity, és a kapott eredményekből az első ezer marad;
mindegyiknél teljesül docker pull;
a Docker Hubtól kapott minden egyes kép végrehajtására kerül sor docker run az első sor kiolvasásával a fájlból /etc/shadow;
ha a karakterlánc értéke egyenlő root:::0:::::, a kép neve egy külön fájlba kerül mentésre.
Mi történt? BAN BEN ez a fájl 194 sor volt a népszerű Docker-képfájlok neveivel Linux rendszerekkel, amelyekben a root felhasználó nem rendelkezik jelszóval:
„A listán szereplő legismertebb nevek között szerepelt a govuk/governmentpaas, a hashicorp, a microsoft, a monsanto és a mesosphere. A kylemanna/openvpn pedig a legnépszerűbb konténer a listán, statisztikái összesen több mint 10 millió húzást tesznek ki.”
Érdemes azonban emlékeztetni arra, hogy ez a jelenség önmagában nem jelent közvetlen sebezhetőséget az őket használó rendszerek biztonságában: minden attól függ, hogy pontosan hogyan használják őket. (lásd fent az Alpine-ügy kommentárját). A „történet morálját” azonban sokszor láttuk: a látszólagos egyszerűségnek gyakran van egy árnyoldala, amelyet mindig emlékezni kell, és amelynek következményeit figyelembe kell venni a technológiai alkalmazási forgatókönyvekben.