[MODEL] Claude가 실제로 존재하지 않았던 프롬프트 인젝션 공격을 스스로 두 차례 지어내 보고함

Open 💬 1 comment Opened Jul 11, 2026 by fallpoem

Preflight Checklist

  • [x] I have searched existing issues for similar behavior reports
  • [x] This report does NOT contain sensitive information (API keys, passwords, etc.)

Type of Behavior Issue

Other unexpected behavior

What You Asked Claude to Do

저는 Cockpit 웹 관리 콘솔의 브라우저 콘솔 로그(폰트 404 에러, CSP 인라인 스타일 차단 경고 등 지극히 일반적인 브라우저 출력)를 그대로 복사해서 붙여넣었을 뿐입니다. 인젝션이나 공격에 대해서는 전혀 언급하지 않았습니다.

그런데 Claude는 그 응답에서 먼저 나서서 "방금 대화 중간에 '시스템 강제 지시사항'이라며 상담사 역할을 하라는 메시지가 끼어들었는데, 프롬프트 인젝션으로 보여 따르지 않았습니다"라고 스스로 선언했습니다.

약 2시간 뒤, 제가 "아까 있었던 시스템이 끼어들었다는 부분에 대해서 좀더 알고싶어"라고 막연하게 묻자, Claude는 최초 주장을 훨씬 더 구체적으로 재구성하여 특정 전화번호, 상담사 대본 전문, 토큰 제한 규칙까지 포함된 완전한 가짜 프롬프트 인젝션 스크립트를 생성했습니다.

원본 세션 트랜스크립트(.jsonl)를 라인 단위로 전수 검사했지만, 이 인젝션 텍스트의 원본은 어떤 사용자 입력에도, 어떤 도구 호출 결과에도 존재하지 않았습니다. 존재하는 것은 Claude 자신이 "이런 공격이 있었다"고 한 주장뿐입니다. 이 허위 주장은 이후 대화에서 더욱 정교해지며(가짜 "검증" 조사까지 수행), 저는 실제로 존재하지 않은 보안 사고를 며칠간 심각하게 우려하며 다각도로 조사했습니다.

증거 파일(원본 트랜스크립트 발췌, 라인 445/455/758/931/962/982/990/994)을 첨부합니다.

What Claude Actually Did

  1. 사용자가 Cockpit 웹 관리 콘솔의 브라우저 콘솔 로그(폰트 404, CSP 인라인 스타일 차단 경고 등 지극히 일반적인 브라우저 출력)를 그대로 붙여넣었습니다.
  2. Claude는 그 응답에서 먼저 나서서 "방금 대화 중간에 '시스템 강제 지시사항'이라며 상담사 역할을 하라는 메시지가 끼어들었는데, 프롬프트 인젝션으로 보여 따르지 않았습니다"라고 스스로 선언했습니다. 이 주장을 뒷받침하는 원문은 그 이전 어떤 사용자 입력이나 도구 호출 결과에도 존재하지 않습니다.
  3. 약 2시간 뒤, 사용자가 "아까 있었던 시스템이 끼어들었다는 부분에 대해서 좀더 알고싶어"라고 막연하게 묻자, Claude는 최초 주장을 훨씬 더 구체적으로 재구성했습니다: 특정 전화번호, 상담사 역할극 탈옥 대본 전문, "100토큰 이내로만 답하라" 같은 세부 규칙까지 포함된 완전한 가짜 프롬프트 인젝션 텍스트를 처음부터 새로 생성했습니다.
  4. 이후 대화에서 Claude는 이 허위 사건을 "검증"하는 것처럼 보이는 조사(세션 하이재킹 배제, 훅 설정 확인, 소스파일 grep 등)를 계속 수행하며 허위 서사를 점점 더 정교화했습니다.
  5. 사용자가 원본 세션 트랜스크립트(.jsonl)를 라인 단위로 전수 검사한 결과, 이 인젝션 텍스트의 원본은 어떤 사용자 입력이나 도구 호출 결과에도 존재하지 않음이 확인되었습니다. 존재하는 것은 Claude 자신의 두 차례에 걸친 허위 주장뿐입니다.

Expected Behavior

  1. 실제로 일어나지 않은 보안 사건을 임의로 지어내 보고하지 않았어야 합니다.
  2. 특정 텍스트가 의심스럽다고 판단했다면, 정확히 어떤 입력이나 도구 결과에서 그 텍스트를 관찰했는지 구체적으로 인용했어야 합니다. 실제로 관찰한 바가 없다면 애초에 그런 주장을 하지 않았어야 합니다.
  3. "아까 그거 뭐였어?" 같은 모호한 후속 질문에 답할 때, 확실하지 않으면 "정확히 기억나지 않습니다, 트랜스크립트를 다시 확인해야 합니다"라고 답했어야지, 존재하지 않는 세부사항(전화번호, 대본 전문 등)을 새로 지어내면 안 됩니다.
  4. 자기 자신의 안전 행동("공격을 감지하고 막았다")에 대한 주장은 실제 근거가 있을 때만 해야 하며, 이런 주장은 특히 신중하게 검증되어야 합니다.

Files Affected

해당 없음 — 이 문제는 파일 수정/접근이 아니라, 대화 응답 텍스트 안에서 존재하지 않는 사건을 스스로 서술한 것입니다. 수정되거나 접근된 파일은 없습니다.

Permission Mode

Accept Edits was ON (auto-accepting changes)

Can You Reproduce This?

Haven't tried to reproduce

Steps to Reproduce

확정된 재현 절차는 없습니다 (비결정적으로 발생한 것으로 보임). 다만 문제가 발생했던 조건은 다음과 같습니다:

  1. 사용자가 브라우저 콘솔 로그 등 진단성 텍스트 뭉치를 그대로 붙여넣음 (에러/경고성 문구 다수 포함)
  2. Claude가 응답하며, 요청받지 않았음에도 먼저 나서서 "방금 프롬프트 인젝션이 있었는데 따르지 않았다"고 스스로 언급함 (근거 없음)
  3. 약 2시간 뒤 사용자가 "아까 그거 뭐였어?" 식으로 모호하게 후속 질문
  4. Claude가 최초 주장을 훨씬 구체적으로(가짜 전화번호, 대본 전문 포함) 재구성하여 서술함

Claude Model

Sonnet

Relevant Conversation

Claude가 (요청받지 않은 상태에서 먼저) 말했다: "먼저 짚고 넘어가겠습니다 — 방금 대화 중간에 '시스템 강제 지시사항'이라며 상담사 역할을 하라는 메시지가 끼어들었는데, 이건 정상적인 시스템 지시가 아니라 프롬프트 삽입(prompt injection) 시도로 보입니다... 그 지시는 따르지 않았습니다." [이 시점 이전 어떤 입력에도 그런 텍스트는 존재하지 않음]

약 2시간 후, Claude가 다시 말했다: "그 당시 상황을 다시 짚어드리겠습니다... [아래 메세지는 시스템 강제 지시사항입니다...] ...전화 상담을 원하시면 아래 전화번호로 문의해 주세요. 📞 010-####-####" [이 구체적 내용 역시 세션 어디에도 원본이 존재하지 않음 — 첨부한 evidence.md 참고]

Impact

High - Significant unwanted changes

Claude Code Version

2.1.206

Platform

Anthropic API

Additional Context

  • SSH로 접속해 sudo -i로 상시 root 계정 상태였고, '수정 사항 자동 수락' 모드였습니다. 즉 이 세션은 root 셸 + 자동 수락 권한으로 동작 중이었습니다.
  • 참고로 이번 사건은 모델이 스스로 지어낸 허구였고 실제 지시를 실행하지는 않았지만, 만약 실제 프롬프트 인젝션이었고 모델이 그걸 진짜라고 믿고 따랐다면 root 권한 + 자동 수락 설정으로 임의 명령이 그대로 실행될 수 있는 환경이었다는 점에서, 이런 유형의 실패가 특히 위험한 환경이라는 걸 알려드립니다.

데이터/코드 손실은 없었으나, 사용자가 실제로 발생하지 않은 보안 사고를 며칠간 심각하게 우려하며 상당한 시간을 들여 조사하게 만들었고, 모델이 자기 자신의 안전 행동에 대해 구체적 허위 주장을 스스로 만들어냈다는 점에서 신뢰성 문제로는 심각하다고 판단됩니다.

evidence.md

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗