Контейнеры — это просто процессы: миф о безопасности namespace
В ранние дни коммерческого open source крупные вендоры сомневались в его безопасности, утверждая, что прозрачность — это недостаток. На деле же открытость стимулировала развитие сообществ и ускоряла исправление уязвимостей, делая OSS зачастую безопаснее проприетарного кода.
Сейчас появился новый вид дезинформации — противоположность FUD: она преуменьшает реальные риски безопасности в open source, которые должны вызывать беспокойство.
С появлением контейнеризации пространства имён (namespaces) стали основным механизмом изоляции процессов и ресурсов. Они создают иллюзию разделения, ограничивая, что процесс может видеть или использовать — например, файловую систему, сетевой стек или идентификаторы пользователей.
Но это всего лишь иллюзия. Пространства имён в Linux — просто способ разделения ресурсов ядра между процессами. Они не обеспечивают настоящей изоляции. Все контейнеры работают на одном ядре, и если в нём есть уязвимость, процесс внутри namespace может сбежать и повлиять на другие контейнеры или даже хост.
Контейнеры — это просто процессы с разными пространствами имён. Они наследуют эту слабость, а значит, считать их безопасными из-за namespaces — технически неверно и опасно.
Виртуализация не решает проблему
Сейчас модно называть что угодно «виртуальным», чтобы намекнуть на безопасность. Но семантика не заменяет архитектурных гарантий. Виртуальная машина обеспечивает сильную изоляцию, потому что абстрагирует весь стек железа, включая ядро. Контейнеры же — просто процессы на одном хосте, сколько бы обёрток из namespaces на них ни навесили.
Настоящая изоляция — ключевой вопрос безопасности в мультитенантных средах. Если вы до сих пор верили, что пространства имён создают безопасные границы, пора просыпаться.