CodeMender 개요

고급 AI 모델의 출시로 인해 코드 취약점에 대한 우려가 널리 퍼졌습니다. 공격자가 익스플로잇을 생성하는 새로운 기능을 이용할 수 있게 되면서 보안팀은 공격자가 이를 악용하기 전에 취약점을 선제적으로 찾아 수정해야 한다는 엄청난 시간적 압박을 받고 있습니다.

CodeMender는 코드베이스의 심층적인 취약점을 찾아내고, 검증하고, 수정할 수 있는 AI 코드 보안 에이전트입니다. CodeMender는 Google DeepMind에서 설계한 프롬프트, 기술, 오케스트레이션 로직을 사용하여 LLM을 감싸는 세밀하게 조정된 하네스를 사용하여 모델을 코드 보안에 특화된 에이전트 시스템으로 전환합니다.

작동 방식

CodeMender는 코드가 여러 언어와 시스템 유형에 걸쳐 있는 최신 기업 환경의 규모와 다양성을 처리합니다.

  • 에이전트의 안내를 받는 LLM을 사용하여 코드베이스를 스캔하고, 전문 도구와 프롬프트 엔지니어링을 활용하여 모델이 보안 결함에 집중하도록 함으로써 취약점을 찾습니다. 또는 외부 보안 스캔 도구에서 취약점 목록을 가져올 수 있습니다.
  • 코드를 빌드하고 발견된 취약점을 악용하여 취약점이 악용 가능한지 확인하여 취약점을 확인합니다. 이를 통해 확인된 취약점의 우선순위를 지정하고 거짓양성률을 줄일 수 있습니다.
  • 코드베이스의 언어와 호환되는 패치를 생성하고 테스트하여 취약점을 수정합니다.

세 단계 모두에서 CodeMender에 컨텍스트를 제공하여 애플리케이션과 위협 모델의 미묘한 차이를 고려하도록 할 수 있습니다. LLM과 CodeMender의 미세 조정된 하네스를 함께 사용하면 LLM만 사용하여 취약점을 찾아 수정하는 것보다 더 높은 품질의 결과를 얻을 수 있습니다.

시스템 아키텍처

사용자 관점에서 CodeMender 시스템은 다음 두 가지 구성요소로 구성됩니다.

  • 에이전트: 핵심 비즈니스 로직과 추론을 실행하는 호스팅 멀티 에이전트 시스템입니다.
  • 클라이언트: 머신에서 실행되는 클라이언트로, CLI (명령어를 실행하고 출력을 확인)와 데몬 (에이전트를 대신하여 명령어를 실행하며, 로컬 프로세스 수준 샌드박스 내에서 선택적으로 격리하여 코드를 안전하게 컴파일하고 테스트를 실행하며 취약점을 확인) 역할을 모두 수행합니다.

지원되는 언어 및 프레임워크

CodeMender는 기본적으로 C/C++, C# / .NET, Go, Java, JavaScript 및 TypeScript, Kotlin, Python, Ruby, Rust, PHP를 지원합니다. 또한 이러한 언어 내의 표준 라이브러리뿐만 아니라 일반적인 엔터프라이즈 프레임워크 (예: HTML/CSS, Django, Flask, React, Spring Boot, ASP.NET, Express)에 대한 광범위한 지원을 제공합니다.

나열된 프로그래밍 언어는 엄격한 제한이 아닙니다. CodeMender는 AI 코드 보안 에이전트이므로 기본 모델에서 이해하는 모든 언어로 코드를 분석하고 수정할 수 있습니다. 지원되는 언어는 일반적으로 독점 언어가 아닙니다.

추가 프로그래밍 언어 스캔

다음 방법 중 하나로 CodeMender가 기본 세트에 없는 프로그래밍 언어를 검사하도록 구성할 수 있습니다.

  • 전역 구성: 프로그래밍 언어의 파일 확장자를 전역 CodeMender ~/.codemender/config.yaml 구성 파일의 scan.extensions.include 섹션에 추가합니다.
  • 저장소별 구성: 프로그래밍 언어의 파일 확장자를 저장소에 있는 CodeMender config.yaml 구성 파일의 scan.extensions.include 섹션에 추가합니다.

예를 들어 추가 언어 또는 스크립트 형식을 스캔하려면 다음 단계를 따르세요.

scan:
  extensions:
    include:
      # Default languages
      - .py
      - .java
      - .go
      - .js
      - .jsx
      - .mjs
      - .cjs
      - .ts
      - .tsx
      - .c
      - .cc
      - .cpp
      - .cxx
      - .h
      - .hpp
      - .cs
      - .rs
      - .kt
      - .kts
      - .rb
      - .php
      # Additional / custom languages
      - .swift
      - .scala
      - .sh

  # Exclude build, dependency, cache, and artifact directories
  exclude_dirs:
    - node_modules
    - vendor
    - dist
    - bin
    - target
    - obj
    - build
    - .gradle

스캔 옵션 구성에 대한 자세한 내용은 구성 매개변수 (config.yaml)를 참고하세요.

품질 참고사항

CodeMender는 공식적인 언어별 평가를 게시하지 않습니다. 기본 언어는 벤치마크가 가장 많이 적용되는 언어를 반영하며, 다른 언어의 결과는 다를 수 있습니다. 조직에서 심층 평가 또는 기본 포함을 위해 특정 언어를 우선시해야 하는 경우 Google 계정팀에 문의하세요.

지원되는 모델

CodeMender는 다음 모델을 지원합니다.

클릭하여 지원되는 모델 펼치기

CodeMender CLI 명령어를 실행할 때 모델을 지정하려면 모델 지정을 참고하세요.

지원되는 리전

CodeMender는 전 세계에서 사용할 수 있습니다.

토큰 사용량 추적

CodeMender는 명령어가 실행되는 동안의 실시간 상태 표시줄과 명령어가 성공적으로 완료될 때의 한 줄 요약이라는 두 곳에 토큰 소비를 표시합니다. 개수는 현재 세션의 입력, 출력, 총 토큰을 포함합니다.

라이브 상태 표시줄

cm find, cm fix, cm verify 또는 cm session resume가 실행되는 동안 --compact 플래그를 전달하여 에이전트가 작동할 때 업데이트되는 롤링 상태 줄을 표시합니다.

cm find ./src/auth/ --compact

상태 줄에는 누적 세션 합계가 표시됩니다.

Tokens: 40k in / 12k out / 60k total

재개된 세션은 이전 실행이 중단된 지점부터 계속 계산됩니다. total 개수에는 모델의 내부 추론 토큰이 포함될 수 있으므로 in + out을 초과할 수 있습니다.

요약 종료

명령어가 성공적으로 완료되고 하나 이상의 도구 단계가 실행되면 CodeMender는 경과 시간과 토큰 합계가 포함된 한 줄 요약을 출력합니다.

✅ Completed 14 tool steps in 3m 42s | Tokens: 40k in / 12k out / 60k total

청구된 토큰 사용량

Google Cloud 프로젝트 전반의 누적 청구 토큰 사용량 및 비용 추세를 보려면 Cloud Billing에서 결제 보고서 및 비용 추세 보기를 참고하세요.

CLI 시작하기

CLI 도구를 설정하고 작업공간을 초기화하여 검사를 시작합니다.

기본 요건

CodeMender CLI를 초기화하기 전에 환경이 올바르게 준비되어 있는지 확인하세요.

  • Google Cloud 프로젝트 설정: 필요한 API 및 IAM 역할을 사용하여 Google Cloud 프로젝트를 설정합니다.
  • CodeMender CLI 다운로드: 운영체제에 맞는 CodeMender CLI 바이너리를 다운로드하고 설치합니다.
  • 사용자 인증 정보 Google Cloud 구성: CLI를 인증하도록 Google Cloud 애플리케이션 기본 사용자 인증 정보 (ADC)를 구성합니다.
  • 소스 코드 프로비저닝: 스캔하려는 프로젝트의 소스 코드를 작업공간에 클론하거나 복사합니다.
  • 샌드박스 구성: 샌드박스 환경의 디렉터리 마운트, 네트워크 액세스 프로필, 보안 예외를 정의합니다.

모델 지정

기본적으로 CodeMender는 Gemini 3.8 Flash를 사용합니다. 기본 모델을 재정의하려면 해당 모델 식별자와 함께 --model 플래그를 전달합니다.

  • Gemini 3.8 Flash (기본값): --model gemini-3.8-flash
  • Gemini 3.7 Flash: --model gemini-3.7-flash
  • Gemini 3.6 Flash: --model gemini-3.6-flash
  • Gemini 3.5 Flash: --model gemini-3.5-flash
  • Gemini 3.1 Pro 프리뷰: --model gemini-3.1-pro-preview

다음 명령어는 --model 플래그를 지원합니다.

  • cm find
  • cm verify
  • cm fix

이러한 명령어를 실행할 때 모델을 지정하려면 다음 문법을 사용하세요.

cm COMMAND TARGET --model MODEL_NAME

보안 및 데이터 개인 정보 보호

다음 섹션에서는 CodeMender의 보안 모델, 데이터 보관 정책, 액세스 제어를 간략하게 설명합니다.

CodeMender는 어떤 데이터를 클라우드로 전송하나요?

CodeMender를 사용하면 로컬 CLI 도구가 코드에 대한 액세스를 중재하므로 전체 소스 코드 저장소가 Google 서버에 업로드되지 않으며 호스팅된 에이전트가 독립적으로 클론하지 않습니다.

대신 CLI는 Google 호스팅 에이전트에 전송하는 데이터를 엄격하게 현지화합니다. 이 데이터는 다음으로 구성됩니다.

  • 타겟팅된 파일 콘텐츠 또는 코드 스니펫, 취약점 정보, 제안된 패치, 명령어 실행 결과
  • 메타데이터, 진단, 오류, 사용량 원격 분석 (예: 사용된 토큰 및 명령 지속 시간)

Google은 기본 모델 가중치를 학습시키는 데 고객 소스 코드를 사용하지 않습니다.

보관 정책이란 무엇인가요?

CodeMender는 엄격한 단기 데이터 보관 정책을 사용합니다.

  • 최대 7일 보관: 사용자가 중단된 스캔을 원활하게 재개할 수 있도록 Gemini Enterprise Agent Platform 스토리지에 코드 스니펫과 추적 상태를 포함한 세션 데이터를 최대 7일 동안 보관합니다. 7일이 지나면 시스템에서 자동으로 삭제합니다 (데이터 보관 기간 0일 참고).
  • 명시적 삭제: 고객은 7일 동안 기다릴 필요가 없습니다. DeleteInteraction를 호출하여 모든 세션 데이터를 즉시 정리할 수 있습니다.
  • 일시적인 결과: 취약점 결과와 패치는 장기 데이터베이스에 저장되지 않으며 파이프라인 중에 메모리에 누적됩니다.

데이터에 액세스할 수 있는 사용자는 누구인가요?

CodeMender는 인간 가시성과 관련하여 '데이터 액세스 제로' 접근 방식을 사용합니다.

  • 인간 액세스 없음: 인간 그룹이나 Google 엔지니어가 프로덕션 환경에서 고객 데이터를 읽을 수 없습니다.
  • 운영자 가시성 없음: 프로덕션 디버깅 및 오류 추적의 경우에도 Google 운영자는 제한되며 고객 소스 코드 컨텍스트 또는 일시적인 세션 상태를 볼 수 없습니다.
  • 엄격한 격리: Google은 공유 인프라 내에서 테넌트 개인 정보를 보호하기 위해 조직 및 고객 결제 프로젝트별로 모든 데이터를 논리적으로 격리하고 액세스 제어합니다.
  • VPC 서비스 제어 (VPC-SC): 환경을 추가로 보호하기 위해 CodeMender의 아키텍처는 VPC 서비스 제어 (VPC-SC)를 완전히 지원합니다. 이를 통해 Google Cloud 리소스 주변에 안전한 보안 경계를 정의하여 현지화된 데이터가 클라우드 추론 엔진으로 전송될 때 데이터 무단 반출 위험을 완화할 수 있습니다.

다음 단계

자세한 내용은 다음 가이드를 참고하세요.