CVE-2026-28351: CVE-2026-28351: 제어되지 않은 자원 소비 in pypdf RunLengthDecode
Source: Dev.to
취약점 개요
- CVE ID: CVE-2026-28351
- CWE ID: CWE-400
- CVSS v4.0 점수: 6.9
- 공개일: 2026-02-28
- 공격 벡터: 네트워크
- 영향: 서비스 거부(DoS)
- 익스플로잇 상태: PoC 제공
영향을 받는 구성 요소
이 문제는 6.7.4 이전 버전의 pypdf 라이브러리에 존재합니다. 취약점은 RunLengthDecode 필터 구현에 있습니다.
기술적 세부 사항
잘못된 Run‑Length Encoding (RLE) 스트림을 포함한 PDF를 제작하면 디코더가 다음과 같은 동작을 할 수 있습니다:
- 무한 루프에 빠지거나
- 메모리를 무제한으로 할당하여 Out‑Of‑Memory (OOM) 상태가 발생합니다.
이로 인해 신뢰할 수 없는 PDF를 엄격한 자원 제한 없이 처리하는 애플리케이션에서 서비스 거부 상황이 발생합니다.
코드 변경 사항 (수정)
버전 6.7.4에서 도입된 수정은 최대 출력 길이 검사를 추가합니다:
+ RUN_LENGTH_MAX_OUTPUT_LENGTH = 75_000_000
+ if total_length > RUN_LENGTH_MAX_OUTPUT_LENGTH:
+ raise LimitReachedError("Limit reached while decompressing.")
완화 방안
-
라이브러리 업그레이드:
pip install "pypdf>=6.7.4" -
라이브러리를 로드하는 모든 서비스를 재시작하여 새 버전이 사용되도록 합니다.
-
추가 하드닝 조치 적용:
- PDF를 파싱하는 워커 프로세스에 메모리 제한을 설정합니다.
- 전체 처리 전에 PDF 파일 구조를 검증합니다.
참고 자료
- GitHub 보안 권고: GHSA-f2v5-7jq9-h8cg
- Pull Request #3664: Add max output length check to RunLengthDecode
- PyPI 릴리스: pypdf 6.7.4
전체 분석은 공급업체 웹사이트에 게시된 CVE‑2026‑28351 상세 보고서를 참고하십시오.