Google пренаписва критични C библиотеки на Rust с помощта на изкуствен интелект и диференциален фъзинг

Снимка: InfoQ / Google Security
Екипът по киберсигурност на Google реализира значим технологичен пробив в защитата на системния софтуер, разработвайки напълно автоматизиран метод за миграция на уязвими зависимости от езика C към безопасния Rust [1]. Като пилотен проект инженерите пренаписаха широко разпространената библиотека за обработка на графични файлове giflib, елиминирайки дългогодишни дефекти при управлението на паметта [1].
Успехът на проекта се базира на новаторска комбинация от специализирани невронни мрежи за генериране на код и строг диференциален фъзинг [1]. Изкуственият интелект не само превежда логиката на функциите ред по ред, но и я реорганизира в идиоматичен Rust код, избягвайки използването на unsafe блокове и запазвайки съвместимостта на C-базирания приложно-програмен интерфейс (ABI) [1].

Инфографика: Светни.ме
Диференциален фъзинг като гаранция за идентично поведение
Основното предизвикателство при автоматизираното пренаписване на софтуер е рискът от възникване на незабележими семантични отклонения или регресии в функционалността [1]. За да гарантира пълна еквивалентност, Google подложи оригиналната версия на C и новата реализация на Rust на милиарди паралелни тестове с дефектни и гранични файлови формати [1].
Диференциалният фъзинг сравнява системните изходи, разхода на ресурси и кодовете за грешка на двете версии при всеки отделен байт от входните данни [1]. Едва след като библиотеката на Rust доказа стопроцентово съвпадение в поведението спрямо C при десетки милиарди тестови итерации, тя бе одобрена за директно интегриране като взаимозаменяем компонент в продукционните среди на Google [1].
Стратегически план за целия технологичен сектор
Според статистиката на индустрията над 70% от всички критични уязвимости в операционните системи като Android и Windows произтичат именно от грешки при работа с паметта в C и C++ [1]. Досега пълното пренаписване на тези компоненти на Rust се считаше за икономически неоправдано поради колосалния обем от човешки инженерен труд [1].
Методологията на Google доказва, че изкуственият интелект може да автоматизира този процес с безпрецедентна прецизност [1]. Компанията планира да отвори част от инструментите си с отворен код, създавайки пътна карта за поетапно саниране на хиляди критични библиотеки в целия софтуерен свят [1].
Източници:
[1]: Google Rewrites Critical C Dependencies to Rust Using AI and Differential Fuzzing - InfoQ