[방어] 분석 — CVE-2026-9198
CVE-2026-9198 enables unauthenticated RCE in IBM Langflow OSS 1.0.0‑1.10.0 via a token‑minting auto_login API chained with an exec‑based validate/code endpoint, and the highest‑priority immediate mitigation is to block those two APIs at the network layer.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 0.01886 · 악용난이도 easy · KEV
🔍 공격 기법
1️⃣ 공격자는 /api/v1/auto_login POST 요청만으로 SUPERUSER JWT 토큰을 무조건 발급받는다.
2️⃣ 동일 호스트에 바로 이어서 /api/v1/validate/code POST 에 code 파라미터에 임의 쉘 명령을 포함하면 백엔드가 exec() 를 실행해 전체 시스템 권한으로 명령이 수행된다.
3️⃣ 네트워크 접근 제한이나 인증 검증이 전혀 없으므로 외부에서 직접 호출 가능(AV:N, PR:N, UI:N).
악용 가능성: 이 취약점은 AV:N/AC:L/PR:N/UI:N 이라는 CVSS 벡터가 의미하듯, 네트워크를 통해 누구나 인증·사용자 상호작용 없이 바로 접근할 수 있어 공격 전제가 매우 낮습니다. 자동 로그인 API /api/v1/auto_login 이 모든 호출자에게 SUPERUSER 토큰을 발급하고, 그 토큰으로 /api/v1/validate/code 의 exec() 함수를 호출하면 원격 코드 실행(RCE)이 가능하므로 실제 악용 난이도는 “easy” 수준에 해당합니다. EPSS 값 0.01886(≈1.9%)은 전 세계적으로 약 2% 정도의 발생 확률을 시사하지만, KEV 목록에 등재된 점은 이미 실증적 악용 사례가 존재함을 보여줍니다. 공격 표면은 기본 설치 시 비활성화되지 않은 두 개의 REST 엔드포인트와 해당 API를 노출하는 HTTP(S) 포트이며, 내부·외부 네트워크 모두에서 접근이 가능할 경우 위험이 확대됩니다. 따라서 이 취약점은 인증 및 네트워크 제한이 전혀 없는 상태에서 단순한 HTTP 요청만으로 전체 시스템을 장악할 수 있는 고위험 시나리오를 제공합니다.
💥 영향 분석
- 임의 OS 명령 실행 → 파일 조작·데이터 탈취·서비스 중단 등 모든 CIA 삼중 위협 발생.
- 기본 배포에서는 인증 절차가 없기 때문에 인터넷에 노출된 인스턴스라면 누구나 전체 서버를 장악할 수 있다.
🔗 관련 취약점·체이닝
- 토큰 발급 우회(CWE‑287)와 명령 실행(CWE‑78)의 조합은 다수 웹 프레임워크에서 반복적으로 관찰되는 패턴이다.
- 동일한 흐름을 이용해 다른 REST API가 존재한다면 연쇄 공격(chain)으로 확대될 위험이 있다.
🔎 탐지
로그 지표
access.log:uri_path="/api/v1/auto_login"이면서status=200및 응답 본문에 JWT 토큰(패턴eyJhbGci)이 포함된 레코드.application.log:uri_path="/api/v1/validate/code"POST payload에exec(,system(,;,`등 쉘 명령 패턴이 나타나는 경우.
SIEM 규칙 예시 (키워드 기반)
1️⃣ 자동 토큰 발급 과다 호출 탐지
1index=web sourcetype=access_combined uri_path="/api/v1/auto_login" status=200 2| stats count by src_ip, _time span=1m 3| where count > 5오탐 튜닝: src_ip 가 사내 관리 서브넷(10.0.0.0/8)인 경우 제외.
2️⃣ 코드 실행 시도 탐지
1index=app sourcetype=application_log uri_path="/api/v1/validate/code" 2| regex _raw="exec\(|system\(|;|\`" 3| stats count by src_ip, user_agent 4| where count >= 1오탐 튜닝: 테스트용 문자열 exec_test 를 화이트리스트 정규식 !~"exec_test" 로 제외.
3️⃣ 토큰 연계 탐지 (두 단계 결합)
1let auto = search index=web uri_path="/api/v1/auto_login" | fields src_ip, token; 2let exec = search index=app uri_path="/api/v1/validate/code" | regex _raw="exec\(|system\(" | fields src_ip, used_token; 3auto | join src_ip [exec] 4| where token == used_token오탐 튜닝: CI/CD 서버 IP(예: 192.168.100.0/24)에서 발생하는 정상 토큰 사용은 src_ip 필터링으로 제외.
오탐 시나리오와 튜닝
- 정기적인 자동화 스크립트가
auto_login을 주기적으로 호출 → 임계값을 5회/1분 이하로 낮추고, 내부 IP 대역만 허용. - 개발 테스트 환경에서 의도적으로
exec문자열을 포함한 샘플 코드가 로그에 남을 경우 화이트리스트 정규식(!~"test_exec_pattern")으로 제외.
🛡️ 완화 방안
1️⃣ IP‑기반 접근 제한 – 사내 IP 대역만 /api/v1/auto_login·/api/v1/validate/code 호출 허용.
난이도: 중간 – 보안 그룹 혹은 Nginx allow/deny 설정 수정.
운영 영향: 외부 테스트·데모 환경이 제한될 수 있음.
검증: 허용된 IP에서만 정상 응답(200) 확인.
2️⃣ JWT TTL 축소 – 발급 토큰의 exp 를 5분 이하로 설정하고, 사용 후 즉시 폐기하도록 애플리케이션 로직 추가.
난이도: 중간 – 코드 레벨 수정 및 재배포 필요.
운영 영향: 자동화 스크립트가 토큰 재사용에 실패할 가능성 → 재인증 주기 단축.
검증: 발급된 JWT exp 값 확인 후 5분 초과 시 인증 오류 발생 테스트.
3️⃣ Rate‑limit – /api/v1/auto_login 에 1분당 최대 3회, /api/v1/validate/code 에 1분당 2회 제한 적용.
난이도: 낮음 – API Gateway(예: Kong)에서 플러그인 설정.
운영 영향: 정상 사용자는 거의 영향을 받지 않음.
검증: 초과 요청 시 429 Too Many Requests 응답 확인.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=9.8 · KEV · EPSS=0.01886 · exploit=easy · in_scope=None