Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2018-14442 — Foxit Reader CVE-2018-14442용 PoC | Kitploit
도구/GitHubGitHub/payatu/cve-2018-14442
Exploit FrameworksVulnerability AnalysisExploitationReverse EngineeringFuzzingBinary Exploitation
GitHubpayatu/cve-2018-14442

CVE-2018-14442

Foxit Reader CVE-2018-14442용 PoC

저장소 보기
58177년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Foxit Reader CPDF_Parser::m_pCryptoHandler 사용 후 해제

  1. PDF 형식 배경
  2. 암호화 사전
  3. 취약점 세부 정보
  4. ASLR 및 DEP 우회
  5. 환경 세부 정보
  6. 트리거
  7. 작성자

PDF 형식 배경

PDF는 문서를 나타내는 데 사용되는 파일 형식입니다. PDF는 여러 데이터 객체로 구성됩니다.

  • 단순 기본 객체 Integer, Number, Boolean, Null

  • 복합 객체

    FormatName
    [.*]Array
    (.*)String
    <<.*>>Dictionary
    <.*>Hex String
    /.*Name
    stream.*endstreamStream

이 객체들은 PDF가 어떻게 보이고 무엇을 포함하는지 정의합니다. PDF의 구조는 Direct(직접) 객체와 Indirect(간접) 객체의 두 가지 유형으로 존재합니다. 간접 객체는 객체 번호(Object number)와 세대 번호(Generation number)로 시작하며 그 뒤에 실제 객체가 옵니다. 간접 객체는 n m R 형식으로 다른 객체에서 직접 참조될 수 있습니다. 여기서 n과 m은 각각 객체 번호와 세대 번호입니다. 사전(Dictionary) 객체는 문서의 기본 구성 요소입니다. 페이지나 문서 자체를 구성하는 데 필요한 몇 가지 일반적인 사전 객체가 있습니다. 가장 중요한 것은 다른 모든 Pages, Metadata, Names 등에 대한 링크를 정의하는 Root 사전이며, 각 항목은 다른 객체가 될 수 있습니다. 스트림(Stream) 객체는 글꼴, 그림 또는 압축/암호화된 데이터와 같은 대부분의 이진 데이터를 포함합니다.

암호화 사전

PDF 문서는 내용을 무단 액세스로부터 보호하기 위해 암호화될 수 있습니다. 암호화는 Encrypt 사전 자체와 같은 일부 예외를 제외하고 문서의 PDF 파일에 있는 모든 문자열과 스트림에 적용됩니다. 암호화는 주로 스트림 객체에 적용됩니다. 암호화는 문서의 내용보다는 구조에 대한 정보를 전달하는 데 주로 사용되는 정수나 부울 값과 같은 다른 객체 유형에는 적용되지 않습니다. 암호화 관련 정보는 문서의 트레일러(trailer) 사전에 있는 "Encrypt" 항목의 값인 문서의 암호화 사전에 저장되어야 합니다.

취약점 세부 정보

CPDF_Parser::StartParse는 암호화된 PDF의 간접 객체에 대해 m_pCryptoHandler를 설정합니다. m_pCryptoHandler는 CPDF_Parser::ReleaseEncryptHandler가 완료되면 null로 설정되어야 합니다. 그러나 CPDF_Parser::ReleaseEncryptHandler는 CPDF_Parser의 CryptoHandler 참조를 제거하지 않아 댕글링(dangling) 상태가 됩니다. 이후 파서가 Root 사전에서 참조하는 객체를 파싱하기 시작하면 m_pCryptoHandler+8이 호출되어 데이터를 복호화합니다. 유사한 버그가 pdfium의 커밋 741c362fb75fd8acd2ed2059c6e3e716a63a7ac8에서 패치되었습니다. https://bugs.chromium.org/p/chromium/issues/detail?id=726503 참조.

ASLR 및 DEP 우회

PDF는 문서에 JS를 포함할 수 있으며, Catalog 유형 사전의 OpenAction에 입력하면 자동으로 실행될 수 있습니다. JS 실행이 가능해지면 프로세스 공간에 객체를 스프레이하여 ROP 체인을 작성할 예측 가능한 주소를 확보할 수 있습니다. Foxit Reader에서 PDF 문서에 서명할 때 설치 디렉터리의 plugins\jrsys\x86\jrsysMSCryptoDll.dll을 사용하여 서명 정보를 읽습니다. 이때 jrsysCryptoDll.dll은 정적 주소 0x10000000에 로드됩니다. 이 DLL은 VirtualAlloc을 가져오므로 페이로드를 실행하기가 더 쉽습니다. 첨부된 익스플로잇은 힙 스프레이를 사용하여 예측 가능한 메모리 레이아웃을 확보하고, ROP 체인을 사용하여 RWX 페이지를 할당하고 페이로드를 복사 및 실행합니다.

환경 세부 정보

이 익스플로잇은 MS Windows 7 Enterprise Build 7601 SP1 x86에서 실행되는 Foxit Reader 9.0.1.1049 x86을 사용하여 테스트되었습니다. 익스플로잇은 힙이 특정 상태에 있어야 하므로, 익스플로잇이 실패하면 다시 시도하십시오. 비디오 데모를 참조하십시오. 이 취약점은 Android용 Foxit PDF Reader 및 Converter에도 존재합니다.

트리거

bitcoins.pdf는 해제된 메모리를 재할당하고 핵심 버그를 트리거하는 조작된 PDF입니다. 디버거에서 크래시를 재현하려면 FoxitReader.exe에 대해 Page Heaps를 활성화하고 bitcoins.pdf를 여십시오.

데모

데모 비디오

작성자

이 크래시는 Payatu에서 개발한 퍼징 플랫폼인 Cloudfuzz에 의해 발견되었습니다. 추가 분석 및 익스플로잇은 Sudhakar가 수행했습니다.

도구 다운로드