2015-08-27 22 views
7

Widziałem już mnóstwo atramentu rozlanego do tej pory na temat tego, jak Docker nie jest wystarczająco izolowany, aby umożliwić dowolne pojemniki uruchamiane w środowisku z wieloma dzierżawcami, i to ma sens. "Jeśli jest to root w Dockerze, pomyśl o root w komputerze głównym." A co z użytkownikiem niezarejestrowanym?Jakie są potencjalne problemy z bezpieczeństwem, które powodują uruchomienie niezaufanego kodu w kontenerze Docker jako użytkownik inny niż root?

Jeśli chcę wziąć niezaufany kod i uruchomić go w kontenerze, czy można to zrobić bezpiecznie, o ile kontener działa jako użytkownik inny niż root? Jakie są potencjalne pułapki bezpieczeństwa związane z robieniem czegoś takiego?

Jestem przekonany, że dzisiaj są aplikacje produkcyjne (systemy CI, działające pastebaby), ale czy są one po prostu szczęśliwe, że nie miały zdeterminowanego napastnika, czy też jest to rozsądne w systemie produkcyjnym?

+0

+1 Naprawdę zainteresowane odpowiedziami na ten temat. Mogę zgłosić się na ochotnika, że ​​uruchamianie się jako root daje ci dostęp do zapisu do plików systemowych, które są częścią obrazu Docker. Domyślam się, że pomysłowe oprogramowanie może wykorzystać tę lukę, aby wykorzystać lukę, która może istnieć w jądrze hosta Docker. –

+3

Głosuję, aby zamknąć to pytanie jako nie na temat (mimo że jest to interesujące). Najlepiej będzie odpowiedzieć na security.stackexchange.com – oleksii

+0

Możesz zadawać pytania administratora Docker na SO. Zostało to omówione kilka razy: http://meta.stackexchange.com/search?q=docker –

Odpowiedz

1

Od Docker v1.12, jeśli ktoś pracuje pojemnik jako użytkownik inny niż root z nazw użytkowników obsługujących istnieją dwa poziomy przekroczenia uprawnień złośliwy aktor musi wykonać, by stać się root na hoście:

  1. eskalować od non-root root wewnątrz pojemnika
  2. eskalować do użytkownika root w pojemniku do użytkownika root na komputerze

Tak więc w przypadku kodu niezaufane jest prowadzony wewnątrz kontenera Docker jako non-root użytkownik, będzie nieco trudniejsze dla atta cker staje się rootem na hoście, ponieważ dodajemy dodatkowy krok do zostania rootem w kontenerze. To jedyna zaleta pod względem bezpieczeństwa w porównaniu do uruchamiania kontenerów z uprawnieniami roota.

W przypadku przekroczenia uprawnień przez obie warstwy bezpieczeństwa, w następstwie powinno pomóc ograniczyć powierzchnię ataku:

  1. obciążeniami (dokładniej Döcker pojemników, w tym kontekście) o różnych poziomach zaufania powinny być odizolowane od siebie za pomocą sieci nakładek zgodnie z zasadą najmniejszych przywilejów.
  2. Włączanie dostępnego modułu zabezpieczeń Linux w trybie egzekucji (np SELinux, AppArmor)

Referencje:

0

Wszystkie pojemniki mają to samo jądro. Jeśli Twój niezaufany kod może wykonać exploita jądra, może zrobić, co chce na hoście i/lub innym uruchomionym kontenerze.

Powiązane problemy