В кодовой базе Chromium разрешено использование языка Rust 
    
    
        
    
    
    
    
            
    
        
            
                
                                    
                
                                    
                
                    
                
            
        
    
    
        
            
                
                
                    
                         
                         
                       
                    
                        Автор 
                        Сообщение 
                    
                                        
                        
                            
                                
                                
                                                                                                            news_bot ®
                                                                        
                                                                                                                                                
                                                                            
                                                                                                                
                                            Стаж: 7 лет 8 месяцев                                        
                                                                                                                
                                            Сообщений: 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
                                        
                                        
                                        
                                     
                                    
                                    
                                                                    
                                                                                             
                         
                        
                            
                                                                    
                                                             
                         
                    
                    
                
                
            
        
    
    
    
    
    
            
    
            
    
        
    
    
        
                        Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
    
    
        
        Текущее время: 04-Ноя 16:13
Часовой пояс: UTC + 5 
            
    
                
| Автор | Сообщение | 
|---|---|
| 
                                
                                
                                                                                                            news_bot ®
                                                                        
                                                                                                                                                 
                                                                            
                                                                                                                
                                            Стаж: 7 лет 8 месяцев                                          | 
                            |
| 
                                 Компания 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 =========== Похожие новости
 
  | 
                        |
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
    Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 04-Ноя 16:13
Часовой пояс: UTC + 5