Эпизод 5: автор Аде, Маунтин-Вью, Калифорния (август 2019 г.)
Предыдущие серии
Chrome разделен на процессы. Некоторые из них находятся в песочнице, а это значит, что у них ограничен доступ к системе и к учетным записям пользователей. В изолированном процессе ошибки, которые позволяют запускать вредоносный код, гораздо менее серьезны.
В процессе браузера нет песочницы , поэтому ошибка может предоставить вредоносному коду полный доступ ко всему устройству. Что вам следует сделать по-другому? А как обстоят дела с другими процессами?
Во всем коде есть ошибки. В процессе браузера эти ошибки позволяют вредоносному коду устанавливать программу, красть пользовательские данные, изменять настройки компьютера, получать доступ к содержимому всех вкладок браузера, данным для входа и т. д.
В других процессах доступ к ОС ограничен ограничениями, специфичными для платформы. Дополнительную информацию см. в руководстве по реализации песочницы Chrome.
Обязательно избегайте следующих распространенных ошибок:
- Не анализируйте и не интерпретируйте ненадежные данные с помощью C++ в процессе браузера.
- Не доверяйте источнику, который, как утверждает рендерер, представляет. RenderFrameHost браузера можно использовать для безопасного получения текущего источника.
Вместо этого используйте следующие рекомендации:
- Будьте особенно параноиком, если ваш код находится в процессе браузера.
- Проверьте все IPC из других процессов. Предположим, что все остальные процессы уже скомпрометированы и хотят вас обмануть.
- Выполняйте обработку в средстве рендеринга, служебном процессе или каком-либо другом изолированном процессе. В идеале также используйте язык, безопасный для памяти, например JavaScript (решает более 50 % ошибок безопасности).
В течение многих лет мы запускали сетевые стеки (например, HTTP, DNS, QUIC) в процессе браузера, что приводило к некоторым критическим уязвимостям . На некоторых платформах сетевое взаимодействие теперь имеет собственный процесс, а также песочницу.
Дополнительные ресурсы
- Правило двух Chromium : не более двух небезопасных данных, небезопасного кода и небезопасного процесса.
- Проверка данных IPC : руководство о том, как гарантировать, что IPC процесса рендеринга не содержат выдумок и искажений.