AI의 암호화된 생각이 뚫렸습니다 — 앤스로픽·오픈AI·구글 공통, 약한 모델에게 읽히는 추론 흔적
요즘 AI는 답을 내놓기 전에 속으로 한참 생각합니다. 그 생각의 과정을 '추론 흔적'이라고 부르는데, 앤스로픽·오픈AI·구글은 이걸 사용자에게 그대로 보여주지 않습니다. 암호화한 덩어리로 바꿔서 돌려줍니다.
그런데 8월 10일 공개된 논문 한 편이, 그 암호를 암호학적으로 깨지 않고도 열 수 있다고 보고했습니다. 방법이 허탈할 만큼 단순합니다. 같은 회사의 더 약한 모델에게 그 덩어리를 건네고 "읽어줘"라고 시키는 것입니다.

추론 흔적이 무엇인가
요즘 모델은 답을 바로 내지 않습니다. 문제를 쪼개고, 가설을 세우고, 스스로 검증하는 과정을 거칩니다. 그 중간 사고 과정을 추론 흔적(reasoning trace) 또는 생각의 사슬(chain of thought)이라고 부릅니다.
이게 최종 답보다 길 때도 많습니다. 그리고 답보다 정보가 많습니다. 모델이 무엇을 고려했고 무엇을 버렸는지가 다 들어 있으니까요.
왜 그걸 암호화해서 돌려주나
이유는 두 가지입니다.
첫째, 영업 비밀 보호입니다. 추론 흔적은 그 모델이 어떻게 사고하도록 훈련됐는지를 드러냅니다. 경쟁사가 이걸 대량으로 수집하면 증류(distillation)로 비슷한 모델을 싸게 만들 수 있습니다.
둘째, 안전입니다. 중간 사고에는 최종 답에서 걸러낸 위험한 내용이 남아 있을 수 있습니다.

그래서 실제로는 이렇게 돌아간다
API를 쓰면 모델은 답과 함께 암호화된 덩어리를 하나 돌려줍니다. 사용자는 그 안을 볼 수 없습니다. 다음 요청을 보낼 때 그 덩어리를 다시 붙여 보내면, 모델이 이전에 무슨 생각을 했는지 이어받습니다.
서버가 대화 상태를 들고 있지 않아도 되니 확장에 유리한 설계입니다. 문제는 그 편의가 만든 구멍이었습니다.
논문이 지적한 구조적 결함
논문 「Stealing Reasoning Traces from Proprietary LLM APIs」(arXiv:2608.09867, 2026년 8월 10일 제출)의 핵심 주장은 이렇습니다.
암호화된 블록이 세션·사용자·모델을 가리지 않고 서로 호환된다는 것입니다. 특정 계정이나 세션에 묶여 있지 않고 회사 전체가 공유하는 하나의 키로 처리됩니다. 그래서 A가 받은 덩어리를 B가 그대로 쓸 수 있습니다.

공격 방법 — 강한 모델의 생각을 약한 모델에게 읽히기
공격은 세 단계입니다.
- 최상위 모델을 호출해 암호화된 추론 블록을 받습니다.
- 그 블록을 같은 회사의 더 작고 저렴한 모델에게 보냅니다.
- 작은 모델에게 "이 안의 생각을 그대로 옮겨 적어달라"고 시킵니다.
작은 모델은 그 블록을 해독할 수 있습니다. 같은 회사의 같은 키를 쓰니까요. 그리고 작은 모델에는 최상위 모델만큼 촘촘한 안전장치가 걸려 있지 않아서, 시키는 대로 내용을 평문으로 뱉습니다.
암호를 깬 것이 아니다
여기가 중요한 대목입니다. 연구진은 암호 알고리즘을 깨지 않았습니다. 열쇠를 훔치지도 않았고요.
합법적으로 해독 권한을 가진 존재에게 부탁했을 뿐입니다. 자물쇠를 부순 게 아니라, 열쇠를 가진 사람에게 "좀 열어주세요"라고 말한 셈입니다. 그리고 그 사람이 거절할 이유를 배우지 못했습니다.

필요한 권한은 '보통 계정' 하나뿐
이 공격에는 특별한 접근 권한이 필요 없습니다. 누구나 받을 수 있는 표준 API 키 하나면 됩니다.
보안에서 이건 큰 차이입니다. 내부자 권한이나 서버 침투가 필요한 취약점은 실행 장벽이 높지만, 일반 계정으로 재현되는 취약점은 사실상 누구나 할 수 있습니다.
실제로 무엇이 새어 나왔나
연구진은 이론에 그치지 않고 실측했습니다. 공개 저장소에 이미 떠돌고 있는 암호화 블록 315,320개를 모아 해독했습니다.
결과는 이렇습니다.
- 개인식별정보(PII) 367건
- 인증 정보(자격증명) 182건
이건 가상의 시나리오가 아니라 이미 인터넷에 올라와 있던 데이터에서 나온 숫자입니다.

그 블록들은 왜 공개돼 있었나
여기서 개발자들이 뜨끔할 대목이 나옵니다. 에이전트 실행 로그입니다.
AI 에이전트를 만들면 디버깅을 위해 요청·응답을 통째로 로그에 남깁니다. 그 로그를 깃허브 저장소나 이슈에 그대로 붙여 올린 사례가 무수히 많습니다. 암호화된 덩어리는 사람 눈에는 의미 없는 문자열로 보이니 지워야 한다는 생각조차 안 듭니다.
그게 착각이었습니다. 그 문자열은 열 수 있는 상자였습니다.
왜 하필 자격증명이 들어 있나
에이전트는 일하면서 외부 서비스를 호출합니다. API 키를 읽고, 토큰을 쓰고, 접속 정보를 다룹니다. 그 과정이 사고 과정에 그대로 기록됩니다.
최종 답변에서는 이런 값이 대개 가려집니다. 하지만 중간 사고에는 마스킹이 걸려 있지 않습니다. 사용자에게 안 보일 거라고 전제한 영역이니까요. 그 전제가 무너지면 마스킹 없는 원본이 그대로 노출됩니다.

이 취약점이 열어주는 네 가지 문
논문은 공격 벡터를 넷으로 정리했습니다.
- 증류 방지 우회 — 경쟁사가 최상위 모델의 사고 과정을 대량 수집해 자기 모델을 학습시킬 수 있습니다.
- 사적 정보 추출 — 위에서 본 PII·자격증명 유출입니다.
- 숨겨진 위험 정보 노출 — 최종 답에서 걸러진 내용이 중간 사고에는 남아 있을 수 있습니다.
- 보이지 않는 프롬프트 인젝션 — 암호화 블록 안에 지시를 심어 넣는 방식입니다. 사람이 읽을 수 없으니 검토를 통과합니다.
네 번째가 특히 고약하다
보이지 않는 프롬프트 인젝션을 조금 더 보겠습니다.
보통 프롬프트 인젝션은 텍스트로 보이기 때문에 검사할 수 있습니다. 그런데 암호화 블록 안에 넣으면 사람 눈에도, 대부분의 필터에도 의미 없는 문자열로 보입니다. 그런데 모델은 읽습니다.
내용을 검사할 수 없는 데이터를 신뢰 경계 안으로 들여보내는 셈입니다. 보안 설계에서 가장 피해야 할 형태입니다.

이미 5월과 6월에 보고됐었다
논문이 처음 발견한 문제가 아닙니다. 독립 연구자들이 2026년 5월과 6월에 같은 재생(replay) 취약점을 각각 문서화했습니다. 5월에는 존스홉킨스의 한 암호학자가 단일 전역 키 가설을 제시했고, 벤더 대응은 보수적이었다고 기록돼 있습니다.
그러니까 세 달 가까이 알려져 있었지만 구조적 수정은 이뤄지지 않았습니다. 그 사이 공개 저장소의 블록은 계속 쌓였습니다.
왜 빨리 못 고치나
고치기 어려운 이유를 짐작해 볼 수 있습니다. 이 설계가 확장성의 핵심이기 때문입니다.
블록을 계정·세션에 묶으면 서버가 누구의 어떤 블록인지 기억해야 합니다. 무상태(stateless) 구조의 장점이 사라집니다. 수억 명이 쓰는 서비스에서 이건 비용과 지연으로 곧장 이어집니다.
즉 보안과 확장성이 정면으로 부딪히는 지점이고, 그래서 결정이 늦어졌을 가능성이 큽니다.

논문이 제안한 해법
연구진이 제시한 방향은 두 가지입니다.
첫째, 추론 흔적을 서버에만 둡니다. 클라이언트에 아예 내려보내지 않으면 훔칠 대상이 없습니다.
둘째, 불투명한 무작위 식별자만 내려보냅니다. 클라이언트는 "12번 상자"라는 번호표만 받고, 서버가 그 번호로 실제 내용을 찾습니다. 번호표에는 아무 정보가 없으니 가로채도 쓸모가 없습니다.
두 해법 모두 상태를 서버로 옮긴다
두 방향 다 결국 무상태에서 유상태로의 전환입니다. 서버가 기억을 떠안는 구조입니다.
비용이 올라가고 구조가 복잡해집니다. 하지만 클라이언트에 해독 가능한 것을 내려보내는 한 이 문제는 사라지지 않습니다. 암호를 더 세게 거는 것으로는 해결되지 않습니다. 애초에 암호가 깨진 게 아니니까요.

지금 개발자가 할 수 있는 일
구조적 수정은 제공사 몫이지만, API를 쓰는 쪽에서 지금 당장 할 수 있는 것이 있습니다.
- 로그에 원본 응답을 통째로 남기지 않습니다. 암호화된 추론 블록 필드는 저장 전에 제거합니다.
- 이미 올린 로그를 되짚습니다. 깃허브 이슈·저장소·공유 노트북에 붙여 넣은 응답 원문이 있는지 확인합니다.
- 에이전트에 넣는 비밀값을 줄입니다. 사고 과정에 등장하지 않도록 호출 계층을 분리합니다.
- 외부에서 받은 추론 블록을 그대로 되먹이지 않습니다. 인젝션 경로가 됩니다.
사용자 입장에서는
일반 사용자가 챗봇 앱을 쓰는 것만으로 이 취약점에 노출되지는 않습니다. 이건 API를 직접 다루는 개발 영역의 문제입니다.
다만 간접 영향은 있습니다. 내가 쓰는 서비스가 그 API로 만들어졌다면, 그 서비스의 로그 관리가 곧 내 데이터의 안전이 됩니다. 유출된 PII 367건은 그 개발자들의 사용자였을 겁니다.

'보이지 않는다'와 '안전하다'는 다르다
이 사건의 교훈을 한 줄로 줄이면 이겁니다. 읽을 수 없다는 것과 안전하다는 것은 다릅니다.
암호화된 블록은 사람 눈에 무의미해 보였고, 그래서 아무도 지우지 않았습니다. 하지만 그걸 읽을 수 있는 존재가 세상에 아주 많았습니다. 같은 회사의 모든 모델이 그랬으니까요.
같은 함정이 반복되는 이유
이 패턴은 새롭지 않습니다. base64로 인코딩한 값을 안전하다고 착각하는 것, 브라우저에 숨긴 필드를 신뢰하는 것 모두 같은 계열입니다.
공통점은 난독화를 보안으로 착각하는 것입니다. AI 시대에도 그대로 반복됐습니다. 다른 점이 있다면 이번엔 해독기가 알아서 판단해 주는 지능이라는 것이고, 그래서 "읽지 마"라고 부탁하는 것 말고는 막을 방법이 없었다는 점입니다.

실제 사례 — 로그를 남기는 습관을 다시 본다
SVIL 작업 환경에도 그대로 걸리는 이야기라 점검했습니다. 로컬 파이프라인 여럿이 MCP·API 응답을 파일로 떨어뜨리고 있고, 그 로그가 문제를 추적할 때 결정적인 역할을 해왔습니다.
다만 규칙 하나는 이미 지키고 있었습니다. 로그에 개인 정보 본문을 기록하지 않는다는 것입니다. 이번 사건은 그 규칙에 항목 하나를 더하게 만듭니다. "뜻을 알 수 없는 문자열"도 기록 대상에서 빼야 한다는 것입니다.
그리고 더 실질적인 위험은 로그를 어디에 붙여 넣느냐에 있습니다. 에러를 물어보려고 응답 원문을 통째로 복사해 올리는 순간, 그게 공개 저장소가 됩니다. 이번에 해독된 31만 개 블록의 상당수가 그렇게 올라갔을 겁니다. 붙여 넣기 전에 잘라내는 습관 하나가 가장 싼 방어책입니다.
남은 질문
아직 답이 안 나온 것들이 있습니다.
- 세 회사가 언제 구조를 바꾸는가. 8월 12일 기준 공식 대응 발표는 확인되지 않았습니다.
- 이미 유출된 블록은 어떻게 되는가. 키를 바꿔도 이미 해독된 내용은 되돌릴 수 없습니다.
- 실제로 악용된 사례가 있었는가. 연구진은 취약점을 증명했을 뿐, 실제 피해 사례는 별도 문제입니다.

핵심 정리
- 앤스로픽·오픈AI·구글이 돌려주는 암호화된 추론 블록을 같은 회사의 약한 모델에게 읽히면 평문이 나옵니다.
- 원인은 블록이 계정·세션에 묶이지 않고 회사 전체 단일 키로 처리되기 때문입니다. 암호가 깨진 게 아니라 설계가 문제입니다.
- 필요한 것은 일반 API 계정 하나뿐입니다.
- 공개 저장소의 블록 315,320개를 해독해 개인정보 367건 · 자격증명 182건이 실제로 나왔습니다.
- 주된 유출 경로는 깃허브 등에 그대로 올린 에이전트 실행 로그입니다.
- 공격 벡터는 넷 — 증류 우회 · 사적 정보 추출 · 위험 정보 노출 · 보이지 않는 프롬프트 인젝션.
- 5월·6월에 이미 독립 보고가 있었지만 구조적 수정은 없었습니다.
- 해법은 추론 흔적을 서버에만 두거나, 무작위 식별자만 내려보내는 것입니다. 둘 다 무상태를 포기해야 합니다.
다음에 볼 것
세 회사의 공식 대응이 첫 번째 관전 포인트입니다. 구조를 바꾸는가, 아니면 완화책으로 넘어가는가에 따라 이 문제의 수명이 갈립니다.
두 번째는 API 응답 형식의 변화입니다. 어느 날 갑자기 응답에서 추론 블록 필드가 사라지거나 짧은 식별자로 바뀐다면, 그게 조용한 수정 신호입니다.
당장은 로그부터 정리하는 것이 가장 확실합니다. 제공사가 언제 고칠지는 우리가 정할 수 없지만, 내 로그를 어디에 두는지는 정할 수 있습니다.

출처
- arXiv:2608.09867 — Stealing Reasoning Traces from Proprietary LLM APIs
- Hugging Face Papers — Stealing Reasoning Traces from Proprietary LLM APIs
- Cyber Security News — OpenAI, Anthropic, and Google LLM APIs vulnerability Exposes Hidden Reasoning Traces
- explainX.ai — Encrypted CoT Flaw: 182 Credentials Leaked from Public Logs
- AI Weekly — Encrypted reasoning cracked across Anthropic, OpenAI, Google
- alphaXiv — Stealing Reasoning Traces from Proprietary LLM APIs
- AI Governance Institute — Frontier API Reasoning Traces Leaked Live API Keys in Public Agent Logs
- Stealing Reasoning Traces from Proprietary LLM APIs (논문 PDF)
협업문의 : kuroicode@gmail.com
블로그 : https://blog.svil.dev/
홈페이지 : https://kuroicode-beep.github.io/svil-homepage/