Kompleksowe szkolenie: wprowadzenie do bezpieczeństwa IT od sekuraka z rabatem 50%. Jedyna taka okazja w tym roku. Nie przegap! :-)

Niezałatana podatność w Dockerze – może dać roota na głównym systemie

31 maja 2019, 11:52 | W biegu | 0 komentarzy

Podatność CVE-2018-15664 została upubliczniona przez jednego z inżynierów SUSE Linux. W pewnym uproszczeniu chodzi o podatność klasy race condition z użyciem linków symbolicznych. Z drugiej strony to podatność klasy TOCTOU. Np. jakaś operacja tworzy link symboliczny, jest on rozwiązywany na odpowiednią ścieżkę w kontenerze, w tym momencie go szybko podmieniamy na coś wskazującego na główną maszynę (poza kontenerem) – mamy na to minimalną ilość czasu – i ww. operacja używa już nowego linku (myśląc, że jest on bezpieczny).

Zatem przy pewnych warunkach można z kontenera uzyskać za pomocą linku symbolicznego dostęp do plików na głównym systemie (odczyt/zapis).

Do wykorzystania podatności najprawdopodobniej wystarczy mieć: a) dostęp do dowolnego kontenera lub b) udostępnić  odpowiednio spreparowany kontener.

Całość PoC-a to odpalenie dość prostego skryptu (załączonego do opisu podatności):

./run_read.sh &>/dev/null & ; sleep 10s ; pkill -9 run.sh
  % chmod 0644 ex*/out # to fix up permissions for grep
  % grep 'SUCCESS' ex*/out | wc -l # managed to get it from the host
  2
  % grep 'FAILED'  ex*/out | wc -l # got the file from the container
  334

Jak pisze autor, pojedyncza szansa na „wygranie wyścigu” jest < 1%. Ale odpowiednio duża liczba iteracji robi to co trzeba (czyli nieautoryzowany dostęp jest realizowany w czasie około 10 sekund).

In the case of run_read.sh, I get a <1% chance of hitting the race condition (my attack script is quite dumb, it’s possible with better timing you’d be able to hit the race window much more effectively).
However <1% still means it only takes 10s of trying to get read access to the host with root permissions.

Obecny exploit wymaga użycia docker cp, ale różne osoby wskazują, że jest to tylko przykład i najprawdopodobniej dużo miejsc w samych dockerze jest podatnych.

–ms

 

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz