← 모든 글

llms.txt 취약점: AI 에이전트가 문서 파일을 통해 악성 코드를 자동으로 설치하는 방법

llms.txt 취약점: AI 에이전트가 문서 파일을 통해 악성 코드를 자동으로 설치하는 방법

8월 27일 목요일Ars Technica가 조사 결과를 발표했습니다.AI 코딩 에이전트를 사용하는 개발자는 보안을 다시 생각하게 될 것입니다. 이스라엘의 스텔스 스타트업 연구원들은 Fortune 500대 기업, 방위 산업체 및 Big Tech에 속한 6,214개의 도메인을 스캔하여 AI 에이전트가 PyPI 및 npm에서 존재하지 않는 패키지를 자동으로 설치하도록 하는 120개의 llms.txt 파일을 발견했습니다.

문제는 간단하면서도 끔찍합니다. llms.txt은 본질적으로 "AI용 robots.txt"입니다. 이는 에이전트가 문서 구조를 빠르게 이해하는 데 도움이 되는 마크다운 사이트 맵 파일입니다. 그러나 사양에는 인증, 서명, 무결성 검사가 포함되어 있지 않습니다. 해당 파일에 pip install non-existent-package 또는 npm install non-existent-package이 포함되어 있고 에이전트에 명령을 실행할 수 있는 권한이 있는 경우 에이전트는 거기에 기록된 내용을 모두 설치합니다.

작동 원리

연구원들은 8,265개의 llms.txtllms-full.txt 파일을 발견했습니다(많은 사이트에서 두 파일을 모두 호스팅함). 그 중 120개 도메인에 걸쳐 120개에는 레지스트리에 존재하지 않는 패키지나 도메인에 대한 참조가 있었습니다. 공격자는 이러한 이름을 등록하고 악성코드를 업로드하기만 하면 된다.

공격을 확인하기 위해 연구원들은 여러 개의 "무료" 이름을 등록하고 단순히 "시작했습니다"라고 서버에 핑을 보내는 무해한 패키지를 배치했습니다. 한 시간 안에 그들은 Fortune 500대 기업으로부터 응답을 받았습니다. 시간이 지남에 따라 다른 거대 기업과 스타트업으로부터 수십 개의 추가 응답이 도착했습니다. 프로세스 원격 분석을 통해 패키지를 설치한 사람이 누구인지 정확히 알 수 있습니다.Nous Research의 Claude Code, OpenAI Codex 및 Hermes.

llms.txt attack diagram

가장 끔찍한 사건 - clerk.com

합법적인 clerk.com 사이트의 llms.txt 파일에는 npx clerk-next-fix-auth-protection이 포함되어 있습니다. 일반 npm install과 달리 npx은 패키지를 npm의 캐시로 가져와 프로젝트의 종속성 매니페스트에 추가하지 않고도 해당 바이너리를 실행할 수 있습니다. 누군가가 이 무료 이름을 주장하고 실제 악성 코드를 업로드했습니다. 점원이 문제를 해결했지만 패턴은 이미 제작 중입니다.

이것이 단순한 "모델 버그"가 아닌 이유

이것은 환각이나 샌드박스 탈출이 아닙니다. 파일은 AI 소비를 위해 설계된 표준화된 형식으로 HTTPS를 통해 제공되는 회사의 공식 도메인에 있습니다. 에이전트는 파일을 의심할 이유가 없습니다.~이다권위. 문제는 llms.txt 표준(2024년 9월 Answer.AI의 Jeremy Howard가 제안)에 서명, 원본 확인, 패키지 확인 등 보안 조항이 전혀 포함되어 있지 않다는 것입니다.

신뢰 체인은 전이적입니다. llms.txt은 Fortune 500대 기업의 자체 사이트에 있을 필요가 없습니다. 파트너의 문서, 공급업체의 SDK 참조, 커뮤니티 프로젝트의 설정 가이드에 있을 수 있습니다. 에이전트가 해당 제3자를 신뢰하고 해당 제3자가 등록되지 않은 패키지를 가리키는 경우 체인은 동일한 방식으로 작동합니다.

지금 당장 해야 할 일

  1. 심사.llms.txtllms-full.txt을 확인하세요. 언급된 모든 패키지, 도메인 및 URL이 존재하고 귀하의 통제하에 있으며 식별된 관리자가 있는지 확인하십시오. 메모리에서 설명할 수 없는 종속성에 대한 참조를 제거하세요.
  2. 에이전트와 레지스트리 간의 프록시입니다.새 패키지를 차단하고(엉뚱한 패키지는 정의상 새로운 것입니다), 종속성의 첫 번째 릴리스 후 24~72시간의 휴지 기간을 적용하고, 설치 전에 provenance(SLSA/Sigstore)를 확인하세요.
  3. 에이전트에 --yolo, --dangerously-skip-permissions, --trust-all-tools을 제공하지 마세요.이러한 플래그는 개발자가 책임을 지기 위해 존재합니다. 에이전트가 귀하의 확인 없이 패키지를 설치하는 경우 — 귀하는 인프라에 대한 키를 에이전트에게 전달한 것입니다.

결론

상담원이 웹사이트를 읽을 수 있도록 하기 위한 경쟁이 소프트웨어 공급망을 활용하려는 경쟁과 충돌했습니다. 이는 특정 모델이나 공급업체의 잘못이 아닙니다. 누구도 실행 가능한 코드로 생각하지 않은 표준의 설계 결함입니다. 업계에서 에이전트가 웹에서 읽은 내용에 대한 검증을 시행할 때까지 모든 잘못된 llms.txt은 네트워크에 대한 잠재적인 진입점이 됩니다.

llms.txt attack diagram: agent reads file, finds install command for non-existent package, executes it, loads malware

보안을 위해 AI 워크플로를 테스트하고 싶으신가요? NeuralSpace를 사용하면 격리된 환경에서 코드 생성 및 테스트 에이전트를 실행할 수 있습니다.채팅을 시도해보세요또는코드 모드.