🇰🇷 한글 설명
pypdf는 순수 Python으로 작성된 무료 오픈소스 PDF 라이브러리입니다. 6.21.4 이전 버전에서는 조작된 순환 DictionaryObject를 복제하거나 복사할 때 무한 루프에 빠질 수 있습니다. 복제 과정이 원본 참조가 아닌 생성된 대상 참조를 검사하여 일부 순환이 방문 객체 검사를 우회합니다. 이 문제는 6.21.4 버전에서 수정되었습니다.
💡 쉬운 설명
PDF 파일을 처리하는 프로그램이 특수하게 만들어진 PDF를 만나면 멈춰버릴 수 있습니다. 이로 인해 서비스가 응답하지 않거나 시스템 자원이 과도하게 소모될 수 있습니다.
🇺🇸 원문 (English)
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.4, pypdf can enter an infinite loop when cloning or duplicating a crafted cyclic DictionaryObject. Clone traversal checked generated destination references rather than the original source references, allowing some source cycles to evade the visited-object check. This issue is fixed in version 6.21.4.
📍 영향받는 시스템
pypdf 6.21.4 미만 버전을 사용하는 Python 애플리케이션 및 서버
⚔️ 공격 벡터
공격자가 순환 참조를 포함한 악성 PDF 파일을 업로드하거나 전달하여 pypdf가 복제/복사 작업 중 무한 루프에 빠지게 함
🛡️ 대응 방법
pip install --upgrade pypdf 명령으로 pypdf를 6.21.4 이상 버전으로 업데이트
🔧 검증 코드
출력된 버전이 6.21.4 이상이면 패치가 적용된 것이며, 6.21.4 미만이면 즉시 업그레이드가 필요합니다.
pip show pypdf 2>/dev/null | grep -i '^version'