В изминалата събота, 18 май, Джери Гамблин от Kenna Security 1000-те най-популярни образа от Docker Hub за използваната в тях парола за потребителя root. В 19% от случаите тя се оказа празна.

Предистория с Alpine
Причината за проведеното мини-изследване беше публикувания по-рано този месец Доклад за уязвимости на Talos (), авторите на който — благодарение на откритие на Питър Адкинс от Cisco Umbrella — съобщиха, че Docker образите с популярния дистрибутив за контейнери Alpine нямат парола за root:
«Официалните версии на Docker образите Alpine Linux (от версия 3.3) съдържат NULL парола за потребителя root. Тази уязвимост възникна в резултат на регресия, представена през декември 2015 г. Същността ѝ е, че системи, внедрени с проблемни версии на Alpine Linux в контейнер и използващи Linux PAM или друг механизъм, който задвижва системния файл shadow като база за аутентификация, могат да приемат нулева (NULL) парола за потребителя root».
Проблемните версии на Docker образите с Alpine бяха 3.3—3.9 включително, както и последния релиз edge.
Авторите предоставиха следната препоръка на потребителите, засегнати от проблема:
«Учетната запис на root трябва да бъде явно деактивирана в Docker образите, изградени на базата на проблемните версии на Alpine. Вероятността за експлоатация на уязвимостта зависи от средата, тъй като нейният успех изисква открито услуга или приложение, използващо Linux PAM или подобен механизъм».
Проблемът беше в Alpine версии 3.6.5, 3.7.3, 3.8.4, 3.9.2 и edge (20190228 snapshot), а на притежателите на засегнатите образи бяха предложени да коментират реда с root в /etc/shadow или да се уверят в отсъствието на пакета linux-pam.
Продължение с Docker Hub
Джери Гамблин реши да се поинтересува, «колко разпространена може да се окаже практиката за използване на null пароли в контейнерите». За целта той написа малък , чиято същност е доста проста:
- чрез curl заявка към API в Docker Hub се иска списък на публикуваните там Docker образи;
- чрез jq той се сортира по полето
popularity, а от получените резултати остава първата хиляда; - за всеки от тях се изпълнява
docker pull; - за всеки получен от Docker Hub образ се изпълнява
docker runс четене на първия ред от файла/etc/shadow; - ако стойността на реда е равна на
root:::0:::::, името на образа се съхранява в отделен файл.
Какво се получи? В се оказаха 194 реда с имената на популярни Docker образи с Linux системи, където root потребителят няма зададен парола:
„Сред най-известните имена в този списък бяха govuk/governmentpaas, hashicorp, microsoft, monsanto и mesosphere. А kylemanna/openvpn — най-популярният контейнер в списъка, неговата статистика отчита над 10 милиона pull-а.“
Струва си, обаче, да се напомни, че самото явление не означава пряка уязвимост в сигурността на системите, които ги използват: всичко зависи и от начина, по който се използват (вж. коментара от случая с Alpine по-горе). Но „поучението от тази басня“ сме виждали много пъти: видимата простота често има и обратната страна, за която винаги е необходимо да си спомняте и последиците, които трябва да вземете под внимание в сценарии за прилагане на технологията.
P.S.
Прочетете също в нашия блог:
- «»;
- «»;
- «»;
- «».
Източник: habr.com
