Раздать root внутри контейнера можно. Если снаружи стоит стена, которую не пробить через sudo.
Схема из свежего разбора на Хабре: контейнер запускают не на runc, а на gVisor — прослойке, которая перехватывает системные вызовы (это когда программа просит ядро что-то сделать) и сама решает, что пропустить. Ядро хоста в разговор не влезает вовсе.
Что держит остальное:
— своя сеть на каждый запуск, сосед по хосту чужой трафик не увидит;
— лимиты на процессор, память и диск плюс сторож, который гасит контейнер при переполнении;
— проверка прав, которую не обойти через sudo.
Дыры тоже есть, и все три — в сетевой изоляции: контейнер всё-таки дотягивается до хоста. Ещё load average в такой сборке врёт, потому что считает по своим правилам, а не по реальной нагрузке железа.
Root без лимитов — это чужая машина внутри твоей.
#серверы #безопасность
Просмотры: 15