Google открыл систему для создания сред песочницы для C / C ++

Google

Несколько дней тому назад Google объявила об открытии проекта Sandboxed APIчто Позволяет автоматизировать процесс создания песочницы для изолированного выполнения произвольных библиотек на языках C и C ++.

Изоляция вашего кода от библиотек позволяет защитить от возможных атак на ручки, предоставляемые библиотеками, создавая дополнительный барьер на случай, если в вашем коде есть уязвимости, которые могут быть использованы путем манипуляций с внешними данными, поступающими в библиотеку. Код открыт под лицензией Apache 2.0.

Изоляцияили это делается с использованием среды выполнения Sandbox2, в котором используются пространства имен, контрольные группы и seccomp-bpf.

Код, доставленный в песочницу, выполняется в отдельном процессе, для которого доступ к системным вызовам и ресурсам, а также файлы и сетевые подключения ограничены.

Процессы получают доступ только к системным возможностям, которые напрямую требуются для выполнения изолированного кода.

Sandbox2 определяет компоненты для запуска процессаили примените правила изоляции и поддержите последующее выполнение.

Песочница2 его можно использовать отдельно от Sandbox API для изоляции не только библиотек, но и произвольных процессов.

Помимо повышения защиты, положительным моментом в устранении кода в отдельных процессах является возможность раздельного регулирования лимитов на потребление памяти библиотеки и ЦП, а также защита от сбоев: сбой в библиотека не приводит к сбою всего приложения.

О изолированном API

Sandboxed API - это плагин Sandbox2 что упрощает перенос существующих библиотек для работы в изолированном режиме.

Изолированный API предоставляет промежуточный программный интерфейс, который позволяет запускать код библиотеки в среде песочницы.а также организация вызова библиотеки в среде песочницы и обеспечение доставки результатов библиотеки в основную программу.

Se обращается к изолированной библиотеке через специализированный RPC, основанный на протоколе ProtoBuffs.

A разработчикам библиотеки предлагается набор опций, разрешающих доступ к переменным, файловые дескрипторы, буферы и библиотечные функции, изолированные от базового приложения, включая инструменты для автоматической и контролируемой синхронизации памяти для совместного использования массивов и структур.

sapi-обзор

Когда программная библиотека, которая анализирует такие данные, является достаточно сложной, она может стать жертвой определенных типов уязвимостей безопасности: ошибок повреждения памяти или других типов проблем, связанных с логикой анализа (например, проблем обхода пути). Эти уязвимости могут иметь серьезные последствия для безопасности.

Кроме того, Предоставляется API для мониторинга работы изолированных процессов и их перезапуска в случае сбоев.

Для изолированной библиотеки автоматически генерируется код аннотаций изолированных функций для системы сборки Bazel и программного интерфейса (SAPI) для взаимодействия между базовым и изолированным процессами.

Разработчик также должен создать файл заголовка с правилами изоляции, которые определяют все разрешенные системные вызовы и операции. (чтение, запись, открытие файлов, доступ ко времени, возможность установки обработчиков сигналов, поддержка выделения памяти через malloc и т. д.).

Файлы и каталоги, к которым у библиотеки должен быть доступ, определяются отдельно.

Установка

На данный момент проект доступен только для Linux, но в будущем обещают добавить поддержку систем macOS и BSD, а в перспективе и Windows. да вы хотите установить api с песочницей, вы можете следовать данным инструкциям по этой ссылке.

Из планов также отмечается возможность изолировать библиотеки на языках, отличных от C и C ++, дополнительная поддержка во время выполнения для изоляции (например, на основе аппаратной виртуализации) и возможность использовать CMake и другие системы сборки (поддержка теперь ограничена системой сборки Bazel).

источник: https://security.googleblog.com


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)