Delgan Loguru 0.7.3 ANSI 컬러 마크업 파서 정규식 서비스 거부(ReDoS) 취약점 (CVE-2026-120217)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTDelgan Loguru 라이브러리 0.7.3 버전 및 하위 버전
원격의 공격자가 조작된 ANSI 컬러 마크업 문자열을 전송하여 CPU 자원을 고갈시키고 애플리케이션을 무력화하는 정규식 서비스 거부(ReDoS) 공격이 가능합니다
취약한 라이브러리 버전을 업데이트하거나, 로그 입력값에 대한 ANSI 이스케이프 시퀀스 필터링 및 입력 크기 제한을 적용하십시오
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
현재 Delgan Loguru의 공식 패치 버전을 확인하고 최신 안전 버전으로 업그레이드를 수행하십시오. pip 또는 poetry를 사용하는 경우 아래 명령어를 실행합니다.
# pip를 사용하는 경우 최신 버전으로 업그레이드
pip install --upgrade loguru
# requirements.txt를 사용하는 경우 고정 버전 업데이트
# (예: 최신 패치 버전이 출시되었을 경우 해당 버전 명시)
sed -i 's/loguru==0.7.3/loguru>=0.7.4/g' requirements.txt
pip install -r requirements.txt2. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
공식 패치 적용이 어려운 경우, 외부 입력값이 로깅 시스템으로 직접 전달되기 전에 ANSI 이스케이프 시퀀스 및 마크업 태그를 제거하는 미들웨어 또는 필터를 구현해야 합니다. 또한 입력값의 최대 길이를 제한하여 ReDoS 백트래킹 범위를 최소화하십시오.
import re
# ANSI 이스케이프 시퀀스 및 잠재적 마크업 태그 제거 정규식
ANSI_CLEANER = re.compile(r'\x1b\[[0-9;]*[a-zA-Z]')
def sanitize_log_input(user_input: str, max_length: int = 500) -> str:
if not user_input:
return ''
# 1. 입력 길이 제한
truncated = user_input[:max_length]
# 2. ANSI 시퀀스 제거
cleaned = ANSI_CLEANER.sub('', truncated)
# 3. Loguru 마크업 태그 비활성화 (태그 이스케이프 처리)
return cleaned.replace('<', '\<').replace('>', '\>')3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
현재 프로젝트 환경 내에 취약한 버전의 Loguru가 설치되어 있는지 검사하고, 비정상적인 CPU 점유율 상승을 유발하는 로그 패턴을 탐지하는 스크립트입니다.
# 1. 현재 파이썬 환경 내 Loguru 설치 버전 확인
python3 -c "
try:
import loguru
print(f'[INFO] Loguru version found: {loguru.__version__}')
if loguru.__version__ == '0.7.3':
print('[WARNING] Vulnerable Loguru 0.7.3 detected! Upgrade recommended.')
else:
print('[OK] Loguru version is not 0.7.3.')
except ImportError:
print('[INFO] Loguru is not installed in this environment.')
"
# 2. 애플리케이션 로그에서 비정상적인 ANSI 시퀀스 유입 여부 감사
grep -rnw '/var/log/apps/' -e '\x1b\[' || echo '[INFO] No suspicious ANSI sequences found in logs.'내 GitHub/GitLab 레포지토리에 이 취약한 패키지가 숨어 있는지 30초 만에 스캔하세요
간접 의존성(Transitive Dependency)에 포함된 취약점은 수동 확인이 불가능합니다. Git 연동 한 번으로 취약 버전 탐지부터 호환성을 유지하는 최소 버전 업그레이드 PR까지 자동 생성하세요.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점(CVE-2026-120217)은 파이썬(Python)의 대중적인 로깅 라이브러리인 Delgan Loguru의 ANSI 컬러 마크업 파서 컴포넌트에서 발생합니다. loguru/_colorizer.py 파일 내에 정의된 AnsiParser.feed 함수는 로그 메시지의 ANSI 컬러 코드를 파싱하는 역할을 수행합니다. 이 과정에서 비효율적인 정규 표현식(Regular Expression) 패턴이 사용되어, 특정 패턴의 문자열을 처리할 때 백트래킹(Backtracking) 연산이 기하급수적으로 증가하는 정규식 서비스 거부(ReDoS, CWE-1333) 취약점이 발생합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
공격자는 애플리케이션이 외부 입력값을 검증 없이 Loguru를 통해 로깅하도록 유도합니다. 예를 들어, 웹 애플리케이션의 HTTP 헤더, 사용자 이름, API 요청 본문 등에 정교하게 조작된 ANSI 마크업 시퀀스 또는 비정상적으로 긴 반복 패턴을 삽입하여 전송합니다. AnsiParser.feed 함수가 이 입력을 처리하는 순간, 파이썬의 정규식 엔진(re 모듈)은 일치하는 패턴을 찾기 위해 과도한 백트래킹을 수행하게 되며, 이로 인해 단일 CPU 코어 점유율이 100%에 도달하여 전체 애플리케이션 스레드가 블로킹 상태에 빠지게 됩니다.
3. 비즈니스 및 인프라 파급 영향
Loguru는 수많은 파이썬 기반 웹 프레임워크(FastAPI, Flask, Django 등) 및 백엔드 마이크로서비스에서 표준 로깅 솔루션으로 널리 사용됩니다. 본 취약점은 인증되지 않은 원격 공격자가 비교적 적은 네트워크 대역폭과 단순한 페이로드만으로도 대상 서버의 CPU 자원을 완전히 고갈시킬 수 있게 만듭니다. 이로 인해 실시간 API 서비스가 중단되거나 컨테이너 오케스트레이션 환경(Kubernetes 등)에서 헬스 체크 실패로 인한 파드(Pod) 재시작 루프가 발생하여 심각한 비즈니스 가용성 저하를 초래할 수 있습니다.
공식 보안 권고문 및 참조 링크
A vulnerability was detected in Delgan loguru 0.7.3. The affected element is the function AnsiParser.feed of the file loguru/_colorizer.py of the component ANSI Color-Markup Parser. Performing a manipulation results in inefficient regular expression complexity. The attack is possible to be carried out remotely. The exploit is now public and may be used. The vendor was contacted early about this disclosure but did not respond in any way.
자주 묻는 실무 질문 (FAQ — CVE-2026-120217)
FAQQ1. CVE-2026-120217 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2026-120217의 기본 점수는 CVSS 4.3 (MEDIUM)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 0.3%입니다. 외부 네트워크 노출 여부에 따라 선제적인 패치 및 접근 제어가 권장됩니다.
Q2. CVE-2026-120217에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 delgan이며, 대상 컴포넌트는 loguru입니다. 상세 영향 범위: Delgan Loguru 0.7.3 버전 (ANSI 컬러 마크업 파서 컴포넌트의 loguru/_colorizer.py 내 AnsiParser.feed 함수)
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] 취약한 라이브러리 버전을 업데이트하거나, 로그 입력값에 대한 ANSI 이스케이프 시퀀스 필터링 및 입력 크기 제한을 적용하십시오 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2026-120217 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (delgan)
동일 카테고리 전체 보기 →Aedes MQTT 브로커 토픽 처리 미흡에 따른 서비스 거부(DoS) 취약점 권고 (CVE-2026-63341)
[영향 대상] Aedes MQTT 브로커 1.1.1 미만 버전을 사용하는 모든 Node.js 애플리케이션 및 인프라
GitLab CE/EE 미인증 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-97229)
[영향 대상] GitLab CE/EE 19.2(19.2.8 미만), 19.3(19.3.5 미만), 19.4(19.4.2 미만) 버전
GitLab CE/EE 미인증 임의 파일 읽기 취약점 보안 권고 (CVE-2026-85706)
[영향 대상] GitLab CE/EE 18.7 버전부터 19.3.1 버전 사이의 특정 릴리즈 사용자
Google Brotli 디코더 원격 코드 실행(RCE) 및 메모리 손상 취약점 보안 권고 (CVE-2026-111497)
[영향 대상] Google Brotli 라이브러리 버전 1.0.3 ~ 1.2.0을 사용하는 모든 웹 서버, 브라우저, Node.js 및 백엔드 애플리케이션
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.