Хроники Chromium #5: Программирование вне «песочницы»

Эпизод 5: автор Аде, Маунтин-Вью, Калифорния (август 2019 г.)
Предыдущие серии

Chrome разделен на процессы. Некоторые из них находятся в песочнице, а это значит, что у них ограничен доступ к системе и к учетным записям пользователей. В изолированном процессе ошибки, которые позволяют запускать вредоносный код, гораздо менее серьезны.

В процессе браузера нет песочницы , поэтому ошибка может предоставить вредоносному коду полный доступ ко всему устройству. Что вам следует сделать по-другому? А как обстоят дела с другими процессами?

Диаграмма песочницы

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

В других процессах доступ к ОС ограничен ограничениями, специфичными для платформы. Дополнительную информацию см. в руководстве по реализации песочницы Chrome.

Обязательно избегайте следующих распространенных ошибок:

правило двух

  • Не анализируйте и не интерпретируйте ненадежные данные с помощью C++ в процессе браузера.
  • Не доверяйте источнику, который, как утверждает рендерер, представляет. RenderFrameHost браузера можно использовать для безопасного получения текущего источника.


Делать

Вместо этого используйте следующие рекомендации:

  • Будьте особенно параноиком, если ваш код находится в процессе браузера.
  • Проверьте все IPC из других процессов. Предположим, что все остальные процессы уже скомпрометированы и хотят вас обмануть.
  • Выполняйте обработку в средстве рендеринга, служебном процессе или каком-либо другом изолированном процессе. В идеале также используйте язык, безопасный для памяти, например JavaScript (решает более 50 % ошибок безопасности).

В течение многих лет мы запускали сетевые стеки (например, HTTP, DNS, QUIC) в процессе браузера, что приводило к некоторым критическим уязвимостям . На некоторых платформах сетевое взаимодействие теперь имеет собственный процесс, а также песочницу.

Дополнительные ресурсы

  • Правило двух Chromium : не более двух небезопасных данных, небезопасного кода и небезопасного процесса.
  • Проверка данных IPC : руководство о том, как гарантировать, что IPC процесса рендеринга не содержат выдумок и искажений.