무슨 일이 있었나
오픈소스 고성능 LLM/멀티모달 모델 제공 프레임워크인 SGLang (프로덕션 추론 및 물리 AI/로봇 추론 레이어에서 사용됨)은 SafeUnpickler 구성 요소에 역직렬화 우회를 포함합니다. SafeUnpickler는 허용 목록 (ALLOWED_MODULE_PREFIXES)과 거부 목록 (DENY_CLASSES)을 통해 로드할 수 있는 Python 모듈/클래스를 제한하여 이전의 역직렬화 CVE (CVE-2025-10164)를 수정하기 위해 도입되었습니다. 'builtins.' 접두사 허용 목록은 너무 광범위하고, 거부 목록은 eval/exec/compile/open을 차단하지만 __import__ 또는 getattr을 차단하지 않으므로 공격자가 이러한 기본 요소를 모든 가져올 수 있는 모듈의 임의 함수에 도달하는 가젯 체인으로 연결할 수 있습니다. 취약한 /update_weights_from_tensor 엔드포인트는 AuthLevel.ADMIN_OPTIONAL로 표시되며 API 키가 구성되지 않았을 때 인증되지 않은 요청을 허용합니다. 결함은 2026년 7월 16일에 CERT/CC에 보고되었고, 유지보수자는 7월 2일에 이를 인정했지만 VicOne 연구원 Reuel Magistrado의 2026년 9월 11일 공개 기술 공개 당시에는 패치를 배포하지 않았습니다.
왜 중요한가
SGLang은 광범위하게 사용되는 LLM 추론 서버 (LMSYS에서 생성)이며 물리 AI/로봇 추론 및 추론 레이어의 기반이기도 합니다. 추론 서버 레이어에서의 인증되지 않은 RCE는 공격자에게 모델 가중치 및 예측을 제공하는 호스트의 전체 제어를 제공합니다 — 폭발 반경은 호스트된 모든 모델 및 해당 서버에 의존하는 모든 다운스트림 응용 프로그램을 포함합니다. 이는 중요한 AI 스택 CVE의 가속화되는 (~월간~주간) 시퀀스의 네 번째입니다 (NemoClaw/Ollama, DeepSeek Harness, IBM Langflow, 이제 SGLang), AI 제공 인프라가 주요 공격 대상이 되었으며 공개 공개 시 사용 가능한 공급업체 패치가 없음을 확인합니다.
공격 경로
/update_weights_from_tensor 엔드포인트에 대한 인증되지 않은 POST를 불완전한 SafeUnpickler 거부 목록을 통해 __import__ 및 getattr 가젯을 연결하여 임의의 Python 함수 (예: os.system)에 도달하는 제작된 pickle 페이로드와 함께 전송합니다.
영향받는 시스템
SGLang (오픈소스 LLM 추론 서버), SafeUnpickler가 포함된 모든 버전이며 API 키가 구성되지 않음, 수정 이전
완화 방안
공개 시 (2026년 9월 11일) 사용 가능한 공급업체 패치가 없었습니다. 운영자는 모든 SGLang 엔드포인트에서 API 키 인증을 요구해야 하며 업스트림 수정이 보류 중일 때 /update_weights_from_tensor를 신뢰할 수 없는 네트워크에 노출하지 않아야 합니다.