CVE-2026-28351: CVE-2026-28351: 제어되지 않은 자원 소비 in pypdf RunLengthDecode

발행: (2026년 2월 28일 오후 04:10 GMT+9)
3 분 소요
원문: Dev.to

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.")

완화 방안

  1. 라이브러리 업그레이드:

    pip install "pypdf>=6.7.4"
  2. 라이브러리를 로드하는 모든 서비스를 재시작하여 새 버전이 사용되도록 합니다.

  3. 추가 하드닝 조치 적용:

    • 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 상세 보고서를 참고하십시오.

0 조회
Back to Blog

관련 글

더 보기 »

일이 정신 건강 위험이 될 때

markdown !Ravi Mishrahttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fu...