Google эгзэгтэй C кодуудаа AI болон "Differential Fuzzing"-ээр Rust руу амжилттай хөрвүүллээ
Аюулгүй байдлын хувьсгал: Legacy C санг Rust руу шилжүүлсэн нь
Системийн түвшний дэд бүтцэд олон арван жил ноёрхсон C/C++ сангуудыг санах ойн аюулгүй байдлыг (memory safety) хангасан Rust хэл рүү хөрвүүлэх нь орчин үеийн программ хангамжийн инженерийн хамгийн том зорилтуудын нэг байсаар ирсэн. Гэвч сая сая мөр хуучин кодуудыг гараар дахин бичих нь асар их хугацаа, зардал, хүний нөөц шаарддаг бөгөөд шинэ алдаа гаргах өндөр эрсдэлтэй байдаг.
Google компани энэхүү түвэгтэй сорилтыг шийдэх бодит гарцыг туршиж, өөрсдийн серверийн түвшинд өргөн ашигладаг дүрс боловсруулах эгзэгтэй C сан болох giflib-ийг хиймэл оюун ухаан (Gemini) болон Differential Fuzzing аргачлалыг хослуулан бүрэн Rust руу хөрвүүлж чадсанаа зарлалаа. Уг шинэ санг giflib-rs нэрээр нээлттэй эх (open-source) болгон GitHub дээр нийтэлсэн байна.
Энэхүү кейс нь хиймэл оюун ухааныг системийн түвшний код бичихэд зүгээр нэг "туслах" төдий биш, харин автоматжуулсан хатуу шалгууртай хослуулснаар үйлдвэрлэлийн түвшний (production-grade) системүүдийг шинэчилж болохыг бодитоор баталж харууллаа.
30 сая GIF, 200 сая давталт: Differential Fuzzing хэрхэн ажиллав?
AI загваруудад кодыг нэг хэлнээс нөгөө рүү "орчуулах" даалгавар өгөхөд өнгөн талдаа ажиллаж байгаа мэт харагдах боловч нарийн логик, хязгаарын нөхцөл (edge cases), сөрөг өгөгдөл дээр гажиг үүсгэх магадлал маш өндөр байдаг. Google-ийн инженерүүд Бастиан Керстинг (Bastian Kersting), Макс Хилс (Max Hils) нар Gemini-гээр зөвхөн анхны Rust бүтцийг гаргуулаад шууд итгэсэнгүй. Тэдний амжилтын гол түлхүүр нь Differential Fuzzing байв.
Differential Fuzzing гэж юу вэ? Энэ нь яг ижил өгөгдлийг (input) анхны C сан болон шинээр бичигдсэн Rust сан хоёрт зэрэг өгч, хоёр системийн гаргаж буй үр дүн, төлөв, санах ойн үйлдлүүдийг байт бүрээр нь хооронд нь тулган шалгадаг автомат тестлэх аргачлал юм.
Google-ийн баг уг туршилтын явцад:
- 30 сая гаруй бодит GIF файлууд дээр регресс тест хийсэн.
- 6 хоногийн турш тасралтгүй 200 сая давталт бүхий differential fuzzing ажиллуулж, анхны C код болон Rust кодын хооронд ямар ч функциональ зөрүү байхгүйг баталгаажуулсан.
- Хамгийн сонирхолтой нь, энэхүү дифференциал шалгалтын явцад хуучин C кодод Google-ийн инженерүүдийн өмнө нь оруулсан байсан "out-of-bounds write" буюу буферийн хязгаар даван бичих ноцтой алдаа илэрч засагдсан байна.
Өөрөөр хэлбэл, AI болон Fuzzing-ийн хамтрал нь зөвхөн хөрвүүлээд зогсохгүй анхны санд олон жил нуугдсан түүхий алдаануудыг ч илрүүлж чаджээ.
Sandbox-оос татгалзаж, P99 Tail Latency-ийг бууруулсан нь
C болон C++ хэл дээр бичигдсэн дүрсийн сангууд (парсингийн логик) нь хакеруудын гол бай болдог. Санах ойн алдаа ашиглан хортой зургаар дамжуулан серверийг зайнаас удирдах (RCE) эрсдэлтэй тул Google дэлхий даяарх кластерууддаа GIF декод хийх үйлдлийг үйлдлийн системийн түвшний маш хүнд тусгаарлагч буюу Sandbox дотор ажиллуулдаг байв.
Харин шинэ giflib-rs санд бизнесийн бүх үндсэн логикийг unsafe түлхүүр үггүйгээр, 100% цэвэр аюулгүй Rust (safe Rust) хэлбэрээр бичсэн байна.
Санах ойн аюулгүй байдал нь хөрвүүлэгчийн түвшинд (type system & borrow checker) баталгаажсан тул платформ инженерүүд өнөөх нүсэр үйлдлийн системийн sandbox тусгаарлалтыг бүрэн халах боломжтой болсон юм. Уг тусгаарлагч давхаргыг авч хаяснаар серверийн нөөцийн ачаалал эрс хөнгөрч, ялангуяа системийн сүүлчийн хүлээгдэл буюу p99 tail latency мэдэгдэхүйц буурч хурдассан болохыг бодит кластерын телеметр мэдээлэл харуулжээ.
Drop-in Replacement ба C API-тай нийцтэй байдал
Хөгжүүлэгчдэд тулгардаг бас нэг том даваа бол шинэ сан руу шилжихэд өмнөх бүх сервисүүдийг өөрчлөх шаардлага гардаг явдал юм. giflib-rs нь энэ асуудлыг шийдвэрлэхийн тулд C Foreign Function Interface (FFI) дэмжлэгийг өөртөө багтаасан тул хуучин C код дуудаж буй ямар ч систем коддоо өөрчлөлт оруулахгүйгээр шууд залгаад ашиглах (drop-in replacement) боломжтой.
Гэхдээ энд хүний ур ухаан хамгийн чухал үүрэг гүйцэтгэсэн байна. C талаас орж ирж буй заагч (raw pointer), санах ойн амьдрах хугацаа (lifetime), олон урсгалт орчны (thread-safety) дүрэм журмыг зөв тодорхойлохын тулд Google-ийн инженерүүд safer_cffi сан болон нарийн гар ажиллагаатай аюулгүй байдлын аудит хийсэн байна. Энэ нь AI хэчнээн сайн код үүсгэсэн ч FFI зааг болон архитектурын хяналтад туршлагатай инженерүүдийн оролцоо зайлшгүй шаардлагатай хэвээр байгааг харууллаа.
Хөгжүүлэгчдийн сургамж: AI-ийн дараагийн эрин
Hacker News болон Reddit нийгэмлэгээр уг мэдээ цацагдмагц инженерүүдийн дунд өрнөсөн гол дүгнэлт нь тодорхой байна:
- Зөвхөн prompt бичих нь хангалтгүй: AI-аар кодоо хөрвүүлчихээд "ажиллаж байна" гэж найдах нь системийн түвшинд аюултай.
- Автоматжуулсан хатуу баталгаажуулалт (Verification) л бодит үнэ цэнийг бүтээнэ: Код бичих ажлыг хиймэл оюун хийж байгаа үед инженерийн үндсэн үүрэг нь хатуу шалгах тест (differential fuzzing, invariant checking) бичих рүү шилжиж байна.
Олон арван жилийн турш хуримтлагдсан legacy C/C++ дэд бүтцийг аюулгүй болгох арга зам ийнхүү тодорхой болж эхэллээ. giflib-rs бол зөвхөн эхлэл бөгөөд цаашид сүлжээний протокол, файл систем, криптограф сангуудыг энэ загвараар Rust руу хөрвүүлэх жишиг тогтох нь тодорхой болов.
Эх сурвалж: InfoQ News & Google Open Source (giflib-rs)
Сэтгэгдэл
Ачаалж байна...