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

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

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

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

Поводът за проведеното мини-изследване беше поява по-рано този месец на Talos Vulnerability Report (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 (snapshot от 20190228), а на собствениците на уязвимите образи бе предложено да закоментират реда с root в /etc/shadow или да се уверят, че пакетът linux-pam.

Продължението с Docker Hub

Джери Гамблин реши да се запита, "колко разпространена може да се окаже практиката на използване на null пароли в контейнерите". За целта той написа малък Bash-скрипт, чиято същност е много проста:

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

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