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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-91858 — Рабочий воспроизводитель на Spring Boot и Quarkus для CVE-2026-91858 — XXE в Apache Camel camel-fop через сторонний TransformerFactory, с проверкой уязвимой и исправленной версий. | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-91858
Оборонительные ИнструментыАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийОбучение и Образование
GitHuboscerd/cve-2026-91858

CVE-2026-91858

Рабочий воспроизводитель на Spring Boot и Quarkus для CVE-2026-91858 — XXE в Apache Camel camel-fop через сторонний TransformerFactory, с проверкой уязвимой и исправленной версий.

Репозиторий
1019 ч 12 мин назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-91858 — camel-fop: XML External Entity (XXE) через сторонний TransformerFactory

Запускаемый proof-of-concept, воспроизводящий уязвимость Apache Camel, при которой FopProducer из camel-fop создавал свой javax.xml.transform.TransformerFactory только с FEATURE_SECURE_PROCESSING перед выполнением identity-преобразования над телом сообщения XSL-FO. Во встроенном трансформере JDK этот флаг сам по себе уже обнуляет ограничения accessExternalDTD/accessExternalStylesheet, поэтому внешние ресурсы отклоняются. Но когда сторонний JAXP TransformerFactory, такой как Saxon-HE, находится в classpath — например, потому что приложение также использует camel-xslt-saxon или camel-saxon — TransformerFactory.newInstance() возвращает эту реализацию, и FEATURE_SECURE_PROCESSING сам по себе не ограничивает доступ к внешним ресурсам в ней. DOCTYPE с внешним подмножеством, объявленным в теле XSL-FO, тогда разрешается во время преобразования тела, поэтому документ внешнего отправителя может прочитать файлы, доступные процессу Camel, или заставить его отправлять запросы на указанные им хосты (CWE-611).

Среда выполненияКаталогСтек
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-fop 4.22.0 (уязвим; исправлено в 4.22.1) + Saxon-HE 13.0
Camel Quarkuscamel-quarkus/Quarkus 3.39.0 + camel-quarkus-fop (Camel 4.22.0, уязвим; исправленный контроль CQ 3.40.0 / Camel 4.22.1) + Saxon-HE 13.0

Оба модуля демонстрируют уязвимое и исправленное поведение на реальном FopProducer. Saxon-HE находится в classpath в обоих — это предварительное условие для уязвимости; развёртывание по умолчанию с использованием трансформера JDK не подвержено уязвимости ни до, ни после исправления.

Что демонстрируется

Эндпоинт верификатора /exploit/attack запускает внутрипроцессный HTTP-callback и отправляет документ XSL-FO в fop:pdf, чей DOCTYPE объявляет внешний DTD, указывающий на этот callback:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fo:root SYSTEM "http://localhost:<port>/external.dtd">
<fo:root …>…Hello…</fo:root>

Оракул — это просто был ли запрошен обратный вызов — неопровержимое доказательство того, что внешний ресурс был загружен:

  • Уязвимо: TransformerFactory.newInstance() возвращает Saxon, который при одной лишь безопасной обработке всё равно загружает внешний DTD — обратный вызов срабатывает (тот же механизм читает URL-адреса file://).
  • Исправлено: ACCESS_EXTERNAL_DTD установлен в "", поэтому Saxon отказывается от внешнего DTD; обратный вызов никогда не срабатывает.
# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected: callback hit = true; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -Djava.awt.headless=true -jar target/cve-2026-91858-fop-xxe-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: callback hit = false; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected (Camel 4.22.0): callback hit = true
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -Djava.awt.headless=true -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: callback hit = false

Сводка уязвимости

СвойствоЗначение
Компонентcamel-fop (FopProducer)
CWECWE-611 (Ненадлежащее ограничение ссылки на внешнюю сущность XML)
КритичностьMEDIUM
Вектор атакиXSL-FO от внешнего отправителя достигает продюсера fop: в развёртывании, где в classpath также присутствует сторонний JAXP TransformerFactory (например, Saxon-HE)
ВоздействиеЧтение локальных файлов, доступных процессу Camel; SSRF к внутренним хостам, указанным в документе
Затронутые версииС 4.0.0 до 4.18.5, с 4.19.0 до 4.22.1 (только при наличии не-JDK TransformerFactory)
Исправленные версии4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24605
БлагодарностьClaude Security Scan Tool

Рекомендация: https://camel.apache.org/security/CVE-2026-91858.html

Затронутый модуль Quarkus собран на CQ 3.39.0 (Camel 4.22.0). Исправленный контроль — CQ 3.40.0 (Camel 4.22.1). Saxon-HE 13.0 добавлен в оба модуля как замена приложения, которое также использует camel-xslt-saxon/camel-saxon; без не-JDK TransformerFactory уязвимость недостижима.

Исправление

FopProducer теперь также устанавливает XMLConstants.ACCESS_EXTERNAL_DTD и XMLConstants.ACCESS_EXTERNAL_STYLESHEET в пустую строку на создаваемом им TransformerFactory (в дополнение к FEATURE_SECURE_PROCESSING), что соответствует конфигурации безопасной обработки XML, используемой в XmlConverter. Таким образом, доступ к внешним DTD и таблицам стилей отклоняется в любой реализации JAXP, которая соблюдает эти атрибуты, включая Saxon-HE.

Меры защиты, если обновление невозможно

Не отправляйте недоверенный XSL-FO продюсеру fop: или удалите альтернативный JAXP TransformerFactory (например, Saxon-HE) из classpath, чтобы использовался трансформер JDK — который уже отклоняет внешние DTD при безопасной обработке.

Отказ от ответственности

Этот репозиторий публикуется в образовательных и защитных целях: чтобы помочь пользователям Apache Camel понять уязвимость, проверить, затронуты ли они, и убедиться, что обновление её устраняет. Внешний DTD указывает на внутрипроцессный обратный вызов на localhost; ничего за пределами воспроизведения не затрагивается и никакие конфиденциальные файлы не читаются. Не используйте этот материал против систем, которыми вы не владеете и не управляете.

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