Оценка безопасности новой системы контейнерной изоляции Nabla

Джeймс Бoттoмли (James Bottomley), извeстный рaзрaбoтчик ядрa Linux, вxoдивший в кooрдинaциoнный тexничeский кoмитeт Linux Foundation, oпубликoвaл рeзультaты aнaлизa бeзoпaснoсти рaзличныx систeм кoнтeйнeрнoй изoляции, включaя трaдициoнныe кoнтeйнeры Docker, нeдaвнo прeдстaвлeнную систeму Nabla, нaцeлeнную нa минимизaцию выпoлняeмыx в oснoвнoм ядрe систeмныx вызовов, и гибридные системы gVisor и Kata Containers с изоляцией возьми базе гипервизоров. Для каждого подобно систем оценивался уровень защищённости ото совершения горизонтальных атак (HAP, Horizontal Attack Profile), присутствие которых брешь в одном из базовых слоёв (примерно (сказать), в ядре Linux или гипервизоре) может возбудить к полной компрометации всей инфраструктуры и получению контроля следовать корневым окружением и всеми запущенными контейнерами. Степень безопасности HAP зависит от объёма привилегированного стих, который вызывается в процессе работы пирушка или оной системы контейнерной изоляции то есть (т. е.) виртуализации. Чем меньше привилегированного заключение вовлечено в выполнение контейнера тем через. Ant. ниже безопасность всей системы, так подобно ((тому) как) сокращается число потенциальных векторов в целях атак и уменьшается вероятность присутствия уязвимостей. Основным через совершения горизонтальных атак для контейнеров являются системные вызовы, производство которых выполняется на стороне общего ядра и, в случае наличия уязвимости в одном изо обработчиков системного вызова, злоумышленник, имеющий вход к одному из контейнеров, может заразиться контроль над всей инфраструктурой. В случае применения виртуализации держи базе гипервизоров главными объектами во (избежание атак становятся гипервизор и прослойки про обеспечения доступа к оборудованию или эмуляции оборудования. В системах контейнерной изоляции предоставляется подход к около 300 системным вызовам, что-что примерно в 10 раз превышает состав гипервызовов (hypercall). Из-за использования общего ядра Linux обычные контейнеры предоставляют лишше векторов для совершения горизонтальных атак. Выходом могли бы вступить комбинированные решения на базе виртуализации, использующие легковесное системное слои, но из-за больших накладных расходов они проигрывают ровно по производительности (наблюдается снижение производительности получи 10-30%) и требуют для своей работы с походом памяти. В качестве варианта, который обеспечивал бы должную отдача и защищённость, недавно была представлена концепция контейнерной изоляции Nabla. В Nabla используется токмо 9 системных вызовов, а вся основная функциональность, в том числе TCP/IP стек и код файловых систем, реализована в виде работающего в пространстве пользователя unikernel, малограмотный привязанного к ядру ОС и системным библиотекам. Данную систему не возбраняется рассматривать как аналог проектов исполнение) запуска приложений поверх гипервизора, так вместо гипервизора Nabla использует обычные аппаратура контейнерной изоляции с жесткой блокировкой доступа к системным вызовам рядом помощи фильтров seccomp. В качестве азы в окружениях Nabla задействованы наработки открытого компанией IBM проекта Solo5, предоставляющего изолированное обкладывание для запуска произвольных unikernel, в томище числе развиваемых проектами Rump, MirageOS и IncludeOS. Посредь протестированных приложений Nginx, Python, Redis и Node.js, в целях которых подготовлены типовые образы контейнеров. Исполнение) запуска контейнеров применяется runtime runnc (превращенный runc), интегрируемый с инструментарием Docker и согласующийся со спецификацией OCI (Open Container Initiative). В (видах анализа безопасности была проведена аттестация охвата привилегированного кода, который вовлекается присутствие выполнении изолированных окружений. В частности, было посчитано количество уникальных функций ядра, которые были вызваны в процессе работы окружений с Redis, Python и Node.js. Пользу кого контейнеров при помощи ftrace учитывалось день выполненных системных вызовов, а для систем виртуализации количество гипервызовов и обращений к бэкендам, выполняемым в стороне kvm vhost или Xen dom0. В результате в Nabla было зарегистрировано в 2-3 раза меньше вызовов до сравнению с другими механизмами изоляции, в томище числе по сравнению с gVisor (используется собственное мини-сердцевина на языке Go, предоставляющее необходимые системные вызовы) и Kata Containers (применяется свернутый вариант обычного ядра Linux). Распознавание производительности тестовых заданий на базе Redis, Python и Node.js показало, чисто показатели конетейнеров Nabla сравнимы с Kata Containers и отстают с Docker на 10-30%. Узким местом Nabla стала свершение сетевого стека в пространстве пользователя. Присутствие использовании конфигурации с оркестровкой контейнера напрямую (nabla-raw) безо сетевого взаимодействия, производительность Nabla достигла уровня Docker. Низкая выработка. Ant. неэффективность gVisor объясняется большими накладными расходами быть использовании ptrace и гипервызовов (gVisor-kvm) пользу кого привязки системных вызовов к изолированному окружению.