Журнал "Information Security/ Информационная безопасность" #4, 2021

прометация контейнера имела мини- мальные последствия, важно обеспечить изоляцию контейнеров друг от друга и от хостовой ОC 10 . Хотя изоляцию контейнеров как сред исполнения и называют одной из ключе- вых положительных особенностей использования контейнеризации, гово- рить о ней как о функции, обеспечиваю- щей защищенность системы, исполь- зующей контейнеры, нельзя. Изоляция позволяет уменьшить влияние прило- жений, запущенных в разных контейне- рах, друг на друга и на хостовую систему, в которой работают. Обычно запуск, остановка и даже удаление одного из контейнеров не влияет на работу других. Однако полного исключения взаимо- действия между контейнерами и хостом нет. Об изоляции как об одной из наиболее острых проблем Docker было сказано еще в 2014 г. 11 . Множество важных под- систем ядра Linux функционирует вне контейнера, и через взаимодействие с ними пользователи или приложения при наличии прав суперпользователя в кон- тейнере могут оказать значительное деструктивное влияние на хостовую систему. Некоторые из указанных недостатков уже устранены, и на сегодняшний день, хотя и нельзя назвать вопрос изоляции полностью решенным, в инструменте контейнерной виртуализации Docker ему уделено много внимания. Так, для обеспечения изоляции могут исполь- зоваться различные модули безопас- ности Linux (Linux Security Modules, LSM), контрольные группы (control groups, cgroups), пространства имен (namespaces), механизм ограничения системных вызовов seccomp (secure computing mode), а также привилегии (capabilities) 10 . Docker совместим c модулями без- опасности Linux (LSM) AppArmor, используемыми по умолчанию, и SELi- nux. Стандартные настройки AppArmor запрещают переход по ссылкам на файлы, находящиеся в директориях хостовой ОС /etc, /dev, /sys и /proc, во время инициализации контейнера, и тем самым предотвращается утечка информации, которую может спрово- цировать вредоносное ПО в контейне- ре 12 . Оба модуля безопасности также могут быть настроены с учетом осо- бенностей конкретного контейнеризи- рованного приложения для обеспече- ния более высокого уровня изоляции и защиты. В приложении к Docker контрольные группы (cgroups) применяются для рас- пределения системных ресурсов хосто- вой ОС между запущенными на ней контейнерами. Сgroups не обеспечи- вают изоляцию в смысле препятствия воздействию одного контейнера на другой, однако применение cgroups позволяет обеспечить защиту от неко- торых атак типа "отказ в обслужива- нии" и задать ограничения для кон- тейнеров на потребление ресурсов хостовой ОС для повышения ее отка- зоустойчивости 13–14 . Использование пространств имен (namespaces) позволяет ограничить область видимости контейнера как некоторого запущенного процесса в ресурсах хостовой ОС. По умолчанию контейнеры запускаются с правами суперпользователя, что зачастую излишне и увеличивает уязвимость системы, но за счет использования namespaces контейнер может быть помещен в собственное пространство, за пределами которого будет иметь права непривилегированного пользо- вателя в хостовой ОС 15 . Системные вызовы позволяют взаи- модействовать с ядром Linux, и их использование может привести к значительному влиянию на другие контейнеры и хостовую ОС, а потому важно ограничить список доступных системных вызовов для контейнеров. По умолчанию в Docker для всех кон- тейнеров запрещены средствами Sec- comp 44 системных вызова (например, монтирование файловых систем), что, конечно, ограничивает вектор атаки на систему, но и может создать ложное ощущение защищенности. В совре- менных 64-битных Linux-системах существует более трехсот системных вызовов, некоторые из которых имеют известные уязвимости (например, mmap), но при этом входят в число разрешенных по умолчанию 16 . При использовании контейнеров, как и при работе с другими процессами, должен быть реализован принцип минимальных привилегий: субъект дол- жен иметь только необходимые для работы права в системе, а потому по умолчанию docker-контейнеры запус- каются с правами суперпользователя, для которого набор привилегий ограни- чен. При этом к числу разрешенных относится привилегия CAP_NET_RAW, необходимая, например, для получения и отправки ICMP-пакетов. Однако, согласно найденной уязвимости CVE- 2020-13401, злоумышленник, получив- ший контроль над контейнером с при- вилегией CAP_NET_RAW, способен успешно реализовать спуфинг-атаку или атаку типа "отказ в обслужива- нии" 17 . Рассмотрев применение различных механизмов обеспечения изоляции контейнеров, мы видим, что основная идея их работы заключается в ограничении прав процессов внутри контейнера, в разграничении доступа к объектам контейнеров и хостовой ОС, причем некоторые функции без- опасности дублируются в различных средствах. Специально разработанные для ОС семейства Linux СЗИ от НСД также могут решать указанную задачу, причем исключая излишнее дублиро- вание. Например, программный ком- плекс "Аккорд-Х К" 18 , установленный на хосте, может быть настроен таким образом, что обеспечит полноценное разграничение доступа процессов, запущенных внутри контейнера, к ресурсам системы. При этом приме- нение сертифицированного продукта позволяет не только обеспечить защи- щенность системы, но и достичь тре- буемого уровня доверия механизмов защиты в ИС высоких классов. l • 45 БЕЗОПАСНАЯ РАЗРАБОТКА www.itsec.ru Ваше мнение и вопросы присылайте по адресу is@groteck.ru 10 Иванова Н.В. Программные механизмы изоляции контейнеров DOCKER // Комплексная защита информации: материалы XXVI научно-практической конференции. Минск. 25–27 мая 2021 г. Минск: Издатель Владимир Сивчиков, 2021. С. 283–287. 11 Walsh D. Are Docker containers really secure? [Электронный ресурс]. URL: https://opensource.com/business/14/7/docker- security-selinux (дата обращения: 20.08.2021). 12 Docker contrib/apparmor /template.go [Электронный ресурс] https://raw.githubusercontent.com/docker/docker/master/contrib/appar- mor /template.go . (дата обращения: 20.08.2021). 13 Docker security [Электронный ресурс]. URL: https://docs.docker.com/engine/security/ (дата обращения: 20.08.2021). 14 Runtime options with Memory, CPUs, and GPUs [Электронный ресурс]. URL: https://docs.docker.com/config/containers/resource_con- straints/ (д ата обращения: 20.08.2021). 15 Isolate containers with a user namespace [Электронный ресурс]. URL: https://docs.docker.com/engine/security/userns-remap/ (дата обращения: 20.08.2021). 16 Seccomp security profiles for Docker [Электронный ресурс]. URL: https://docs.docker.com/engine/security/seccomp/ (дата обращения: 20.08.2021). 17 CVE-2020-13401 [Электронный ресурс]. URL: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13401 (дата обращения: 20.08.2021). 18 СПО Аккорд-X К [Электронный ресурс]. URL: https://www.okbsapr.ru/products/accord/spo-accord-x-k/ (дата обращения: 30.08.2021).

RkJQdWJsaXNoZXIy Mzk4NzYw