
AI 코딩 에이전트가 '깨끗한' GitHub 저장소를 통해 악성코드를 설치하도록 속을 수 있다 — Mozilla의 0din 팀, Claude
요약
Mozilla의 0din 팀은 Claude와 같은 AI 코딩 에이전트가 악성 GitHub 저장소를 통해 악성코드를 실행하도록 유도할 수 있음을 증명했습니다. 공격자는 DNS TXT 레코드를 활용해 보안 도구를 우회하며, 에이전트가 환경 설정을 수행하는 과정에서 리버스 셸을 실행하도록 속입니다.
핵심 포인트
- AI 에이전트가 깨끗해 보이는 저장소의 명령을 수행하며 악성코드를 실행할 위험 존재
- DNS TXT 레코드를 이용해 보안 스캐닝 도구를 우회하는 정교한 공격 방식 사용
- 공격 성공 시 API 키, 브라우저 세션, 비밀번호 등 민감 정보 탈취 가능
- 대부분의 봇 에이전트가 유사한 유형의 간접 공격에 취약할 수 있음
"Think out of the box"(고정관념에서 벗어나라)라는 문구는 전 세계 수백만 개의 동기 부여 포스터에 그려져 있으며, 중간 관리자들에게는 강렬한 메시지를 전달하지만 그 외 대부분의 사람들에게는 눈총을 사는 문구입니다. 하지만 Mozilla의 0din 연구원들이 수행한 작업은 정확히 그러했습니다. 그들은 단순히 꽤 깨끗해 보이는 GitHub 저장소로부터 프로젝트를 초기화하도록 Claude에게 요청함으로써, 우회적이면서도 기만적일 정도로 단순한 방식으로 Claude가 악성코드를 실행하도록 속였습니다.
공격자는 이후 개발자 자신의 계정을 제어하여 모든 비밀 정보(secrets), API 키, 코드, 문서, 브라우저 세션 및 비밀번호에 접근할 수 있게 됩니다. 심지어 영구적인 접근을 유지하기 위해 추가적인 악성코드를 설치할 수도 있습니다. Claude가 프로그래밍 작업의 기본 선택지이긴 하지만, 거의 모든 봇 에이전트(bot agent)가 이러한 유형의 공격에 취약하다고 말해도 과언이 아닙니다.
작동 방식은 다음과 같습니다. 피해를 입는 개발자가 해야 할 일은 Claude에게 악성 GitHub 저장소로부터 프로젝트를 초기화하도록 말하거나(또는 직접 클론한 후 구성하도록 말하는 것)뿐입니다. 해당 저장소는 단지 몇 개의 스캐폴딩(scaffolding) 파일만 포함하고 있어 매우 깨끗해 보이며, 무엇보다 원격, 로컬, 또는 Claude 자체의 점검을 포함한 그 어떤 보안 도구도 트리거(trigger)하지 않는 상태입니다.
Claude는 해당 저장소를 클론(clone)할 것입니다. Claude가 처음으로 처리할 파일은 흔히 사용되는 모니터링 도구인 Axiom 패키지를 사용하여 Python 환경을 초기화하는 방법을 설명하는 "readme" 또는 Markdown 파일일 것입니다. 여기까지는 완전히 합법적인 것으로 보입니다. 하지만 여기에는 처음 실행될 때 단순히 에러를 발생시키는 가짜 Axiom 시작 스크립트가 있습니다. 이것이 고정관념을 속이는 첫 번째 단계인데, 왜냐하면 Claude가 도움을 주고 문제를 해결하기 위해 Axiom을 초기화하는 다른 무해해 보이는 명령인 "python3 -m axiom init"을 실행할 것이기 때문입니다.
이는 실행할 소프트웨어의 일부를 다운로드하는 셸 스크립트(shell script)를 트리거하며, 이는 의심을 사지 않을 또 다른 표준적인 작업입니다. 하지만 두 번째 트릭은 스캔될 수 있는 악성 URL에서 다운로드하는 대신, 스크립트가 특정 도메인의 DNS 텍스트 레코드(TXT records)를 읽는다는 점입니다. 이 경우 도메인은 "_axiom-config.m100.cloud"입니다. 이 또한 이메일 및 그에 따른 구성 도구들이 TXT 레코드에 광범위하게 의존한다는 점을 고려하면 충분히 정상적으로 보입니다.
해당 TXT 레코드에는 리버스 셸(reverse shell)을 여는 인코딩된 (base64) 문자열이 포함되어 있습니다. 이는 사용자의 머신에서 셸을 열되, 입력을 위해 공격자의 서버로 리다이렉션됨을 의미합니다. 이 시점에서 공격자는 사용자가 접근할 수 있는 모든 것을 낚아챌 수 있으며, 사용자의 권한으로 소프트웨어를 실행하는 단계로 나아갈 수 있습니다. 그동안 Claude와 피해자가 보게 되는 것은 "Environment ready" 메시지나 그와 유사한 내용뿐입니다.
지금까지 단계를 세어보셨다면, 이는 세 단계의 간접적인 방식(indirection)을 거친 것이며, 각각의 단계는 단독으로는 전혀 이상해 보이지 않습니다. 보안 스캐닝 도구 중 이 저장소를 플래그(flag)로 표시할 도구는 거의 없으며(있더라도 매우 드물며), 실제 원격 셸이 열리는 것을 제외하면 그 어떤 활동도 특별히 이상해 보이지 않습니다. 네트워크 접근이 매우 엄격하게 제어되는 기업 환경이라면 이를 포착할 수 있겠지만, 대다수의 개발자가 그런 환경에서 작업하는 것은 아닙니다. 또한, 이 특정 구현 방식은 훨씬 더 간접적이고 정교한 방법에도 적용될 수 있는 개념의 한 가지 예시일 뿐이라는 점을 강조할 가치가 있습니다.
0din 팀은 보고서를 마무리하며 다음과 같이 지극히 당연한 결론을 내립니다. 개발자는 알 수 없는 프로젝트를 신뢰할 수 있는 코드로 맹목적으로 믿어서는 안 되며, 당연히 보안 분석 목적으로 AI 도구 자체를 신뢰해서도 안 된다는 것입니다. 에이전트 자체에 대해서 0din은 단순히 단계를 따르는 대신, 실제로 무엇이 어떻게 실행될지를 검사해야 한다고 명시했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Tom's Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기