dev_tools
14분 읽기

Cloudflare Workers AI, GLM-5.3 모델의 KV 캐시 노출 버그 수정...SGLang과 협력

Cloudflare가 Workers AI의 GLM-5.3 모델에서 발생한 KV 캐시 노출 버그를 공개하고 기술적 원인과 수정 방법을 설명했다. 2026년 8월 27일부터 9월 9일까지 SGLang의 설정 오류와 코드 결함이 겹쳐 155건의 응답에서 다른 사용자의 데이터가 노출됐다. Cloudflare는 구성 수정과 엔진 패치로 대응했으며 SGLang 메인테이너와 협력해 upstream에도 피드백을 반영했다.

AIB프레스 편집팀
2026.10.27
Cloudflare Workers AI, GLM-5.3 모델의 KV 캐시 노출 버그 수정...SGLang과 협력

클라우드플레어(Cloudflare)가 자사 인공지능 추론 플랫폼 Workers AI에서 지난달 발생한 테넌트 격리(tenant isolation) 버그를 공식 인정하고 수정 과정을 상세히 공개했다. 오픈소스 추론 엔진 SGLang의 설정 오류와 코드 버그가 맞물려 발생한 이번 사건은 고성능 AI 인프라의 보안 복잡도를 드러낸다.

무엇이 일어났나

2026년 8월 27일부터 9월 9일까지 GLM-5.3 모델(중국 Z.ai 개발, 코딩 에이전트용 텍스트 생성 모델)을 사용한 일부 고객들이 다른 사용자의 요청에 대한 응답을 받았다. 보안 연구자 가디 에브론(Gadi Evron, Knostic 소속)이 9월 8일 Cloudflare의 HackerOne 보안 신고 프로그램을 통해 보고했고, Cloudflare는 12시간 이내에 모델을 오프라인으로 전환했다.

영향받은 응답은 총 155건. 모두 681,280토큰을 초과하는 긴 프롬프트에 한정됐다. Cloudflare의 조사 결과, 의도적 악용 증거는 없었으며 발견된 요청들의 시기와 규모는 일상적인 장문맥(long-context) 사용 패턴과 일치했다.

이중 버그: 설정 오류 + 코드 결함

근본 원인은 두 가지 겹친 문제였다.

첫 번째는 설정 미스매치였다. Cloudflare는 GLM-5.3을 1,048,576토큰 컨텍스트 윈도우로 배포했다. 그러나 프리필(prefill) GPU의 KV 캐시 풀 크기는 681,280토큰에 불과했다. Cloudflare 팀은 사전에 이 불일치를 알고 있었다. 엔진이 처리 불가 프롬프트에 대해 에러를 반환할 것이라 가정했고, 실제 테스트에서도 장문맥 요청들이 성공 응답을 반환했으므로 문제가 없다고 판단했다.

두 번째는 SGLang의 버그다. 디스어그리게이트(disaggregated) 프리필/디코드 모드에서, 풀 크기를 초과하는 프롬프트는 내부적으로 '거부됨(rejected)'으로 표시되고 한 토큰짜리 플레이스홀더로 교체됐다. 그러나 SGLang의 문제는 여기서 요청을 중단하고 에러를 반환하지 않았다는 점이다.

프리필 노드는 플레이스홀더 프롬프트에 대한 KV 캐시를 생성했고, 이를 디코드 노드에 전송했다. 디코드 노드는 '전송 완료' 신호를 받고 '프리필이 이전 요청의 KV 캐시를 새 요청의 전체 프롬프트로 덮어썼을 것'이라 가정했다. 하지만 실제로는 이전 사용자들의 캐시 페이지 대부분이 그대로 남아있었다. 결과적으로 디코드 노드는 stale cache(구식 캐시)를 참고하며 응답을 생성했고, 여기에 과거 요청의 데이터가 포함된 것이다.

Cloudflare의 대응: 배구식 방어

Cloudflare는 모델을 다시 가동하기 전에 두 가지 레이어로 패치했다.

레이어 1: 구성 수정. GLM-5.3 설정을 이전 모델 GLM-5.2와 동일하게 조정해, KV 캐시 풀을 약 204만 토큰까지 확대했다. 이제 컨텍스트 윈도우(1,048,576토큰)에 맞는 모든 프롬프트가 풀에 들어간다. 거부 경로가 절대 실행되지 않는다.

레이어 2: 엔진 수정. 풀 크기만으로는 취약하다고 판단했다. 양자화, 텐서 병렬화, CUDA 그래프 크기, 향후 모델 버전 업그레이드 등 작은 변화도 풀 크기를 예측 불가능하게 바꾼다. Cloudflare는 SGLang 업스트림에 PR #38704를 제출했다. 이는 거부 대기 중인 요청을 디스어그리게이션 승인 큐에서 부트스트랩·할당·KV 전송 이전에 원본 에러로 종료시키는 방식이다. 추가로 디코드 노드가 전송된 토큰 수와 예약된 토큰 수의 일치 여부를 검증하도록 했다.

SGLang 메인테이너들은 관련 패치(PR #36988, 9월 6일 병합)를 이미 메인 브랜치에 포함했고, Cloudflare 방식을 따르는 추가 PR #38935도 병합했다.

인프라 보안의 은폐된 복잡도

이 사건은 고성능 분산 AI 추론의 숨은 도전을 드러낸다.

첫째, 메모리 풀의 주권 추적이 복잡하다. KV 캐시는 고정 크기의 페이지로 구성된 공유 풀이다. 페이지를 여러 요청들이 재사용하면서, 각 요청이 어느 페이지를 소유하는지, 언제까지 소유하는지 정확히 추적해야 한다. 같은 노드 내 공유(KV 캐시 오프로드, 토큰 생성)뿐 아니라 원격 프리필 노드와의 동시 쓰기 참조도 관리해야 한다. 페이지는 요청 사이에 0으로 초기화되지 않으므로, 다음 요청이 들어올 때 덮어써야 한다. 이 설계는 성능을 최대화하지만 추적 책임은 전적으로 인프라의 몫이다.

둘째, 컨텍스트 윈도우와 풀 크기 간의 불일치는 자동 검증되지 않는다. SGLang은 시작 시 남은 GPU 메모리로부터 풀 크기를 자동 산정한다. 모델의 공표 컨텍스트 길이는 별개 설정값이다. 둘이 일치할 의무가 없고, 운영팀이 일일이 확인해야 한다. 로그와 메트릭에 노출되지만 경고는 없다.

조율된 공개와 오픈소스 협력

Cloudflare는 SGLang 팀과 함께 조율된 공개(coordinated disclosure)로 이 사건을 발표했다. 버그 원인, Cloudflare의 대응 타임라인, 프로덕션 SGLang 배포의 강화 방안, 업스트림 메인테이너와의 지속적 협력 계획을 모두 공개했다.

개발자들이 장문맥 추론 워클로드를 Workers AI에 배포할 때는 업데이트된 풀 구성이 적용되었는지, SGLang 패치가 포함되었는지 확인할 필요가 있다. 9월 9일 이후 신규 배포는 안전하다.

이번 사건은 또한 SGLang 같은 오픈소스 추론 엔진을 프로덕션에서 사용하는 기업들이 직면한 현실을 보여준다. 고성능 추론을 위해 복잡한 분산 시스템을 도입하면, 설정 오류와 엣지 케이스 버그가 테넌트 격리를 침해할 가능성이 높아진다. 보안 테스트와 upstream 협력이 선택이 아닌 필수다.

편집 안내 | 이 기사는 AI 기술을 활용하여 글로벌 뉴스 소스를 분석·종합한 후, AIB프레스 편집팀의 검수를 거쳐 발행되었습니다. 정확한 정보 전달을 위해 노력하고 있으며, 원문 출처를 함께 제공합니다.

AI 인프라
Cloudflare
보안
SGLang
KV 캐시
테넌트 격리

AI·테크 핵심 뉴스, 매주 한 통으로

한 주의 글로벌 AI·IT 뉴스 중 꼭 알아야 할 것만 골라 보내드립니다. 광고 없음, 언제든 해지.

관련 기사