У 19% найпапулярных Docker-вобразаў няма пароля для root

У мінулую суботу, 18 траўня, Jerry Gamblin з Kenna Security праверыў 1000 самых папулярных выяў з Docker Hub на выкарыстоўваны ў іх пароль для карыстача root. У 19% выпадкаў ён аказаўся пустым.

У 19% найпапулярных Docker-вобразаў няма пароля для root

Перадгісторыя з Alpine

Падставай для праведзенага міні-даследавання стаў Talos Vulnerability Report, які з'явіўся раней у гэтым месяцы (ТАЛОС-2019-0782), аўтары якога - дзякуючы знаходцы Peter Adkins з Cisco Umbrella - паведамілі, што Docker-вобразы з папулярным дыстрыбутывам для кантэйнераў Alpine не маюць пароля для root:

«Афіцыйныя версіі Docker-вобразаў Alpine Linux (пачынальна з v3.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

Jerry Gamblin вырашыў пацікавіцца, "наколькі распаўсюджанай можа апынуцца практыка выкарыстання 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 вышэй). Аднак «мараль гэтай байкі» мы бачылі ўжо шмат разоў: бачная прастата часцяком мае і зваротны бок, пра які заўсёды неабходна памятаць і наступствы якой улічваць у сваіх сцэнарах ужывання тэхналогіі.

PS

Чытайце таксама ў нашым блогу:

Крыніца: habr.com

Дадаць каментар