클로드·코덱스·허메스, 기업 네트워크에 미등록 코드 무단 설치
llms.txt 파일을 신뢰하는 AI 코딩 에이전트(Claude, Codex, Hermes)들이 존재하지 않는 코드 패키지를 자동 설치하는 취약점이 발견됐습니다. 연구진이 미등록 패키지를 실험적으로 등록한 결과 1시간 만에 포춘 500 기업에서 실행 신호가 확인됐으며, 공격자가 이를 악용해 랜섬웨어를 배포할 수 있는 공급망 보안 위협입니다.
100개 이상의 웹사이트에 있는 문서 파일들이 잠재적으로 위험한 실행 가능 콘텐츠를 참조하고 있으며, 다수의 AI 에이전트가 해당 사이트를 방문하면 이 코드가 자동으로 설치됩니다. 개념 증명(PoC) 코드를 실행한 곳 중에는 포춘 500 기업을 포함한 수십 개 기업이 있으며, 최소 한 곳의 잘못 설정된 사이트는 방문자(인간이든 AI든)를 실제 악성코드로 유도하고 있습니다.
이 잠재적 위험 콘텐츠는 llms.txt와 llms-full.txt 파일에 담겨 있는데, 이는 사이트 콘텐츠와 구조를 기계가 읽을 수 있는 형태로 제공하는 신흥 표준입니다. 이 파일들은 검색 엔진에 사이트 색인 방법을 알려주는 robots.txt 표준의 AI 버전이라 할 수 있습니다.
연구진의 발견 과정
이스라엘의 스텔스 스타트업 연구진은 방산업체, 포춘 500, 빅테크 기업이 소유한 6,214개의 라이브 도메인을 스캔했습니다. 발견된 8,265개의 llms.txt 및 llms-full.txt 파일(다수의 사이트가 두 파일을 모두 호스팅) 중 120개가 서로 다른 사이트에서 등록되지 않은 코드 패키지나 도메인 이름을 가리키고 있었습니다.
AI 에이전트가 이런 파일을 처리할 때 어떤 일이 벌어지는지 테스트하기 위해 연구진은 미등록 이름 일부를 직접 등록하고, 실행 시 자신들의 서버에 연결(폰홈)되는 패키지를 호스팅했습니다. 1시간 안에 포춘 500 기업 한 곳에서 폰홈 응답이 도착했고, 시간이 지나면서 포춘 500 기업들과 스타트업 등 수십 곳에서 추가 응답이 왔습니다. 비컨은 각 설치를 유발한 부모 프로세스 체인도 기록했으며, 최종적으로 Claude, OpenAI의 Codex, Nous Research의 Hermes 같은 코딩 에이전트가 관여됐음을 밝혀냈습니다. Anthropic, OpenAI, Nous Research는 게시 시점까지 코멘트 요청에 응답하지 않았습니다.
연구자 중 한 명인 알론 헤르츠는 인터뷰에서 "신뢰 모델이 깨졌다"며 "에이전트는 벤더 문서를 절대적 진실로 여기고 의심하지 않으며, 이를 감독하는 인간도 마찬가지다. 에이전틱 AI 사용이 폭발적으로 늘면서 에이전트가 SaaS, 클라우드, 엔드포인트 등 모든 계층에 퍼지고 있다. 에이전트가 늘수록 공급망 공격 표면도 커지는데, 현재의 방어 체계는 이를 커버하지 못한다"고 말했습니다.
문제의 파일들은 존재하지 않는 PyPI, npm 등의 패키지를 설치 방법과 함께 나열하고 있어 잘못 설정된 것입니다. 예를 들어 한 파일에는 "Installation: pip install [연구진 요청으로 삭제]"라는 안내가, 다른 파일에는 "npm install [삭제]"가 포함돼 있었습니다. 패키지 이름이 미등록 상태이므로 공격자가 이를 등록해 랜섬웨어나 기타 유해 패키지를 호스팅할 수 있습니다. 취약점은 셸 명령 실행 권한을 가진 코딩 에이전트가 이 파일을 공식 설정 문서로 취급할 때 발생하며, 일부 AI 에이전트는 실제로 패키지를 다운로드해 실행합니다.
다른 경우, LLM 파일이 존재하지 않는 도메인을 가리키기도 합니다. 한 사례에서는 "[삭제] 애플리케이션의 통합 테스트 작성 예시로 [Citrus] 테스트 프레임워크를 사용할 수 있습니다"라는 문구가 있었습니다. 공격자는 해당 도메인을 등록해 악성 지시문을 심을 수 있습니다. 연구진의 PoC가 보여주듯, 코딩 에이전트는 실제로 그렇게 행동했으며, 세계 최고 기업들의 내부에서 실행 중인 에이전트도 포함됐습니다.
이론적 위협에 그치지 않고, 최소 한 건의 실제 공격이 이미 이 혼란을 악용하고 있습니다. 연구진은 정상 사이트인 clerk.com에서 호스팅된 LLM 파일에서 "npx clerk-next-fix-auth-protection"이라는 문구를 발견했습니다. 일반적인 설치 명령과 달리 npx는 패키지를 프로젝트 의존성 매니페스트에 추가하지 않고도 npm 캐시로 가져와 노출된 바이너리를 실행할 수 있습니다. 연구진은 곧 이것이... (이하 원문 누락)