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

Предистория с Alpine
Поводът за проведеното мини-изследване беше поява по-рано този месец на Talos Vulnerability Report (), авторите на който — благодарение на откритие на Питър Адукинс от 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 (snapshot от 20190228), а на собствениците на уязвимите образи бе предложено да закоментират реда с root в /etc/shadow или да се уверят, че пакетът linux-pam.
Продължението с Docker Hub
Джери Гамблин реши да се запита, "колко разпространена може да се окаже практиката на използване на null пароли в контейнерите". За целта той написа малък , чиято същност е много проста:
- чрез curl заявка към API в Docker Hub се запитва списъкът на разположените там Docker образи;
- чрез jq той се сортира по полето
популярност, а от получените резултати остава първата хиляда; - за всеки от тях се изпълнява
docker pull; - за всеки получен от Docker Hub образ се изпълнява
docker runс четене на първия ред от файла/etc/shadow; - ако стойността на реда се оказа равна на
root:::0:::::, името на образа се запазва в отделен файл.
Какво се получи? се оказа 194 реда с имената на популярни Docker образи с Linux системи, при които root потребителят няма зададена парола:
„Сред най-известните имена в този списък се оказаха govuk/governmentpaas, hashicorp, microsoft, monsanto и mesosphere. А kylemanna/openvpn е най-популярният контейнер в списъка, с над 10 милиона тегления.“
Важно е да се спомене, че самото това явление не означава пряка уязвимост в сигурността на системите, които ги използват: всичко зависи и от начина, по който те се прилагат (вж. коментара от случая с Alpine по-горе). Обаче „поуката от тази басня“ сме виждали много пъти: известната простота често има и обратна страна, за която винаги е необходимо да се помни и последствията от която да се предвидят в сценарите за използване на технологията.
P.S.
Прочетете също в нашия блог:
- «»;
- «»;
- «»;
- «».
Източник: habr.com
