Google также делает ставку на Rust и объявляет о его включении в Chromium

Chromium

Rust также прибыл на Chromium

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

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

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

Решение было предпринято как часть инициативы по предотвращению появления ошибок памяти в кодовой базе Chrome. Согласно статистике, предоставленной два года назад, 70% критических и опасных проблем с безопасностью в Chromium связаны с ошибками памяти.

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

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

Использование Rust упростит и сделает более безопасным применение «правила действия», которое Google использует для обеспечения безопасности своей кодовой базы.

Согласно этому правилу, любой добавляемый вами код не должен соответствовать более чем двум из трех условий: работать с непроверенными входными данными, использовать небезопасный язык программирования (C/C++) и выполняться с повышенными привилегиями. Из этого правила следует, что код для работы с внешними данными должен быть сведен к минимальным привилегиям (изолирован) или написан на безопасном языке программирования.

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

Чтобы упростить интеграцию Код Rust с существующим кодом C++ и избегайте рисков и ограничений, связанных с интеграцией, в настоящее время было принято решение ограничить одностороннее взаимодействие: вызов Rust из C++ (т. е. код Rust можно вызывать только из кода C++) через функции API, но не в сочетании с кодом C++), что также будет держать дерево зависимостей под контролем.

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

В дополнение к использованию Rust для блокировки эксплойтов использования уязвимостей использования после освобождения памяти, начиная с выпуска Chrome 102, код C++ вместо этого начал использовать тип MiraclePtr (raw_ptr) Ordinary, который предоставляет перехватчик указателя, который выполняет дополнительные проверки для доступа к освобожденной памяти. области памяти и блоки, если такие обращения обнаружены.

Влияние нового метода защиты на производительность и потребление памяти оценивается как незначительное.

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

В систему сборки уже добавлены инструменты для компиляции кода Rust, запуска тестов и интеграции компонентов Rust с кодом C++. Ожидается, что код Rust появится в составе релизов Chrome в следующем году.

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


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

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

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