인증되지 않은 상대가 관리자로 행동할 수 있는 GPUStack(GPU 클러스터에서 AI 모델을 실행하고 GPU 인스턴스를 프로비저닝하는 오픈 소스 관리자)의 취약점 해설입니다. 무슨 일이 일어나는지, 누가 영향을 받는지, 어떻게 대응해야 하는지를 방어하는 쪽의 관점에서, 공격 절차 없이 설명합니다.
- CVE
- CVE-2026-102895 (GitHub 권고 GHSA-gj9m-f8ph-pmhr)
- 심각도
- CVSS v3.1 9.8 (Critical). 권고, CVE 레코드, NVD가 같은 값
- 유형
- 부적절한 인증(CWE-287). 권고는 스푸핑에 의한 인증 우회(CWE-290)와 출처 검증 오류(CWE-346)도 함께 나열
- 전제 조건
- 인증 불필요. GPUStack에 네트워크로 닿을 수 있으면 충분. 권고에 따르면 기본 설정이 영향을 받음
- 영향 대상
- pip gpustack 2.2.0 미만
- 수정
- gpustack 2.2.0
- 날짜
- 권고: 2026년 7월 31일 / CVE 레코드: 2026년 11월 4일
- 악용
- 권고가 실제 악용을 보고. 2026년 11월 9일 CISA KEV 등재(기한 11월 12일)
방치가 위험한 이유
권고에 따르면 인증 없는 상대가 사용자, 모델, 워커 설정을 바꾸고 어떤 출처 주소에서도 동작하는 관리자 API 키를 만들 수 있습니다. 워커와 클라우드 제공자의 자격 증명을 읽을 수 있고, 관리자 전용 기능과 결합하면 워커 호스트에서의 코드 실행으로 이어집니다. 권고는 실제 악용이 관측되었다고 밝힙니다. CISA는 이 KEV 항목에 포렌식 선별이 필요하다고 표시했습니다.
이 취약점은 무엇인가
기본 설정(force_auth_localhost가 false)에서 GPUStack은 같은 머신(루프백)에서 온 요청을 내장 관리자로 취급합니다. 로컬 사용 시 인증 수고를 덜기 위한 것입니다. 문제는 "같은 머신인가"를 판단하는 근거를 외부에서 좌우할 수 있다는 점입니다.
권고에 따르면 인증 없이 관리자가 되는 경로는 두 가지입니다. 하나는 같은 호스트의 리버스 프록시입니다. 프록시가 GPUStack으로 전달하면 외부 요청도 GPUStack에게는 루프백에서 온 것으로 보입니다. 이는 셀프 호스팅에서 흔한 구성이며 헤더도 자격 증명도 필요하지 않습니다. 다른 하나는 요청 전달 헤더로, 권고는 클라이언트가 보낸 값으로 요청을 루프백처럼 보이게 만들 수 있다고 밝힙니다. 본 사이트는 악용 방법을 설명하지 않습니다.
이전(2.2.0 미만)
- 루프백 출처는 인증 없이 관리자가 됨
- 같은 호스트의 리버스 프록시 뒤에서는 외부 트래픽이 루프백처럼 보임
- 전달 헤더로 출처를 속일 수 있음
이후(2.2.0)의 변경
- 루프백을 관리자로 취급하는 경로가 제거됨
- 클라이언트 IP와 전달 헤더의 처리가 강화됨
- 실제 클라이언트 IP 헤더는 인증된 신뢰할 수 있는 게이트웨이에서 온 것만 수락
영향 범위
| 항목 | 상세 |
|---|---|
| 제품 | GPUStack (오픈 소스 GPU 클러스터 관리자) |
| 영향받는 패키지 | pip gpustack |
| 영향받는 버전 | 2.2.0 미만 (권고와 CVE 레코드) |
| 수정된 버전 | 2.2.0 |
| 실제 피해 | 권고: v2.1.1에 대한 실제 악용 관측 |
| 일어날 수 있는 일 | 모든 관리자 작업(사용자, 모델, 워커 변경), 관리자 API 키 생성, 워커와 클라우드 제공자 자격 증명 열람, 워커에서의 코드 실행(권고와 KEV 기준) |
- 권고에 따르면 기본 설정이 영향을 받습니다.
- 권고가 나열한 것은 pip 패키지 gpustack뿐입니다. 컨테이너 이미지 등 다른 방법으로 설치했다면 제공업체의 정보로 버전을 확인하세요.
영향 여부 확인 방법
GPUStack 버전 확인
설치된 gpustack의 버전을 확인하세요. 2.2.0 미만이 영향을 받습니다. 운영, 스테이징, 개발 환경이 있다면 각각 확인하세요(자산 목록 체크리스트).
외부에서 접근 가능한지 확인
GPUStack 포트나 그 앞의 리버스 프록시에 인터넷 같은 신뢰할 수 없는 범위에서 닿을 수 있는지 확인하세요. 권고에 따르면 이 결함은 같은 호스트의 리버스 프록시를 통해서도 동작하므로, 프록시 뒤에 있다는 것이 안전하다는 증거가 되지 않습니다.
force_auth_localhost 설정 확인
force_auth_localhost가 true인지 확인하세요. 권고에 따르면 기본값은 false이며, 이 경우 취약한 경로가 열려 있습니다.
오늘 해야 할 일
2.2.0으로 업데이트(최우선)
gpustack을 2.2.0 이상으로 업데이트하세요. KEV 기한은 2026년 11월 12일입니다.
그때까지는 입구를 좁힌다
권고의 회피책은 아래와 같습니다. 어느 것도 업데이트를 대체하지 못합니다.
・force_auth_localhost를 true로 설정해 루프백 요청도 인증하게 합니다.
・리버스 프록시나 게이트웨이가 외부 트래픽을 루프백처럼 보이게 하지 않도록 하고, 클라이언트가 보낸 X-GPUStack-Real-IP 헤더를 엣지에서 제거합니다.
・API를 신뢰할 수 없는 네트워크에 두지 말고 VPN이나 엣지 인증 뒤에 둡니다.
업데이트 후 관리자 API 키 감사
권고에 따르면 만들어진 관리자 API 키는 이후 어떤 출처 주소에서도 동작합니다. 업데이트로는 사라지지 않으므로 기존 API 키를 나열하고, 만든 사람이나 생성 시각을 알 수 없는 키를 삭제하세요. 특히 업데이트 이전에 만들어진 키를 살펴보세요.
자격 증명 폐기와 재발급
권고는 워커 자격 증명과 클라우드 제공자의 비밀 정보를 읽을 수 있다고 밝힙니다. GPUStack에 등록한 워커 연결 정보, 클라우드 제공자 키, 모델 다운로드 토큰 등을 폐기하고 재발급하세요. 본 사이트의 추가 의견으로, 악용된 흔적이 발견되지 않아도 재발급하세요. 취약점 대응 플레이북과 보안 기초: .env와 API 키를 참조하세요.
설정과 워커 점검
낯선 커스텀 백엔드, 사용자, 모델 설정이 없는지 확인하세요. 워커에서는 낯선 프로세스와 외부로 나가는 연결을 확인하세요. 악용이 확인된 만큼 낯선 설정은 침해의 징후일 수 있다고 보세요. 수상한 점이 발견되면 그 워커를 격리하고 재구축을 검토하세요.
악용 상황
- 권고는 v2.1.1 배포에 대한 실제 악용이 관측되었다고 밝힙니다. 악용은 제3자 보고자의 공로로 표기되어 있습니다.
- CISA가 2026년 11월 9일 기한 11월 12일로 KEV(악용이 확인된 취약점 카탈로그, 버전 2026.11.09)에 추가했습니다. 랜섬웨어 캠페인에서의 사용은 unknown, 포렌식 선별은 필요로 표시되어 있습니다.
- NVD 레코드의 상태는 Analyzed입니다. CVSS v3.1은 권고 및 CVE 레코드와 같은 9.8입니다.
- 권고는 이 취약점을 독립적으로 보고한 여러 보고자를 공로자로 표기합니다.
본 사이트의 견해: 내부망이나 프록시 뒤라는 이유로 인증 없이 두지 않는다
이것은 코딩 실수라기보다 설계 가정의 결함입니다. "내 머신에서 온 요청은 나다"라는 가정은 리버스 프록시를 앞에 두는 순간 무너집니다. 같은 호스트의 리버스 프록시는 HTTPS를 붙이고 서비스를 공개하는 널리 쓰이는 방법이기도 해서, 보호받고 있다고 느끼는 구성이 오히려 입구가 됩니다.
AI 플랫폼의 관리 콘솔에는 모델 런타임, GPU 자원, 클라우드 자격 증명이 한곳에 모여 있습니다. 인증 없는 요청을 받아들이면 피해가 한 머신에 그치지 않고 클라우드 자격 증명을 통해 바깥으로 번집니다. 관리 콘솔과 관리 API는 위치나 출처 주소가 아니라 인증으로 보호하세요. 전달 헤더를 신뢰하는 설계에서도 같은 종류의 문제가 생깁니다(XFF 스푸핑과 신뢰할 수 있는 프록시). 업데이트 후에도 만들어진 API 키와 읽혔을 수 있는 자격 증명을 정리하기 전에는 끝난 것이 아닙니다.
출처
- GPUStack — GHSA-gj9m-f8ph-pmhr: Authentication bypass via trusted loopback source (2026년 7월 31일 공개. 영향받는 버전, 수정, 회피책, 악용 보고)
- CVE.org — CVE-2026-102895 (2026년 11월 4일 공개. 2.2.0 미만, CVSS 9.8)
- NVD — CVE-2026-102895 (상태 Analyzed)
- CISA KEV — Known Exploited Vulnerabilities Catalog (2026년 11월 9일 추가, 기한 11월 12일)
최종 확인: 2026년 11월 10일.
이어서 읽기
- 실천: 취약점 대응 플레이북 / 자산 목록 체크리스트
- 판단: CVSS, EPSS, KEV로 우선순위 정하기
- 인증: XFF 스푸핑과 신뢰할 수 있는 프록시 / 인증과 인가의 차이
- 키: 보안 기초: .env와 API 키 / CVSS란?