Рубріки: Новини

Дослідники винайшли спосіб автоматичного перетворення коду C на безпечний Rust

Дмитро Сімагін

Дослідник Еймерік Фромгерц з компанії Inria та науковий співробітник Джонатан Проценко з Azure Research (Microsoft) винайшли спосіб автоматичного перетворення коду C на безпечний код Rust. Він полягає у створенні підмножини C під назвою Mini-C, яка уникає типових шаблонів C і таких функцій, як арифметика вказівників і неявна змінність. Саме через них код С не можна було перекласти на Rust з дотриманням усіх вимог до безпеки, пише The Register.

У статті під назвою «Compiling C to Safe Rust, Formalized» Фромгерц і Проценко пропонують альтернативу автоматичним схемам перетворення C-to-Rust, які створюють небезпечний Rust. 

«Замість того, щоб автоматично перекладати C у його повній загальності на небезпечну версію Rust і намагатися зробити отриманий код безпечнішим, ми націлюємося на дані, аплікативну підмножину C. Тому наш процес перекладу є напівактивним: користувачам, можливо, доведеться виконати мінімальні коригування вихідної програми на C, щоб відповідати підмножині підтримуваних мов. Але наш підхід автоматично створює справді безпечний код Rust», — пояснюють вчені.

Використання Mini-C за допомогою фреймворку компілятора KaRaMeL створює безпечний код Rust із застереженням, що після цього може знадобитися деякий рефакторинг.

Свій метод вчені перевірили на криптографічній бібліотеці HACL* (High-Assurance Crypto Library), яка складається з 80 000 рядків коду C, і на EverParse, перевіреній бібліотеці засобів форматування та серіалізації, яка складається з 1400 рядків C. В обох випадках код Rust продемонстрував такий самий профіль продуктивності, як і оригінальний код C, незважаючи на додавання Pointer metadata і перевірок меж виконання.

Останні статті

Brave1 продовжили прийняття заявок на конкурс Battle Proven для deftech-стартапів

Кластер Brave1 продовжив прийняття заявок на конкурс Battle Proven — тепер податися можна до 25 липня 2025 року. Про це…

21.07.2025

Експериментальна LLM-модель OpenAI досягла рівня переможця Міжнародної математичної олімпіади

Експериментальна модель OpenAI досягла рівня золотої медалі на Міжнародній математичній олімпіаді (IMO), вирішивши п'ять із…

21.07.2025

JetBrains переводить всі продукти IntelliJ IDEA на єдиний інсталятор

Компанія JetBrains повідомила, що всі програмні продукти серії IntelliJ IDEA відтепер переходять на єдиний уніфікований…

21.07.2025

Українські кіберфахівці викрили намагання росіян використати LLM-модель для атак на держустанови

Команда реагування на комп'ютерні надзвичайні ситуації України (CERT-UA) розкрила деталі фішингової кампанії, спрямованої на поширення…

21.07.2025

Hugging Face представляє AnyCoder — безкоштовний інструмент для веб-розробки без знання мов програмування

Платформа Hugging Face представляє AnyCoder — середовище для розробки веб-додатків з відкритим кодом. Новий інструмент,…

21.07.2025

Intel припинила 10-річний проект розробки власного дистрибутиву Linux

Компанія Intel оголосила про згортання проекту Clear Linux, робота над яким тривала 10 років. Метою…

21.07.2025