The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

16.07.2018 10:58

Джеймс Боттомли (James Bottomley), известный разработчик ядра Linux, входивший в координационный технический комитет Linux Foundation, опубликовал результаты анализа безопасности различных систем контейнерной изоляции, включая традиционные контейнеры Docker, недавно представленную систему Nabla, нацеленную на минимизацию выполняемых в основном ядре системных вызовов, и гибридные системы gVisor и Kata Containers с изоляцией на базе гипервизоров.

Для каждого типа систем оценивался уровень защищённости от совершения горизонтальных атак (HAP, Horizontal Attack Profile), при которых брешь в одном из базовых слоёв (например, в ядре Linux или гипервизоре) может привести к полной компрометации всей инфраструктуры и получению контроля за корневым окружением и всеми запущенными контейнерами. Уровень безопасности HAP зависит от объёма привилегированного кода, который вызывается в процессе работы той или оной системы контейнерной изоляции или виртуализации. Чем меньше привилегированного кода вовлечено в выполнение контейнера тем выше безопасность всей системы, так как сокращается число потенциальных векторов для атак и уменьшается вероятность присутствия уязвимостей.

Основным путём совершения горизонтальных атак для контейнеров являются системные вызовы, обработка которых выполняется на стороне общего ядра и, в случае наличия уязвимости в одном из обработчиков системного вызова, злоумышленник, имеющий доступ к одному из контейнеров, может получить контроль над всей инфраструктурой. В случае применения виртуализации на базе гипервизоров главными объектами для атак становятся гипервизор и прослойки для обеспечения доступа к оборудованию или эмуляции оборудования. В системах контейнерной изоляции предоставляется доступ к около 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. Низкая производительность gVisor объясняется большими накладными расходами при использовании ptrace и гипервызовов (gVisor-kvm) для привязки системных вызовов к изолированному окружению.



  1. Главная ссылка к новости (https://blog.hansenpartnership...)
  2. OpenNews: Google открыл gVisor, гибрид системы виртуализации и контейнеров
  3. OpenNews: Выпуск MirageOS 2.5, платформы для запуска приложений поверх гипервизора
  4. OpenNews: В рамках проекта IncludeOS развивается ядро для обособленного запуска C++-приложений
  5. OpenNews: Компании Intel и Hyper представили проект Kata Containers
  6. OpenNews: Выпуск Kata Containers 1.0 с изоляцией на основе виртуализации
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48969-nabla
Ключевые слова: nabla, container, gvisor, kata, virtual
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (12) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:24, 16/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Можно изобретать сколько угодно уровней, слоёв и абстракций, но если ты купил проц у успешных откатчиков, смысла в этом не будет никакого.
     
  • 1.3, Аноним (3), 11:52, 16/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Проблема этого сравнения в том, что для контейнеров учитывались прямые обращения к системным вызовам, а для виртуализации косвенные - в основном вызовы посчитаны для бэкендов xen и kvm. С точки зрения возможности проведения атак - это небо и земля, как минимум двухкратное усложнение атаки. Например, если найдена 0-day в системном вызове ядра, из контейнера её можно эксплуатировать сразу, а при виртуализации ещё нужно найти вторую дыру в бэкенде. Вообщем, несмотря на всю дырявость Xen контейнеры пока и близко не подошли по уровню изоляции к виртуализации.
     
     
  • 2.5, нах (?), 12:26, 16/07/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    +1
    похоже, основной целью псевдоисследования являлось навешать маркетоидной лапши на уши - покупайте НАШИХ слонов.

     

  • 1.4, Попугай Кеша (?), 12:21, 16/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Контейнер в контейнере в контейнере в контейнере в виртуализированной абстракции... Да, предохраняться они умеют, но ощущений никаких уже
     
     
  • 2.6, Cradle (?), 12:28, 16/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    нужно запретить все языки программирования кроме Ada и Eiffel, и будет нам безопасность :)
     
     
  • 3.8, A.Stahl (ok), 12:36, 16/07/2018 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Угу, нет кода -- нет уязвимостей.
     
  • 3.13, Аноним (13), 13:33, 16/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Верните машину времени на место, пожалуйста.
     
     
  • 4.15, . (?), 13:51, 16/07/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Верните машину времени на место, пожалуйста.

    стоп, а вы из какого года? Мне б таймер для криокамеры правильно поставить...

     

  • 1.14, Аноним (14), 13:34, 16/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Узким местом Nabla стала реализация сетевого стека в пространстве пользователя. При использовании конфигурации с оркестровкой контейнера напрямую (nabla-raw) без сетевого взаимодействия, производительность Nabla достигла уровня Docker.

    Зашибись! То есть на диаграмме производительности nabla-raw и nabla-container идут отдельно. А на диаграмме количества системных вызовов есть только одна nabla. Но если юзать ядерный сетевой стек, то вызовов будет явно больше. Какой-то по-детски наивный обман.

     
  • 1.17, Аноним84701 (ok), 14:35, 16/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > Джеймс Боттомли (James Bottomley), известный разработчик ядра Linux, входивший в координационный
    > технический комитет Linux Foundation, опубликовал (https://blog.hansenpartnership.com/measuring-the-horizontal-attack-profile-of-)

    Полностью:
    > A New Method of Containment: IBM Nabla Containers

    А еще, совершенно случайно:
    https://researcher.watson.ibm.com/researcher/view.php?person=us-jejb
    > James Bottomley is a Distinguished Engineer at IBM Research where he works on Cloud and Container technology

    вот ведь какие совпадения бывают!

     
  • 1.26, Аноним (26), 18:49, 19/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не и название. Не знаю о чём речь, но ставить отказываюсь.
     
     
  • 2.27, Andrey Mitrofanov (?), 18:53, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Не и название. Не знаю о чём речь, но ставить отказываюсь.

    Узнайте больше[I]!
    https://blog.hansenpartnership.com/?p=492
    http://techrights.org/2018/06/03/blockchain-patent-hype-and-ibm/

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру