vLLM 0.32.0, 로컬 API의 모든 웹 출처 허용 기본값 없앴다
vLLM 0.32.0 이전에는 기본 CORS 설정이 모든 웹 출처의 브라우저에 API 응답을 읽도록 허용했습니다. API 키를 설정하지 않은 서버에 브라우저가 접근할 수 있으면 악성 페이지가 모델을 호출해 GPU 연산을 쓰고 응답을 가져갈 수 있었으며, CVE-2026-115917은 이 문제를 기록했습니다. 0.32.0부터 허용 출처 기본값은 빈 목록으로 바뀌었습니다.
Reddit r/LocalLLM의 한 작성자는 llama.cpp와 vLLM 등 여러 로컬 추론 서버를 시험해 일부가 기본 설정에서 브라우저 요청에 응답했다고 썼습니다. 작성자는 자신이 만든 capy-flash 엔진도 loopback 주소에 바인딩할 때 교차 출처·재바인딩 요청을 거부하도록 수정했다고 밝혔습니다. 이는 개인의 시험·개발 경험입니다. 별도로 vLLM 프로젝트의 보안 권고는 vLLM 0.32.0 이전 기본 설정의 문제를 다루며, CVE-2026-115917은 2026년 10월 26일 공개됐습니다.
취약한 설정에서 vLLM의 OpenAI 호환 서버는 Starlette CORS 미들웨어의 허용 출처 기본값을 *로 두었습니다. 운영자가 --api-key나 VLLM_API_KEY를 설정하지 않은 서버라면 인증도 요구하지 않았습니다. 사용자가 악성 웹페이지를 열어 둔 동안 서버가 실행 중이고 브라우저에서 접근할 수 있으면, 페이지는 브라우저를 통해 GET /v1/models로 모델 목록을 조회하거나 POST /v1/chat/completions로 생성을 요청하고 응답을 읽을 수 있었습니다. 이 요청은 GPU 연산을 소모시킬 수 있으며, 대상은 로컬호스트뿐 아니라 브라우저가 접근 가능한 내부망이나 VPN의 서버도 포함합니다. API 키를 요구하는 배포는 호출자가 유효한 토큰을 가진 경우에 노출된다고 CVE 권고는 설명합니다.
127.0.0.1에만 바인딩된 서버도 같은 컴퓨터의 브라우저가 보낸 요청을 받을 수 있습니다. 웹페이지의 자바스크립트는 사용자의 브라우저에서 실행되므로, 열린 페이지가 로컬 주소로 접속을 시도할 수 있습니다. 이때 CORS는 다른 출처의 페이지가 응답을 읽을 수 있는지를 제어합니다.
vLLM 프로젝트는 허용 출처 기본값을 빈 목록으로 바꾸는 수정을 Python과 Rust 서빙 프런트엔드에 적용했습니다. 변경은 v0.32.0 릴리스에도 포함됐고, 현재 CLI 문서도 --allowed-origins의 기본값을 []로 안내합니다. 브라우저 앱을 서버에 연결하려는 운영자는 이 옵션에 허용할 웹 출처를 지정할 수 있습니다.
허용 출처 목록이 비어 있으면 신뢰 목록 밖의 웹 출처에는 Access-Control-Allow-Origin 응답 헤더가 제공되지 않고, JSON 사전 요청도 승인되지 않습니다. CORS는 브라우저의 응답 접근과 사전 요청 승인을 통제합니다. 단순 교차 출처 요청은 서버에 도달할 수 있지만, 브라우저는 허용되지 않은 출처의 응답을 페이지에 전달하지 않습니다. API 키는 별도의 Bearer 인증 수단이며, vLLM 문서는 키 인증이 일부 API 경로에만 적용된다고 설명합니다.
모델이 도구 호출 형식으로 응답하는 것과 도구를 실행하는 것은 별개입니다. vLLM은 호출 형식의 응답을 만들고, 함수 정의와 실행은 이를 사용하는 애플리케이션이 맡습니다. 따라서 명령 실행에는 해당 기능을 처리하는 클라이언트나 에이전트 구성이 필요합니다.
참고 자료
- Probably old news, but any website you have open can reach your local LLM server while you browse
- CVE Record: CVE-2026-115917
- Permissive default CORS origins allow cross-origin requests to the vLLM HTTP server · Advisory · vllm-project/vllm · GitHub
- [Security] Restrict default CORS origins by jperezdealgaba · Pull Request #61009 · vllm-project/vllm
- Release v0.32.0 · vllm-project/vllm · GitHub
- serve - vLLM
- Security - vLLM
- Tool Calling - vLLM