Google은 널리 배포된 C 라이브러리를 Rust로 다시 작성하기 위해 Gemini를 사용하는 파일럿 프로젝트를 완료했으며, 그 실험은 아무도 계획하지 않은 방식으로 성과를 거두었습니다. 회사가 GIF 처리 라이브러리 giflib의 AI 생성, 메모리 안전 재작성으로 프로덕션 시스템을 마이그레이션한 직후 CVE-2026-26740이 할당된 원본 C 코드에서 새로운 범위를 벗어난 힙 쓰기 취약점이 공개되었습니다. Google 시스템은 이미 면역되어 있었습니다.
회사는 패치가 아닌 아키텍처를 통해 제로데이 취약점을 효과적으로 무력화했습니다. Google 보안 엔지니어링 팀이 Bug Hunters 블로그 게시물에서 설명했듯이 팀은 재작성을 수행하는 동안 보류 중인 공개에 대해 전혀 알지 못했습니다. 보호는 메모리에 안전하지 않은 코드를 제거하는 데 따른 구조적 부작용이었습니다. AI가 AI 연구 및 엔지니어링을 어떻게 재편하고 있는지 자세히 알아보려면 AI Buzz Wire를 팔로우하세요.
지금 메모리 안전이 중요한 이유
Google의 자체 연구에 따르면 메모리 안전 취약점은 C 및 C++ 코드베이스 취약점의 약 70%를 차지합니다. 타사 라이브러리는 신뢰할 수 없는 데이터를 정기적으로 구문 분석하기 때문에 특히 약점이 됩니다. 동시에 취약점 발견과 무기화 사이의 간격은 계속 줄어들고 있습니다. 공격자는 AI의 도움을 받아 기존 패치 주기보다 더 빠르게 이동합니다.
Google은 오랫동안 Rust와 같이 메모리에 안전한 언어를 우선시하는 '안전 코딩' 전략을 옹호해 왔습니다. 해결되지 않은 문제는 단순히 삭제할 수 없는 방대한 C 및 C++ 종속성 설치 기반입니다. 파일럿은 직접적인 질문을 했습니다. LLM이 어떤 것도 손상시키지 않고 이러한 종속성을 Rust로 신속하게 변환할 수 있습니까?
대상: giflib
Google은 원래 Eric S. Raymond가 개발하여 널리 사용되는 GIF 이미지 처리 라이브러리인 giflib를 선택했습니다. 라이브러리는 첫 번째 시도에 이상적인 복잡성 프로필을 제공했습니다. 즉, 약 3,000줄의 코드, SIMD 또는 어셈블리 최적화 없음, 안정적인 코드베이스가 있었습니다. 결정적으로, giflib은 샌드박스가 적용되지 않은 환경에서 신뢰할 수 없는 데이터를 처리하는 경우가 많습니다. 이는 바로 보안 팀이 가장 걱정하는 공격 표면 유형입니다.
목표는 야심적이었습니다. 종속 서비스를 중단하지 않고 Google의 프로덕션 인프라 전체에 배포할 수 있는 메모리 안전하고 ABI 호환 드롭인 대체 제품을 만드는 것입니다. 라이브러리 로직의 초기 번역은 LLM 지원을 통해 신속하게 완료되었지만 팀은 결정적인 것으로 입증된 두 가지 요구 사항을 표시했습니다. 즉, FFI 경계의 신중한 관리(포인터 수명 주기 및 기존 C 호출자와의 인터페이스에서 Rust의 소유권 의미 체계), 그리고 Google이 "보안의 사회적 구성 요소"라고 부르는 것, 즉 AI 생성 재작성을 중요한 서비스에 배포하는 데 필요한 인간의 신뢰입니다.
검증 건틀릿
프로덕션 신뢰를 얻기 위해 Rust 구현은 철저한 테스트를 거쳤습니다.
- 대량 회귀 테스트: 3천만 개가 넘는 실제 GIF 데이터 세트에 대해 검증되어 원래 구현과 동일한 출력을 확인했습니다.
- 차등 퍼징: 원본과 Rust의 Fuzzer는 논리 편차를 찾지 못한 채 6일 이상 2억 번 이상 반복하여 지속적으로 실행되었습니다.
- 적대적 AI 검토: 기존 테스트에서 놓칠 수 있는 두 코드베이스 간의 미묘한 동작 차이를 찾기 위해 특수 LLM 프롬프트가 사용되었습니다.
파이프라인은 배포 전에 그 가치가 입증되었습니다. 이는 LZW 디코더의 극단적인 사례를 식별했으며, 특히 팀이 Rust 재작성에서 수정한 원래 C 소스에 대한 Google 내부 레거시 패치에 의해 도입된 기존의 범위를 벗어난 쓰기 취약점을 발견했습니다.
성능은 저하되지 않았습니다
메모리 안전 언어에 대한 일반적인 반대는 런타임 범위 확인 비용입니다. Google이 글로벌 이미지 처리 서비스를 모니터링한 결과 Rust 구현은 C 원본에 비해 성능 중립적인 것으로 나타났습니다. 회사는 Rust 마이그레이션에서 반복적으로 관찰한 결과입니다.
뜻밖의 보너스가 있었습니다. Rust 라이브러리는 구조상 메모리에 안전하므로 Google은 이전에 일부 프로덕션 서비스에서 C 라이브러리를 격리하는 데 필요했던 리소스 집약적인 샌드박싱을 해제할 수 있었습니다. 이러한 아키텍처 단순화로 인해 이미지 디코딩 작업의 꼬리 대기 시간이 크게 감소했습니다.
오픈 소스 — 정직한 주의 사항
Google은 Rust 재작성을 github.com/google/giflib-rs에 게시했으며 그 결과를 커뮤니티에 다시 제공하고 있습니다. 또한 이 회사는 Trifecta Tech Foundation이 zlib를 Rust로 수동으로 재작성하여 상당한 성능 향상을 이루는 등 사람이 주도하는 보완적인 노력을 광범위한 솔루션 생태계의 일부로 인정합니다.
주의 사항은 주목할 가치가 있습니다. 재작성에는 동작 동등성을 검증하기 위해 대량의 실제 데이터 또는 강력한 기존 테스트 스위트가 필요하며, 언어를 변경하여 업스트림 프로젝트에서 벗어나면 특히 활성 개발 중인 종속성의 경우 실제 유지 관리 비용이 발생합니다. 즉, AI 지원 번역은 속도를 높이지만 엔지니어링 판단을 대체하지는 않습니다.
더 큰 그림
파일럿은 LLM이 코드 제안뿐만 아니라 대규모로 구조적 보안 개선을 제공할 수 있다는 가장 명확한 시연 중 하나입니다. Google은 LLM 기반 번역의 속도와 차등 테스트 및 안전 경계에 대한 전문가의 검토를 결합함으로써 다음에 어떤 특정 CVE가 등장할지 알기 전에 모든 종류의 취약점을 프로덕션 인프라에서 폐기할 수 있다고 주장합니다.
출처: Google Bug Hunters 블로그, "메모리 안전성 확장: Rust에 대한 C/C++ 종속성의 AI 지원 재작성"
---
AI보다 앞서 나가세요최신 AI 뉴스, 분석, 획기적인 소식을 모두 한 곳에서 받아보세요.
AI 뉴스 자세히 보기 →