HTTP 헤더에 숨겨진 프롬프트 인젝션, 2억 1,700만 웹 응답에서 7,959개 사이트가 AI에 명령을 보냈다

Prompt injection in HTTP headers: what 217M web responses show

HTTP 헤더에 숨겨진 프롬프트 인젝션, 2억 1,700만 웹 응답에서 7,959개 사이트가 AI에 명령을 보냈다

Common Crawl의 2026년 9월 크롤링 데이터 중 2억 1,709만 페이지 응답의 HTTP 헤더를 분석한 결과, 7,959개 사이트가 AI 시스템을 겨냥한 헤더를 전송했다. 대부분은 llms.txt 파일이나 MCP 서버로 에이전트를 안내하는 포인터였지만, 30개 사이트는 실제 프롬프트 인젝션을 시도했고 이 중 24개는 X-AI 헤더를 사용했다. 대부분 장난이었으나 일부는 에이전트가 셸이나 데이터베이스 접근 권한을 가질 때만 작동하는 실제 행동을 요구했다. 또한 139개 사이트는 클라이언트를 AI 봇으로 분류했는지 기록하는 헤더를 보냈고, 136개는 AI 봇이라고 명시했다. Claude Code에서 실행된 Claude Opus, Sonnet, Haiku는 테스트 헤더를 발견하고도 기본적으로 행동하지 않았지만, 사용자 프롬프트가 사이트 지시를 따르라고 하면 9회 중 7회 복종했다. 이는 거부가 프롬프트가 사이트에 부여하는 권한에 달려 있음을 보여준다.

사용자 프롬프트가 사이트 지시를 따르라고 하면, 9회 중 7회 복종했으므로 거부는 프롬프트가 사이트에 얼마나 많은 권한을 부여하는지에 달려 있다.
  1. simonw

    이 글은 너무 길고, 매우 엉성하다.

    프롬프트 인젝션 헤더가 있는 섹션은 여기다. Claude 4 시대의 거부 반응을 유발하는 문자열을 포함한 것들을 제외하면, 모두 농담이나 진지하지 않은 시도처럼 보인다. https://www.signalscorps.com/blog/prompt-injection-in-http-h...

  2. crisnoble

    이 글은 결국 당신의 에이전트가 무작위적인 내용을 담은 헤더를 따르지 말아야 한다는 점을 길게 설명하고 있다. 하지만 서버가 에이전트를 감지하기가 매우 쉽기 때문에, res.text()에서 인간 사용자에게 보내는 것과 다른 콘텐츠를 에이전트에게 제공하는 것은 사소한 일이다. 이는 적대적일 필요조차 없으며, 서버와 데이터를 수집하는 에이전트 모두에게 에이전트용으로 축소된 버전을 반환하는 것이 합리적이지만, 에이전트에게 다른 콘텐츠를 보여주고자 하는 사람에게는 문제가 된다.

  3. tcdent

    전통적으로 컴퓨팅, 특히 웹은 정보가 해석되는 방식과 그에 부여되는 신뢰 수준까지도 지정하기 위해 구조화된 형식을 사용해 왔다. 그러나 이 글의 HTTP 헤더와 같은 것에서 보듯이, LLM이 콘텐츠를 해석할 때는 모든 것이 그저 텍스트일 뿐이다.

이 날의 다른 글

2026-10-15