C에서 안전한 Rust로의 언어 인터프리터 대부분 자동 번역
요약
C 언어로 작성된 인터프리터를 안전한 Rust 언어로 자동 번역하는 기술인 Reboot을 소개합니다. 기능 축소 방식과 멀티 에이전트 아키텍처를 결합하여 최소한의 인간 개입만으로 메모리 취약점이 제거된 고품질의 Rust 코드를 생성합니다.
핵심 포인트
- C에서 Rust로의 자동 번역 기술 Reboot 제시
- 기능 축소(Feature Reduction)를 통한 단계적 번역 및 검증
- 멀티 에이전트 아키텍처를 활용한 자동화된 피드백 루프
- 번역된 코드에서 힙 버퍼 오버플로 등 메모리 취약점 제거 확인
- 실제 인터프리터 6종에 대해 높은 테스트 통과율 달성
C 프로그램을 안전한 Rust로 번역하는 것은 타입 제약(typing constraints), 소유권(ownership), 그리고 빌림 규칙(borrowing rules)의 상당한 차이로 인해 매우 어렵습니다. 인터프리터(Interpreter) 프로그램은 신뢰할 수 없는 입력을 처리하는 경우가 많고 메모리 관련 취약점에 노출되기 쉽기 때문에, 이러한 번역의 특히 중요한 대상입니다. 우리는 실제 세계의 인터프리터 프로그램을 C에서 안전한 Rust로 번역하는 대부분 자동화된 기술인 Reboot을 제시합니다. Reboot을 사용하여 6k에서 23k 라인의 C 코드로 구성된 6개의 인터프리터를 안전한 Rust로 번역하였으며, 각 번역에는 단 1회에서 11회의 짧은 사용자 개입만이 필요했습니다. 모든 번역은 제공된 테스트 스위트(test suites)를 100% 통과하였으며, 시스템에 노출된 적 없는 별도로 생성된 검증 테스트(validation tests)에서는 62%--92%의 통과율을 달성했습니다. mujs에 대한 보안 사례 연구는 C에 존재하는 힙 버퍼 오버플로(heap buffer overflows) 및 use-after-free와 같은 메모리 취약점이 안전한 Rust 번역에서 제거됨을 보여줍니다. Reboot은 두 가지 아이디어를 기반으로 합니다. 첫째, 기능 축소(feature reduction)는 프로그램 기능별로 번역을 분해하여, 각각이 완전하고 테스트 가능한 프로그램인 일련의 마일스톤(milestones)을 생성합니다. 번역은 가장 단순한 버전에서 시작하여 점진적으로 기능을 복구하며, 각 마일스톤은 다음 단계로 넘어가기 전에 검증됩니다. 둘째, 멀티 에이전트 아키텍처(multi-agent architecture)는 자동화된 검증과 피드백을 통해 본질적으로 신뢰할 수 없는 코딩 에이전트들을 조율하며, 최소한의 인간 개입으로 장기적인 번역 워크플로가 궤도를 유지하도록 합니다. 어블레이션 연구(ablation study)를 통해 기능 축소가 멀티 에이전트 번역만을 사용하는 것에 비해 번역 정확도를 향상시키며, 검증 테스트 스위트에서 통과율이 6%--20% 개선됨을 확인했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기