코드 취약점 수정 및 차이 관리

CodeMender는 검증된 취약점에 대한 소스 코드 패치를 자동으로 생성, 검증, 적용하고 로컬 샌드박스에서 테스트하여 회귀 오류를 방지할 수 있습니다.

취약점 수정사항 생성

cm fix를 사용하여 확인된 발견 항목에 대해 검증된 보안 패치를 생성합니다.

cm fix FINDING_ID

cm fix를 실행하면 CodeMender가 다음 검증 단계를 수행합니다.

  1. 클라우드 호스팅 추론 엔진을 사용하여 패치 후보를 생성합니다.
  2. 로컬 샌드박스 내 소스 코드 사본에 패치를 적용합니다.
  3. 구성된 build.command를 실행하여 코드베이스를 컴파일하고 테스트하여 프로젝트 빌드 및 단위 테스트가 통과하는지 확인합니다.
  4. 확인된 PoC 익스플로잇을 다시 실행하여 취약점이 더 이상 악용될 수 없는지 확인합니다.

기본적으로 CodeMender는 작업공간의 디스크에 쓰기 전에 각 파일 수정을 확인하라는 메시지를 표시합니다. 모든 검사가 통과되면 CodeMender가 확인된 패치를 작업공간에 적용합니다. 그런 다음 변경사항을 스테이징할 수 있습니다.

수정 플래그

  • 수정 컨텍스트 제공 (-c / --context): 아키텍처 제약 조건 또는 코딩 가이드라인을 제공합니다.
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • 프롬프트 자동 승인 (-y / --yes): 수정 프로세스 중에 모든 파일 쓰기 및 명령어 확인 프롬프트를 자동 승인합니다.
    cm fix FINDING_ID -y
    참고: tools.confirm_writes: false 및 tools.confirm_commands: false를 설정하여 config.yaml에서 대화형 확인 메시지를 사용 중지할 수도 있습니다.
  • 샌드박스 제어 (--sandbox): 이 실행에 대해 OS 수준 샌드박스를 명시적으로 사용 설정 또는 사용 중지합니다 (예: --sandbox=false를 사용하여 사용 중지).
    cm fix FINDING_ID --sandbox=false
  • 경로 경계 우회 (--allow-all-paths): 이 실행에 대해 작업공간 경로 경계 검사를 사용 중지하여 에이전트 도구가 프로젝트 루트 및 구성된 project_paths 외부의 경로에 액세스할 수 있도록 합니다(--sandbox=false와 결합하여 샌드박스 내에 마운트되지 않은 호스트 경로에 액세스).
    cm fix FINDING_ID --allow-all-paths
  • 우회 명령어 정책 (--allow-all-commands): 이 실행에 대해 command_policy.yaml 차단 목록 시정 조치를 사용 중지합니다.
    cm fix FINDING_ID --allow-all-commands
  • 캐시 우회 (--no-cache): CodeMender가 새 패치를 생성하도록 강제합니다.
    cm fix FINDING_ID --no-cache

로컬 VCS diff 검사 및 관리

CodeMender에는 패치가 도입하는 코드 변경사항을 커밋하기 전에 검사, 스테이징, 관리하는 데 도움이 되는 기본 제공 VCS 명령어가 포함되어 있습니다.

  • 저장소 상태 보기: CodeMender가 로컬 작업공간에서 수정하거나 만든 파일을 확인합니다.

    cm vcs status

  • 차이 검사: 에이전트가 생성한 커밋되지 않은 모든 코드 수정사항의 줄별 통합 차이를 검토합니다.

    cm vcs diff

  • 변경사항 스테이징: 확인된 패치 수정사항을 로컬 스테이징 환경에 추가하여 테스트하고 커밋할 수 있습니다.

    cm vcs stage

  • 세션 수정사항 되돌리기: 현재 세션 중에 CodeMender가 생성한 모든 로컬 파일 수정사항을 삭제하고 저장소를 기준 상태로 복원합니다.

    cm vcs reset