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

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
    참고: config.yaml에서 confirm_writes: false를 설정하여 대화형 작성 프롬프트를 전역적으로 사용 중지할 수도 있습니다.
  • 샌드박스 제어 (--sandbox): 이 실행의 샌드박스를 명시적으로 사용 설정 또는 중지합니다 (예: --sandbox=false을 사용하여 중지).
    cm fix FINDING_ID --sandbox=false
  • 샌드박스 우회 (--unrestricted): 이 실행에서 모든 샌드박스 보호를 일시적으로 우회하여 파일 시스템 경계와 OS 수준 컨테이너 격리를 사용 중지합니다.
    cm fix FINDING_ID --unrestricted
  • 캐시 우회 (--no-cache): CodeMender가 새 패치를 생성하도록 강제합니다.
    cm fix FINDING_ID --no-cache

로컬 VCS 차이 검사 및 관리

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

  • 저장소 상태 보기: CodeMender가 로컬 작업공간에서 수정한 파일 또는 생성한 파일을 확인합니다.

    cm vcs status

  • 변경사항 검사: 커밋되지 않은 모든 코드 수정사항의 통합 변경사항을 줄별로 검토합니다.

    cm vcs diff

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

    cm vcs stage

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

    cm vcs reset