AI가 생성한 GitHub Copilot Autofix로 인해 Snowflake Jira 시스템이 침해됨
GitHub Copilot의 AI 기반 'Autofix' 기능이 Snowflake의 공개 저장소에 스크립트 주입 취약점을 유발했으며, 이는 자율적인 AI 보안 에이전트에 의해 발견되고 악용되었다. 이 사건은 AI 보조 도구가 코드를 단순화하기 위해 보안적인 코딩 패턴을 제거함으로써 의도치 않게 보안 취약점을 만들어내는 심각한 위험을 강조한다.
취약점: AI 기반 회귀
2026년 6월, Copilot Autofix powered by AI (PR #1218)와 함께 공동 작성된 커밋이 snowflakedb/snowflake-connector-net 저장소에 병합되었다. 이 AI 보조 도구는 env: 변수와 jq를 사용한 구조화된 데이터 파싱 방식이라는 보안 패턴을, GitHub Actions 워크플로우(jira_issue.yml) 내에서 직접 문자열 인터폴레이션을 사용하는 방식으로 대체했다.
이 변경은 안전한 입력 처리 방식을 직접적인 스크립트 주입 공격 벡터로 전환시켰다. GitHub 이슈 제목에 단일 따옴표가 포함되면 echo '...' 블록을 벗어나 GitHub Actions 러너에서 임의의 명령을 실행할 수 있었다.
악용 및 자율적 탐지
Wiz Research의 'Red Agent'는 자율적인 AI 기반 보안 도구로, 취약한 코드가 도입된 지 5일 이내에 이 취약점을 식별하고 성공적으로 악용했다.
공격 벡터
이 취약점은 issues: opened 이벤트에 의해 트리거되었다. 워크플로우는 잘못된 if: 조건(github.event.pull_request.user.login != 'whitesource-for-github-com[bot]')을 사용하여 보안 게이트가 열려 있었고, 인증되지 않은 사용자 누구나 워크플로우를 트리거할 수 있었다.
자율적 페이로드 조정
공격 과정에서 Red Agent는 고도로 자율적인 능력을 보였다. 초기에 표준 주석 문자(#)를 사용해 데이터를 유출하려는 시도가 bash 구문 오류(EOF)로 실패하자, 에이전트는 오류를 자동 분석하고 페이로드를 ; echo '로 조정하여 쉘 블록을 올바르게 닫았다. 이 조정을 통해 에이전트는 base64 인코딩된 자격 증명을 성공적으로 유출했다.
영향 및 대응 조치
유출된 토큰은 qa@snowflake.net로 인증되어 Snowflake의 내부 Jira 포털에 대한 읽기 접근 권한을 부여했으며, 엔지니어링, 보안 준수, 버그 바운티 추적 프로젝트 등이 포함되었다.
대응 조치
Snowflake는 2026년 6월 23일 공개된 취약점에 대해 다음과 같은 조치를 취했다:
- 즉각적인 패치: 취약한 워크플로우는 안전한
env:+jq --arg파싱 패턴을 복원하는 방식으로 패치되었다 (커밋1dc7766, PR #1402). - 자격 증명 재발급: 침해된 Jira 토큰은 취소되고 재발급되었다.
- 사고 조사 검증: 감사 로그를 통해 노출 기간 동안 외부 제3자가 엔드포인트에 접근한 사실이 확인되지 않았으며, 오직 Wiz의 테스트 IP만이 감지되었다.
기술적 교훈 및 업계 통찰
AI 코드 생성 및 검토
AI 코딩 도구는 확률적 패턴을 기반으로 작동하며, 보안 패턴이 선택된 역사적 맥락을 이해하지 못하는 경우가 많다. 이 사건은 AI가 생성한 PR도 인간이 작성한 코드만큼 또는 그 이상의 엄격한 보안 검토를 받아야 함을 시사한다.
"더 큰 문제는 AI가 변경을 도입하는 비용을 훨씬 낮추지만, 이러한 변경을 검토하는 비용은 그만큼 줄어들지 않았다는 점이다. 핵심은 코드 생성에서 코드 검증으로의 버블넥이 이동하고 있다."
'LGTM' 문화의 위험성
커뮤니티 논의에서는 위험은 단지 AI 자체가 아니라 인간의 검토 실패에 있다는 점이 강조된다. '내가 보기엔 괜찮아' (LGTM)라는 스탬프를 찍는 문화는 AI의 등장으로 더욱 악화되고 있으며, 과거에는 무시되었을 수 있는 낮은 가치의 기술 부채 수정이 이제는 코드베이스에 병합되고 있다.
AI 에이전트를 위한 보호 장치
AI 보안 회귀를 방지하기 위해, 조직은 구조화된 데이터 파서(예: jq)를 직접 문자열 인터폴레이션으로 대체하는 것을 금지하는 보호 장치를 도입해야 한다. 또한 CI/CD 파이프라인에 정적 분석 도구(예: zizmor for GitHub Actions)를 사용하여 템플릿 인젝션 취약점을 병합 전에 탐지할 수 있어야 한다.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch