Новости От C к Rust за два клика: представлен автоматический преобразователь программного кода

NewsMaker

I'm just a script
Премиум
14,671
22
8 Ноя 2022
Инновационная разработка кардинально меняет подход к безопасному программированию.


orsv8bvb7fknnhbxwgqzndlod9f5dpvr.jpg


Учёные из французского научно-исследовательского центра Inria совместно с компанией Microsoft Для просмотра ссылки Войди или Зарегистрируйся автоматизированного преобразования кода на языке C в безопасный код на Rust , стремясь удовлетворить растущий спрос на безопасность памяти.

Язык программирования C, созданный в 1970-х годах, стал основой множества критически важных систем, приложений и библиотек, включая ядро Linux. Однако C, как и его логичное продолжение в лице C++, не гарантирует безопасность памяти. Его ручное управление памятью, хоть и обеспечивает гибкость и эффективность, но подвержено ошибкам, таким как выход за пределы массива (out-of-bounds) или использование после освобождения (use-after-free).

Эти ошибки составляют значительную часть уязвимостей программного обеспечения. Например, в 2019 году они составляли 76 % уязвимостей в Android, однако благодаря использованию Rust и безопасного кода этот показатель снизился до 24 % в 2024 году.

Rust позволяет писать как безопасный, так и небезопасный код, оставляя выбор за разработчиком. В отличие от него, C и C++ требуют значительных усилий, таких как статический анализ и тестирование, чтобы приблизиться к безопасности памяти, но не предоставляют её изначально.

В последние годы наблюдается активная поддержка перехода на языки с встроенной безопасностью памяти, такие как Rust, Go, Python и Java. Несмотря на это, часть программистов продолжает искать способы использовать C и C++ безопасно, избегая перехода на Rust. Google, активно продвигая Rust, также признаёт, что C и C++ останутся в обиходе на долгие годы.

Среди попыток повысить безопасность C выделяются проекты, такие как TrapC и Fil-C. Первый разрабатывает подход к подмножеству языка, а второй, хотя и обеспечивает безопасность, снижает производительность и не поддерживает полную совместимость с двоичным интерфейсом приложений.

Исследование под названием Для просмотра ссылки Войди или Зарегистрируйся , подготовленное учёными Аймериком Фромерцом (Inria) и Джонатаном Протценко (Microsoft), предлагает альтернативный подход. Они сосредоточились на переводе кода, формально проверенного для использования в промышленности, в безопасный Rust. Для этого создано подмножество языка C под названием Mini-C, которое избегает сложных для перевода конструкций, таких как арифметика указателей и неявная изменяемость.

Применяя Mini-C через компилятор KaRaMeL, разработчики достигают автоматического преобразования кода в безопасный Rust. Например, библиотека криптографии HACL, состоящая из 80 000 строк кода, была переведена с минимальными изменениями. А библиотека сериализаторов EverParse, содержащая 1 400 строк кода, была преобразована и вовсе без изменений. Производительность полученного Rust-кода осталась на уровне исходного C, несмотря на добавление дополнительных проверок и прочих улучшений.

Плоды работы исследователей уже используются в реальных приложениях, связанных с безопасностью. Например, Rust-версия HACL недавно была интегрирована в библиотеки Mozilla NSS и OpenSSH.
 
Источник новости
www.securitylab.ru

Похожие темы