이제 여러분의 레포 컨텍스트가 공격 표면입니다
AI 코딩 보안은 단순히 모델이 잘못된 코드를 작성하지 못하게 막는 것 이상의 문제입니다.
진정한 위험은 에이전트가 코드를 작성하기 전에 무엇을 읽느냐에 있습니다. 여러분의 저장소(repository)는 더 이상 단순한 코드 저장소가 아닙니다. 이제는 AI 에이전트를 위한 입력 스트림입니다.
레포의 모든 것이 에이전트를 조종하는 재료가 될 수 있습니다:
- 오래된 README 파일
- 방치된 마이그레이션 노트
- 구식 문서
- 숨겨진 프로젝트 컨벤션
- 로컬 지침 파일
- 의존성 스크립트 및 셸 훅(shell hooks)
개발자들은 종종 이러한 파일들을 해롭지 않은 잡동사니로 취급합니다. 하지만 AI 에이전트는 사회적 맥락을 보지 않습니다. 대신 텍스트, 도구, 패턴을 봅니다. 만약 문서가 오래되었거나 엉망이라면, 에이전트는 그 엉망인 상태를 표준으로 간주할 것입니다.
잘못된 컨텍스트는 두 가지 형태로 나타납니다:
- 지루한 오류:
- 구식 설정 지침
- 지원 중단된(deprecated) API를 사용하는 예시
- 오래된 아키텍처 노트
- 적대적 공격:
- 파일 내부의 프롬프트 인젝션(Prompt injection)
- 악성 의존성 스크립트
- 코드를 안전하지 않은 패턴으로 유도하는 오염된 예시
에이전트에게 테스트 실행, 파일 검색, 또는 풀 리퀘스트(pull request) 생성 권한을 부여하면 피해 범위(blast radius)가 커집니다. 훅(hook) 시스템은 더 이상 단순한 생산성 도구가 아닙니다. 그것은 자동화입니다. 따라서 자동화처럼 다뤄야 합니다.
워크플로우에 대해 다음 질문들을 던져보세요:
- 누가 훅을 수정할 수 있는가?
- 에이전트가 볼 수 있는 환경 변수는 무엇인가?
- 에이전트가 개발자의 자격 증명(credentials)을 상속받는가?
- 도구가 레포 외부에도 파일을 쓰는가?
에이전트를 마법 같은 텍스트 박스로 취급하지 마세요. 개발 인프라로 취급해야 합니다.
에이전트 워크플로우를 보안하는 방법:
- 범위 축소: 단 세 개의 파일만 필요하다면 프로젝트 전체를 에이전트에게 지정하지 마세요.
- 컨텍스트 정리: 오래된 문서와 구식 지침을 삭제하거나 수정하세요.
- 실행 보안 강화: 위험한 작업은 샌드박스(sandbox)에서 실행하세요. 자격 증명의 범위를 제한하세요.
- 가시성 확보: 에이전트가 무엇을 읽었는지, 어떤 도구를 호출했는지, 어떤 명령어를 실행했는지 정확히 파악하세요.
AI 에이전트는 셸(shell) 접근 권한과 빠른 타이핑 속도를 가진 주니어 개발자와 같습니다. 신입 주니어 개발자에게 첫날부터 운영 환경(production)의 모든 자격 증명을 주지는 않을 것입니다. 대신 작은 작업, 깨끗한 컨텍스트, 그리고 제한된 권한을 부여할 것입니다.
에이전트도 똑같이 대하십시오.
Source: https://dev.to/hefty_69a4c2d631c9dd70724/your-repo-context-is-an-attack-surface-now-5dhj
Optional learning community: https://t.me/GyaanSetuAi