В кодовой базе Chromium разрешено использование языка Rust
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Компания Google объявила о включении языка программирования Rust в число языков, допустимых в коде проекта Chromium. Существующий код пока не планируют переписывать на Rust, но отныне будет разрешена интеграция в кодовую базу сторонних библиотек, написанных на Rust. В сборочную систему уже добавлен инструментарий для компиляции кода на языке Rust, проведения тестов и интеграции компонентов на Rust с кодом на C++. Появление кода на Rust в составе выпусков Chrome ожидается в следующем году.
К претендующим на интеграцию в кодовую базу Chromium сторонним библиотекам на Rust предъявляется ряд требований, например, библиотека должна превосходить аналоги по скорости, потреблению памяти и стабильности или быть единственной реализацией определённой технологии. Библиотеки на Rust также допустимо использовать когда функциональность может выполняться в привилегированном процессе или когда использование библиотеки даёт возможность снизить риск возникновения ошибок по сравнению с другими библиотеками или кодом на C++. Какие именно библиотеки могут войти в состав Chromium пока не решено.
Решение принято в рамках инициативы по предотвращению появления ошибок работы с памятью в кодовой базе Chrome. Судя по предоставленной два года назад статистике 70% опасных и критических проблем с безопасностью в Chromium вызваны ошибками при работе с памятью. Применение языка Rust, который сфокусирован на безопасной работе с памятью и обеспечивает автоматическое управление памятью, позволит снизить риск появления уязвимостей, вызванных такими проблемами как обращение к области памяти после её освобождения и выход за границы буфера.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Применение Rust даст возможность добиться более простого и безопасного соблюдения "правила двух", применяемого Google для поддержания безопасности кодовой базы. В соответствии с данным правилом любой добавляемый код должен подпадать не больше, чем под два условия из трёх: работа с непроверенными входными данными, использование небезопасного языка программирования (C/C++) и выполнение с повышенными привилегиями. Из этого правила следует, что код для обработки внешних данных должен либо быть урезан до минимальных привилегий (изолирован), либо быть написан на безопасном языке программирования.
В случае с Rust, который изначально разрабатывался с оглядкой на использование в браузере, интеграция с существующем кодом может быть произведена без применения IPC и с меньшими усложнениями организации защиты от ошибок при работе с памятью, что позволит ускорить процесс разработки (требуется писать меньше кода и проводить более простое рецензирование) и снизить число связанных с безопасностью ошибок.
Для упрощения интеграции кода на Rust с существующим кодом на C++ и обхода связанных с интеграцией рисков и ограничений, в настоящее время решено ограничиться однонаправленным взаимодействием - обращением из С++ к Rust (т.е. код на Rust может лишь вызываться из кода C++ через функции API, но не смешиваться с кодом на C++), что также даст возможность держать под контролем дерево зависимостей. Вторым ограничением является поддержка только сторонних библиотек, поставляемых в форме отдельных компонентов, не привязанных к Chromium и имеющих API, ориентированный на выполнение конкретных задач.
Кроме применения Rust для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти (use-after-free), начиная с выпуска Chrome 102 в коде на С++ вместо обычных указателей началось применение типа MiraclePtr (raw_ptr). MiraclePtr предоставляет обвязку над указателями, выполняющую дополнительные проверки обращения к освобождённым областям памяти и аварийно завершающую работу в случае обнаружения подобных обращений. Влияние нового метода защиты на производительность и потребление памяти оценивается как незначительное.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://security.googleblog.co...)
- OpenNews: 70% проблем с безопасностью в Chromium вызваны ошибками при работе с памятью
- OpenNews: Фронтэнд для языка Rust доведён до готовности к интеграции в GCC 13
- OpenNews: Около 21% нового компилируемого кода в Android 13 написано на языке Rust
- OpenNews: Rust включён в число основных языков для разработки платформы Android
- OpenNews: Разработчики Chrome экспериментируют с языком программирования Rust
Похожие новости:
- Уязвимость в пакетном менеджере Cargo, применяемом в экосистеме Rust
- Уязвимость в приложениях на базе HTTP-библиотеки Hyper
- Выпуск языка программирования Rust 1.66
- Фронтэнд для языка Rust доведён до готовности для интеграции в GCC 13
- Выпуск Buttplug 6.2, открытой библиотеки для управления внешними устройствами
- Выпуск Arti 1.1, официальной реализации Tor на языке Rust
- Доступен Wasmer 3.0, инструментарий для создания приложений на базе WebAssembly
- Выпуск операционной системы Redox OS 0.8, написанной на языке Rust
- Открытый драйвер Rusticl сертифицирован на совместимость с OpenCL 3.0
- АНБ рекомендует переходить на языки программирования, безопасно работающие с памятью
Теги для поиска: #_rust, #_chrome, #_chromium
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 17:52
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Компания Google объявила о включении языка программирования Rust в число языков, допустимых в коде проекта Chromium. Существующий код пока не планируют переписывать на Rust, но отныне будет разрешена интеграция в кодовую базу сторонних библиотек, написанных на Rust. В сборочную систему уже добавлен инструментарий для компиляции кода на языке Rust, проведения тестов и интеграции компонентов на Rust с кодом на C++. Появление кода на Rust в составе выпусков Chrome ожидается в следующем году. К претендующим на интеграцию в кодовую базу Chromium сторонним библиотекам на Rust предъявляется ряд требований, например, библиотека должна превосходить аналоги по скорости, потреблению памяти и стабильности или быть единственной реализацией определённой технологии. Библиотеки на Rust также допустимо использовать когда функциональность может выполняться в привилегированном процессе или когда использование библиотеки даёт возможность снизить риск возникновения ошибок по сравнению с другими библиотеками или кодом на C++. Какие именно библиотеки могут войти в состав Chromium пока не решено. Решение принято в рамках инициативы по предотвращению появления ошибок работы с памятью в кодовой базе Chrome. Судя по предоставленной два года назад статистике 70% опасных и критических проблем с безопасностью в Chromium вызваны ошибками при работе с памятью. Применение языка Rust, который сфокусирован на безопасной работе с памятью и обеспечивает автоматическое управление памятью, позволит снизить риск появления уязвимостей, вызванных такими проблемами как обращение к области памяти после её освобождения и выход за границы буфера. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. Применение Rust даст возможность добиться более простого и безопасного соблюдения "правила двух", применяемого Google для поддержания безопасности кодовой базы. В соответствии с данным правилом любой добавляемый код должен подпадать не больше, чем под два условия из трёх: работа с непроверенными входными данными, использование небезопасного языка программирования (C/C++) и выполнение с повышенными привилегиями. Из этого правила следует, что код для обработки внешних данных должен либо быть урезан до минимальных привилегий (изолирован), либо быть написан на безопасном языке программирования. В случае с Rust, который изначально разрабатывался с оглядкой на использование в браузере, интеграция с существующем кодом может быть произведена без применения IPC и с меньшими усложнениями организации защиты от ошибок при работе с памятью, что позволит ускорить процесс разработки (требуется писать меньше кода и проводить более простое рецензирование) и снизить число связанных с безопасностью ошибок. Для упрощения интеграции кода на Rust с существующим кодом на C++ и обхода связанных с интеграцией рисков и ограничений, в настоящее время решено ограничиться однонаправленным взаимодействием - обращением из С++ к Rust (т.е. код на Rust может лишь вызываться из кода C++ через функции API, но не смешиваться с кодом на C++), что также даст возможность держать под контролем дерево зависимостей. Вторым ограничением является поддержка только сторонних библиотек, поставляемых в форме отдельных компонентов, не привязанных к Chromium и имеющих API, ориентированный на выполнение конкретных задач. Кроме применения Rust для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти (use-after-free), начиная с выпуска Chrome 102 в коде на С++ вместо обычных указателей началось применение типа MiraclePtr (raw_ptr). MiraclePtr предоставляет обвязку над указателями, выполняющую дополнительные проверки обращения к освобождённым областям памяти и аварийно завершающую работу в случае обнаружения подобных обращений. Влияние нового метода защиты на производительность и потребление памяти оценивается как незначительное. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 17:52
Часовой пояс: UTC + 5