Google DeepMind CodeMender AI 에이전트: 코드 보안

Google DeepMind는 CodeMender를 도입했으며, 이는 소프트웨어 취약점을 자동으로 발견하고 수정하도록 설계된 AI 기반 에이전트입니다. CodeMender는 AI 기반 취약점 발견 속도와 인간이 이러한 결함을 패치하는 능력 사이의 격차가 커지는 문제를 해결하고, 새로운 취약점에 대한 반응형 패치와 기존 코드를 사전적으로 재작성하여 전체 보안 위험군을 제거하는 기능을 제공합니다.

자동 취약점 패치

CodeMender는 Gemini Deep Think 모델의 추론 능력을 활용하여 복잡한 보안 취약점을 디버깅하고 수정할 수 있는 자율 에이전트로 작동합니다. 패치의 신뢰성을 보장하기 위해 에이전트는 견고한 검증 프로세스를 적용하여 인간 검토를 위해 고품질 패치만을 제시합니다—특히 근본 원인을 해결하고 기능적 정확성을 유지하며 회귀를 방지하고 스타일 가이드라인을 준수하는 패치입니다.

기술 도구 및 분석

CodeMender는 여러 고급 프로그램 분석 도구를 통합하여 코드 패턴, 데이터 흐름 및 제어 흐름을 체계적으로 검토합니다:

  • Advanced Program Analysis: 에이전트는 정적 분석, 동적 분석, 차등 테스트, 퍼징, 그리고 SMT 솔버를 사용하여 아키텍처상의 약점과 보안 결함의 근본 원인을 식별합니다.
  • Multi-Agent Systems: CodeMender는 다양한 작업을 위해 특화된 에이전트를 활용합니다. 여기에는 원본 코드와 수정된 코드를 비교하여 변경 사항이 회귀를 일으키지 않음을 검증하고 에이전트가 스스로 교정할 수 있게 하는 LLM 기반 비평 도구가 포함됩니다.

근본 원인 분석 및 복합 패치

CodeMender는 크래시 보고서에서 즉시 드러나지 않는 근본 원인을 식별할 수 있습니다. 예를 들어, 한 사례에서는 크래시 보고서가 힙 버퍼 오버플로우를 나타냈지만, CodeMender는 실제 근본 원인이 파싱 중 XML 요소의 스택 관리 오류임을 밝혀냈습니다. 또한 에이전트는 프로젝트 내에서 C 코드를 생성하는 맞춤 시스템을 수정하는 등 비정형적인 패치를 만들 수 있습니다.

사전적 코드 보안 및 재작성

반응형 패치를 넘어, CodeMender는 기존 코드를 사전적으로 재작성하여 보다 안전한 데이터 구조와 API를 구현합니다.

경계 안전성 구현

CodeMender는 -fbounds-safety 주석을 libwebp 이미지 압축 라이브러리에 적용하도록 배치되었습니다. 이러한 주석은 컴파일러가 경계 검사를 추가하도록 하여 공격자가 버퍼 오버플로나 언더플로를 이용해 임의 코드를 실행하는 것을 방지합니다.

DeepMind는 이전에 libwebp에서 발생한 힙 버퍼 오버플로우(CVE-2023-4863)가 제로 클릭 iOS 익스플로잇에 사용되었지만, 이러한 주석이 적용되어 있었다면 악용이 불가능했을 것이라고 언급합니다.

반복적 자체 교정

사전적 재작성 과정에서 CodeMender는 자체 주석으로 인해 발생한 컴파일 오류와 테스트 실패를 자동으로 수정할 수 있습니다. 기능적 동등성을 위해 설정된 LLM 판정 도구를 사용해 기능이 유지되는지 확인하며, 실패가 감지되면 에이전트는 피드백을 기반으로 스스로 교정합니다.

배포 및 오픈소스 영향

CodeMender는 이미 오픈소스 프로젝트에 72개의 보안 수정 사항을 upstream(업스트림)했으며, 그 중 일부는 최대 450만 라인의 코드를 포함하고 있습니다.

보안과 신뢰성을 유지하기 위해 Google DeepMind는 신중한 배포 전략을 따르고 있습니다:

  • Human-in-the-Loop: CodeMender가 생성한 모든 패치는 현재 인간 연구원에 의해 검토된 후 upstream에 제출됩니다.
  • Community Engagement: 연구실은 제출을 점진적으로 확대하고 있으며, 핵심 오픈소스 프로젝트 유지보수자와 소통하여 커뮤니티 피드백을 기반으로 반복 작업을 진행하고 있습니다.
  • Future Availability: 장기 목표는 CodeMender를 모든 소프트웨어 개발자가 자신의 코드베이스를 보호할 수 있도록 제공하는 도구로 출시하는 것입니다.

Sources