[공격] 분석 — CVE-2025-69720
A stack-based buffer overflow in the
infocmptool of ncurses before 6.5-20251213 allows potential arbitrary code execution via malicious terminal description files, requiring urgent updates or restriction of untrusted input files.
📋 요약
- 심각도 high · CVSS 7.3 · EPSS 0.00414 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: infocmp 도구가 터미널 설명 파일(terminfo)을 처리하는 과정에서 progs/infocmp.c 내 analyze_string 함수가 입력값의 길이를 적절히 검증하지 않고 스택 버퍼에 복사할 때 발생함. 매우 긴 문자열이 포함된 조작된 terminfo 파일을 infocmp로 읽어들일 때 Stack Overflow가 트리거됨.
(2) 공격 단계:
- 정찰: 타겟 시스템에 설치된 ncurses 버전 확인 및
infocmp도구 존재 여부 파악. - 초기 접근: 공격자가 조작된 terminfo 파일을 생성하여 타겟 시스템에 업로드하거나, 사용자가 해당 파일을 다운로드하도록 유도(UI:R).
- 실행/권한 획득: 사용자가
infocmp [조작된_파일]을 실행. 스택의 Return Address를 덮어써서 제어 흐름을 변경하고 Shellcode 또는 ROP Chain 실행. - 지속/영향: 프로세스 권한 내에서 임의 명령 실행.
(3) 공격 표면:
- 엔드포인트:
infocmp커맨드라인 유틸리티. - 파라미터: 입력 파일 경로 및 해당 파일 내부의 문자열 데이터.
- 함수:
analyze_string()(Stack Buffer Overflow 발생 지점).
(4) CVSS 벡터 분석:
- AV:L (Local): 공격자가 로컬 쉘 접근 권한을 가졌거나 파일을 업로드할 수 있어야 함.
- AC:L (Low): 트리거 조건이 단순함.
- PR:N (None): 특정 특권 권한 없이도 실행 가능.
- UI:R (Required): 사용자가 악성 파일을
infocmp로 실행하는 상호작용이 필수적임.
악용 가능성: 본 취약점은 AV:L 및 UI:R 벡터가 결합되어 있어, 공격자가 대상 시스템에 이미 로컬 접근 권한을 가졌거나 사용자가 악의적으로 조작된 terminfo 파일을 실행하도록 유도해야 하는 높은 제약 조건을 가집니다. 공격 표면은 ncurses 라이브러리의 infocmp 도구 내 analyze_string 함수이며, 특히 외부에서 입력되는 터미널 정의 파일(terminfo)의 특정 파라미터가 스택 버퍼 오버플로우를 트리거하는 지점이 됩니다. EPSS 수치가 0.00414로 매우 낮고 KEV에 등재되지 않은 점은 현재 야생(In-the-wild)에서 이 취약점 단독으로 자동화된 공격이 이루어질 가능성이 희박함을 시사합니다. 하지만 로컬 권한 상승(LPE)을 노리는 공격자에게는 유용한 벡터가 될 수 있으며, 특히 관리자 권한으로 infocmp를 실행하게 만드는 사회공학적 기법이나 설정 파일 오염과 체이닝될 때 실질적인 위협이 됩니다. 결과적으로 이론적인 심각도보다 실제 악용 난이도가 매우 높은 'Hard' 등급의 취약점이지만, 신뢰할 수 없는 터미널 정의 파일을 처리하는 환경에서는 잠재적인 실행 경로가 존재합니다.
💥 영향 분석
(1) 기술적 위험: 스택 기반 버퍼 오버플로우를 통해 프로세스의 제어 흐름을 탈취함으로써 임의 코드 실행(RCE) 가능. 성공 시 해당 도구를 실행한 사용자의 권한으로 시스템 명령어를 수행할 수 있음.
(2) 비즈니스 영향: 로컬 사용자 권한 탈취 및 데이터 유출 위험이 있으며, 관리자 권한으로 infocmp가 동작하는 환경일 경우 전체 시스템 장악으로 이어질 수 있음. 다만, EPSS 0.00414 및 악용 등급 'hard'는 실제 야생에서의 자동화된 공격 가능성이 현재로서는 낮음을 시사함.
🔗 관련 취약점·체이닝
- 추정: Local File Inclusion(LFI) 또는 원격 파일 업로드 취약점과 체이닝될 경우, 외부 공격자가 악성 terminfo 파일을 서버에 배치하고 특정 조건에서
infocmp가 호출되게 하여 Remote Code Execution으로 확장 가능. - 추정: Memory Corruption 유형의 특성상, ASLR/DEP 등 현대적 OS 보호 기법을 우회하기 위해 정보 유출(Information Leak) 취약점과 결합하여 메모리 주소를 계산하는 체인이 필요함.
🔎 탐지
(1) 로그 지표: infocmp 실행 시 비정상적으로 긴 인자값 전달 또는 프로세스의 Segmentation Fault (SIGSEGV) 발생 로그.
(2) 탐지 규칙:
- 로직 1 (프로세스 모니터링):
process.name == "infocmp" && process.args.length > [임계값] - 로직 2 (시스템 로그):
syslog내infocmp관련segfault at ... ip ... sp ...패턴 탐지. - 로직 3 (파일 무결성):
/usr/share/terminfo등 표준 경로 외의 위치에서 실행되는infocmp입력 파일 감시.
(3) 오탐 시나리오: 매우 복잡한 커스텀 터미널 설정을 사용하는 환경에서는 정상적인 긴 문자열이 발생할 수 있음. 신뢰할 수 있는 관리자의 실행 여부와 비교하여 튜닝 필요.
🛡️ 완화 방안
- 즉시(긴급 차단): 신뢰할 수 없는 출처의 terminfo 파일 업로드 및 실행 금지.
infocmp도구 사용 제한. (난이도: 저 / 영향: 낮음 / 검증: 실행 권한 확인) - 단기(완화): 시스템 수준의 메모리 보호 기법(ASLR, Stack Canary) 활성화 상태 확인. (난이도: 저 / 영향: 없음 / 검증:
cat /proc/sys/kernel/randomize_va_space) - 근본(해결): ncurses 버전을 6.5-20251213 이상으로 업데이트. (난이도: 중 / 영향: 낮음 / 검증:
ncurses버전 확인)
[파이프라인 근거] 본 리포트는 다중 소스에서 일관성이 확인된 데이터를 기반으로 작성되었으며, 실측 EPSS(0.00414)와 CVSS 7.3을 대조하여 실제 악용 난이도가 'hard'임을 판별하였습니다. 이에 따라 즉각적인 긴급 대응보다는 이번 주 내 처리하는 scheduled 우선순위로 결정되었습니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.3 · non-KEV · EPSS=0.00414 · exploit=hard · in_scope=None