19% ΠΎΡ‚ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ изобраТСния Π½Π° Docker нямат root ΠΏΠ°Ρ€ΠΎΠ»Π°

ΠœΠΈΠ½Π°Π»Π°Ρ‚Π° ΡΡŠΠ±ΠΎΡ‚Π°, 18 ΠΌΠ°ΠΉ, Π”ΠΆΠ΅Ρ€ΠΈ Π“Π°ΠΌΠ±Π»ΠΈΠ½ ΠΎΡ‚ Kenna Security ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 1000 ΠΎΡ‚ Π½Π°ΠΉ-популярнитС изобраТСния ΠΎΡ‚ Docker Hub въз основа Π½Π° root ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π°, която ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚. Π’ 19% ΠΎΡ‚ случаитС Π΅ Π±ΠΈΠ»ΠΎ ΠΏΡ€Π°Π·Π½ΠΎ.

19% ΠΎΡ‚ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ изобраТСния Π½Π° Docker нямат root ΠΏΠ°Ρ€ΠΎΠ»Π°

Ѐон с алпийски

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° ΠΌΠΈΠ½ΠΈ-изслСдванСто бСшС Π΄ΠΎΠΊΠ»Π°Π΄ΡŠΡ‚ Π·Π° уязвимостта Π½Π° Talos, ΠΊΠΎΠΉΡ‚ΠΎ сС появи ΠΏΠΎ-Ρ€Π°Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ мСсСц (Π’ΠΠ›ΠžΠ‘-2019-0782), Ρ‡ΠΈΠΈΡ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈ - Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠŸΠΈΡ‚ΡŠΡ€ Адкинс ΠΎΡ‚ Cisco Umbrella - ΡΡŠΠΎΠ±Ρ‰ΠΈΡ…Π°, Ρ‡Π΅ изобраТСнията Π½Π° Docker с популярната дистрибуция Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Alpine нямат root ΠΏΠ°Ρ€ΠΎΠ»Π°:

β€žΠžΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈΡ‚Π΅ вСрсии Π½Π° Alpine Linux Docker изобраТСния (ΠΎΡ‚ v3.3) ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ NULL ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° root потрСбитСля. Π’Π°Π·ΠΈ уязвимост Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ рСгрСсия, въвСдСна ΠΏΡ€Π΅Π· Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ 2015 Π³. Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Ρ‚ΠΎΠ²Π° Π΅, Ρ‡Π΅ систСмитС, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΈ вСрсии Π½Π° Alpine Linux Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ Linux PAM ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° систСмния shadow Ρ„Π°ΠΉΠ» ΠΊΠ°Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° удостовСряванС, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ NULL ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° root потрСбитСля.

ВСрсиитС Π½Π° Docker изобраТСния с Alpine, тСствани Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, бяха 3.3–3.9 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ послСдната вСрсия Π½Π° edge.

АвторитС Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…Π° слСдната ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠ° Π·Π° засСгнатитС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ:

β€žΠ ΡƒΡƒΡ‚ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΡŠΡ‚ трябва Π΄Π° бъдС ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ Π² Docker изобраТСния, създадСни ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΈ вСрсии Π½Π° Alpine. ВСроятното ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° уязвимостта зависи ΠΎΡ‚ срСдата, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ нСйният успСх изисква външно ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚Π΅Π½Π° услуга ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΎ Linux PAM ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ."

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ бСшС Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½ във вСрсии Π½Π° Alpine 3.6.5, 3.7.3, 3.8.4, 3.9.2 ΠΈ edge (ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½Π° снимка 20190228) ΠΈ собствСницитС Π½Π° засСгнатитС изобраТСния бяха ΠΏΠΎΠΌΠΎΠ»Π΅Π½ΠΈ Π΄Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ Ρ€Π΅Π΄Π° с root Π² /etc/shadow ΠΈΠ»ΠΈ сС ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅, Ρ‡Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ липсва linux-pam.

ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° с Docker Hub

Π”ΠΆΠ΅Ρ€ΠΈ Π“Π°ΠΌΠ±Π»ΠΈΠ½ Ρ€Π΅ΡˆΠΈ Π΄Π° бъдС Π»ΡŽΠ±ΠΎΠΏΠΈΡ‚Π΅Π½ Π·Π° Ρ‚ΠΎΠ²Π° β€žΠΊΠΎΠ»ΠΊΠΎ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈβ€œ. Π—Π° Ρ†Π΅Π»Ρ‚Π° Ρ‚ΠΎΠΉ написа малък bash скрипт, чиято ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ проста:

  • Ρ‡Ρ€Π΅Π· curl заявка към API Π² Docker Hub сС изисква списък с Docker изобраТСния, хоствани Ρ‚Π°ΠΌ;
  • Ρ‡Ρ€Π΅Π· jq сС сортира ΠΏΠΎ ΠΏΠΎΠ»Π΅ popularity, Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ остава ΠΏΡŠΡ€Π²Π°Ρ‚Π° хиляда;
  • Π·Π° всСки ΠΎΡ‚ тях Π΅ изпълнСно docker pull;
  • Π·Π° всяко ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ΠΎΡ‚ Docker Hub, сС изпълнява docker run с Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄ ΠΎΡ‚ Ρ„Π°ΠΉΠ»Π° /etc/shadow;
  • Π°ΠΊΠΎ стойността Π½Π° Π½ΠΈΠ·Π° Π΅ Ρ€Π°Π²Π½Π° Π½Π° root:::0:::::, ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС записва Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ„Π°ΠΉΠ».

Какво стана? IN Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» ИмашС 194 Ρ€Π΅Π΄Π° с ΠΈΠΌΠ΅Π½Π° Π½Π° популярни Docker изобраТСния с Linux систСми, Π² ΠΊΠΎΠΈΡ‚ΠΎ root потрСбитСлят няма Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΏΠ°Ρ€ΠΎΠ»Π°:

β€žΠ‘Ρ€Π΅Π΄ Π½Π°ΠΉ-извСстнитС ΠΈΠΌΠ΅Π½Π° Π² Ρ‚ΠΎΠ·ΠΈ списък бяха govuk/governmentpaas, hashicorp, microsoft, monsanto ΠΈ mesosphere. А kylemanna/openvpn Π΅ Π½Π°ΠΉ-популярният ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² списъка, статистиката ΠΌΡƒ възлиза Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 10 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° тСглСния.β€œ

Π‘Ρ‚Ρ€ΡƒΠ²Π° си Π΄Π° ΠΏΡ€ΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΎΠ±Π°Ρ‡Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° явлСниС само ΠΏΠΎ сСбС си Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° пряка уязвимост Π² сигурността Π½Π° систСмитС, ΠΊΠΎΠΈΡ‚ΠΎ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚: всичко зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π½ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ (Π²ΠΈΠΆΡ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π° ΠΎΡ‚ случая Alpine ΠΏΠΎ-Π³ΠΎΡ€Π΅). Π’ΠΈΠΆΠ΄Π°Π»ΠΈ смС ΠΎΠ±Π°Ρ‡Π΅ β€žΠΌΠΎΡ€Π°Π»Π° Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡΡ‚Π°β€œ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡŠΡ‚ΠΈ: ΠΏΡ€ΠΈΠ²ΠΈΠ΄Π½Π°Ρ‚Π° простота чСсто ΠΈΠΌΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° страна, която Π²ΠΈΠ½Π°Π³ΠΈ трябва Π΄Π° сС ΠΏΠΎΠΌΠ½ΠΈ ΠΈ послСдствията ΠΎΡ‚ която Π΄Π° сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π² сцСнариитС Π·Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

PS

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€