В 19% от най-популярните Docker образи няма парола за root

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

В 19% от най-популярните Docker образи няма парола за root

Предистория с Alpine

Причината за проведеното мини-изследване беше публикувания по-рано този месец Доклад за уязвимости на Talos (TALOS-2019-0782), авторите на който — благодарение на откритие на Питър Адкинс от 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 пароли в контейнерите». За целта той написа малък Bash скрипт, чиято същност е доста проста:

  • чрез 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster