GLM-5.3 Workers AI의 KV cache 교차 노출 사고와 SGLang 수정
Cross-request KV cache exposure in the GLM-5.3 Workers AI model (155 responses)
TL;DR Highlight
컨텍스트 창보다 작은 KV 풀 때문에 긴 프롬프트 155건에 타인 데이터가 섞였다
Who Should Read
SGLang 등 오픈소스 추론 엔진으로 LLM을 직접 서빙하거나 멀티테넌트 LLM API를 쓰는 백엔드·인프라 개발자
Core Mechanics
- 155개 응답에 타 고객 데이터 노출
- 2026년 8월 27일~9월 9일 GLM-5.3(@cf/zai-org/glm-5.3) 응답 중 155건이 영향받았다.
- 모두 681,280 토큰보다 긴 프롬프트였다.
- 다른 Workers AI 모델은 영향이 없었다.
- 컨텍스트 창이 KV 풀보다 컸다
- 컨텍스트 창은 1,048,576 토큰으로 배포했다.
- prefill GPU의 KV cache(어텐션 계산 결과를 저장해 두는 메모리) 풀은 681,280 토큰뿐이었다.
- 출시 전에 이 불일치를 알았지만 엔진이 에러를 돌려줄 거라 가정했다.
- 거부된 요청이 정상 요청처럼 흘렀다
- SGLang은 풀에 안 맞는 프롬프트를 거부하고 1토큰 placeholder로 바꿨다.
- disaggregated(prefill/decode 분리) 모드의 admission 큐는 finished()만 확인해서 거부된 요청을 통과시켰다.
- 단일 노드에서는 에러가 정상 반환되어 문제가 없었다.
- decode가 이전 요청의 캐시 페이지를 읽었다
- decode는 8페이지를 예약했지만 prefill은 1페이지만 써서 보냈다.
- 나머지 P1~P7에는 이전 사용자의 프롬프트와 생성 내용이 남아 있었다.
- 클라이언트는 HTTP 400이 아니라 HTTP 200과 말이 되는 응답을 받았다.
- KV 페이지는 요청 사이에 0으로 지워지지 않는다
- 다음 요청이 덮어쓰는 방식이라 성능에 유리하다.
- 대신 엔진이 페이지 소유권을 정확히 추적해야 한다.
- 테스트가 HTTP 상태 코드만 봤다
- 출시 전 롱컨텍스트 테스트는 성공 상태 코드와 성능만 확인했다.
- 모델 출력의 일관성은 검증하지 않았다.
Community Reactions
- 신고 후 대응 속도와 투명성을 높이 평가한 의견
- 한 댓글은 테스트가 버그를 못 잡은 이유를 설명한 RCA를 다른 글보다 높이 평가했다.
- 모델을 바로 내린 점도 좋다는 의견이었다.
- 1,048,576 토큰으로 광고했나라는 의문
- 한 댓글은 풀이 681,280 토큰뿐인데 1,048,576 토큰으로 광고했느냐고 물었다.
- 다른 제공자의 엉뚱한 응답 경험
- 한 댓글은 어떤 API에서 전혀 관련 없는 응답을 받은 적이 있어 이번 사례가 설명이 될 수 있다는 경험을 적었다.
- 공유 테넌시는 원래 위험하다는 의견
- 한 댓글은 공유 테넌트에서 토큰이 마법처럼 격리되지 않는다고 말했다.
- 민감 데이터를 다루는 기업은 비공유 호스트를 써야 한다는 의견이었다.
How to Apply
- SGLang 버전을 확인하고 올리기
- 오늘 SGLang을 쓰는 서버에서 설치 버전을 확인하라.
- v0.5.22 이상이 아니면 올려라.
- KV 풀 크기와 컨텍스트 길이를 배포 전에 비교하기
- 시작 로그의 KV 풀 크기나 노출된 metric을 읽어라.
- 모델 컨텍스트 길이보다 작으면 배포를 막아라.
- 롱컨텍스트 테스트에 카나리 마커 넣기
- 한계 길이 프롬프트를 보내고 상태 코드뿐 아니라 응답 내용도 검사하라.
- 다른 요청에 심어 둔 고유 문자열이 응답에 나오는지 확인하라.
- 민감 데이터는 격리 수준 점검하기
- 쓰는 LLM API가 공유 호스트인지 확인하라.
- 민감 데이터면 전용 호스트를 검토하라.
Try It
# Claude나 ChatGPT에 붙여넣기 — 원문 사고를 바탕으로 한 배포 점검표 간이 버전
우리는 SGLang으로 {{모델명}}을 disaggregated prefill/decode 모드로 서빙한다.
컨텍스트 길이: {{컨텍스트 토큰 수}}
prefill KV 풀 크기: {{시작 로그의 KV 풀 토큰 수}}
아래 사고 사례를 참고해 배포 전 점검표를 만들어 줘.
- 컨텍스트 창이 KV 풀보다 컸고, 풀에 안 맞는 요청이 거부되어야 하는데 정상 요청처럼 decode로 넘어가 이전 요청의 캐시 페이지를 읽었다.
- 테스트는 HTTP 상태 코드만 봐서 놓쳤다.
점검표에는 다음을 포함해 줘: 풀 크기와 컨텍스트 길이 비교, 한계 길이 요청의 응답 내용 검증 방법, 다른 요청의 카나리 문자열 유출 테스트.
이어서 해 볼 것: 점검표를 CI 스크립트로 바꿔 달라고 요청해 보기.Terminology
관련 논문
Microsoft Decision-1: Qwen3.5-9B 기반 결정 점수 전용 모델
글 대신 선택지별 확률만 내놓는 9B 모델, 라우팅·분류용으로 공개
Cerebras가 조 단위 파라미터 모델을 웨이퍼 여러 장에 올리는 방법
Kimi K3(3T)를 웨이퍼 59장 파이프라인에 올려 초당 1000~2000+ 토큰을 낸다
AI 이미지 생성 실전 가이드: diffusion부터 에이전트 연동까지
이미지 API를 직접 써 보니 캔버스 단위 과금과 카메라 묘사 프롬프트가 핵심이었다
DeepInfer: DeepSeek 모델용 고성능 대규모 추론 프레임워크 공개
DeepSeek가 프로덕션 추론 엔진 DeepInfer를 Apache-2.0으로 공개했다
Mercury 3: 규모를 키운 diffusion LLM, 초당 1,000토큰 이상
Diffusion LLM을 40배 키웠더니 속도 4~8배, 품질은 속도 특화 모델 수준
DeepSeek, 미 연방 민간 기관에서 금지된다: DHS 명령과 개발자 반응
DHS 명령으로 DeepSeek이 미 연방 민간 기관 IT 시스템에서 금지됐다
Timestral: Mistral의 시계열 파운데이션 모델
209M 파라미터 시계열 모델이 3대 벤치마크 1위, CPU에서도 돌아간다
DeepSeek V4.1 Flash 1017 (Max) 성능·속도·가격 분석
DeepSeek V4.1 Flash 1017 Max는 지능 지수 45에 211 tok/s, 입력 $0.30