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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-88789 — Исполняемый proof-of-concept для воспроизведения CVE-2026-88789, демонстрирующий XXE и SSRF в Apache Camel Quarkus camel-quarkus-support-xalan через XSLT TransformerFactory. | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-88789
Оборонительные ИнструментыАнализ уязвимостейЭксплуатацияВеб-безопасностьОбучение и Образование
GitHuboscerd/cve-2026-88789

CVE-2026-88789

Исполняемый proof-of-concept для воспроизведения CVE-2026-88789, демонстрирующий XXE и SSRF в Apache Camel Quarkus camel-quarkus-support-xalan через XSLT TransformerFactory.

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

Популярное

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

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

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

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

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

CVE-2026-88789 — Camel Quarkus: принудительно заданный Xalan TransformerFactory отменяет ограничения JAXP на внешний доступ

Запускаемый proof-of-concept репродуктор уязвимости Apache Camel Quarkus, при которой расширение поддержки XSLT (camel-quarkus-support-xalan) предоставляет собственный TransformerFactory на базе Xalan для компонента xslt и регистрирует его как JAXP-реализацию по умолчанию. Xalan-J 2.7.x предшествует JAXP 1.5 и не может соблюдать javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD или ACCESS_EXTERNAL_STYLESHEET — setAttribute() выбрасывает IllegalArgumentException для обоих — поэтому ограничения внешнего доступа, которые Apache Camel применяет к создаваемому им TransformerFactory, никогда не действовали.

Среда выполненияКаталогСтек
Camel Quarkuscamel-quarkus/Camel Quarkus 3.36.0 (Quarkus 3.36.0, Camel 4.20.0)

Только Camel Quarkus. Уязвимый код — это расширение Camel Quarkus, а не компонент Camel. Обычный Camel и Camel Spring Boot используют TransformerFactory из JDK, который соблюдает оба атрибута, поэтому воспроизводить там нечего — по этой причине в этом репозитории нет варианта camel-spring-boot/.

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

Злоумышленник, предоставляющий преобразуемый XML-документ, может читать локальные файлы или обращаться к внутренним сетевым ресурсам через объявление внешней сущности в этом документе.

cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

Ожидаемый вывод на уязвимой сборке (сокращённо — драйвер выполняет шесть проверок, см. camel-quarkus/README.md):

1) xslt endpoint, body is a StreamSource, external entity -> file:///tmp/cve-2026-88789-secrets/db-password.txt
     transformation result: [db.password=LOCAL-FILE-s3cr3t-99]
     local file contents in the output: true

2) xslt endpoint, body is a StreamSource, external entity -> http://127.0.0.1:8080/internal/secret
     transformation result: [INTERNAL-SECRET-s3cr3t-42]
     internal endpoint response in the output: true

4) CONTROL - same document as a String body (Camel converts it to a SAXSource itself)
     transformation result: []
     local file contents in the output: false

5) TransformerFactory.newInstance() anywhere in the application
     factory: org.apache.camel.quarkus.support.xalan.XalanTransformerFactory
     setAttribute(ACCESS_EXTERNAL_DTD, ""):        REFUSED, IllegalArgumentException: ...
     identity transform of the same document: [... <data>db.password=LOCAL-FILE-s3cr3t-99</data> ...]

Requests the XML parser made to internal endpoints on its own: [GET /internal/secret, GET /internal/leak.dtd]

>>> PROVEN: ...

Проверено также на Camel Quarkus 3.40.0: все утечки в проверках исчезают, внутренние эндпоинты не получают ни одного запроса, а драйвер выводит NOT reproduced.

Какие пути затронуты

На пути компонента xslt затронуты только тела, которые достигают трансформера уже как javax.xml.transform.Source. Тела других типов — String, byte[], InputStream — преобразуются Apache Camel в SAXSource с отключённой загрузкой внешних сущностей и внешних DTD и не затронуты. Проверка 4 в репродукторе — это безопасный путь, рядом с небезопасным.

Поскольку фабрика также регистрируется как JAXP-реализация по умолчанию (расширение поддержки поставляет META-INF/services/javax.xml.transform.TransformerFactory), любой другой код в приложении, получающий фабрику через TransformerFactory.newInstance(), теряет те же ограничения без каких-либо ошибок. Именно поэтому в рекомендациях перечислены расширения, которые сами ничего не преобразуют:

РасширениеПодверженность
camel-quarkus-xsltпуть компонента xslt и JAXP-реализация по умолчанию
camel-quarkus-xslt-saxonJAXP-реализация по умолчанию
camel-quarkus-tikaJAXP-реализация по умолчанию
camel-quarkus-xmlsecurityJAXP-реализация по умолчанию

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

СвойствоЗначение
Компонентcamel-quarkus-support-xalan (расширение поддержки XSLT)
CWECWE-611 (Ненадлежащее ограничение ссылок на внешние XML-сущности)
КритичностьВысокая
Вектор атакиВнешняя сущность или внешний DTD, объявленные в преобразуемом XML-документе, где тело достигает эндпоинта xslt уже как javax.xml.transform.Source
ВоздействиеЧтение локальных файлов; выполнение запросов к внутренним сетевым ресурсам (SSRF)
Уязвимые версииС 3.2.0 до 3.33.3, с 3.34.0 до 3.40.0
Исправленные версии3.33.3 (ветка LTS), 3.40.0
GitHub issueapache/camel-quarkus#9115
БлагодарностьОбнаружено в ходе внутреннего анализа с использованием Claude Security Tool

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

Исправление

XalanTransformerFactory теперь применяет ограничения самостоятельно, вместо того чтобы полагаться на атрибуты, которые Xalan не может соблюдать:

  • Преобразуемые документы разбираются с помощью XMLReader, который не разрешает ни внешние общие, ни внешние параметрические сущности и не загружает внешние DTD — та же конфигурация, которую использует XmlConverter.createSAXParserFactory() из Apache Camel для тел, которые camel-xslt сам преобразует в SAXSource. SAXSource, несущий настроенный вызывающей стороной XMLReader, используется как есть, а DOMSource и StAXSource уже разобраны.
  • Ресурсы, загружаемые во время преобразования функцией document(), запрещены, если только их не разрешает собственный URIResolver приложения, и это ограничение устанавливается на каждой точке входа, которая предоставляет что-либо для преобразования, включая точки входа SAX push, на трансформеры которых Xalan не копирует резолвер фабрики. Приложения, устанавливающие собственный резолвер — camel-xslt делает это на каждом обмене — по-прежнему переопределяют его, как и раньше.

Исправлено в ветке main в 9a570b64 и 9dd11779, перенесено в 3.33.x в ad9c5236 и 3d886769.

Если вы пока не можете обновиться

  • Не передавайте javax.xml.transform.Source, построенный из недоверенных входных данных, в эндпоинт xslt. Оставляйте тело сообщения как String, byte[] или InputStream, чтобы Apache Camel сначала преобразовал его в SAXSource с отключёнными внешними сущностями.
  • convertBodyTo для существующего тела типа Source — не обходной путь: это преобразование выполняет identity-преобразование через ту же фабрику. Проверка 5 в репродукторе — это и есть identity-преобразование, и оно приводит к утечке.
  • Код приложения или библиотеки, полагающийся на ограничения JAXP на внешний доступ, должен явно запрашивать реализацию из JDK, указывая com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl, вместо того чтобы полагаться на TransformerFactory.newInstance(). Проверка 6 — это контроль, и она запрещает чтение.

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

Этот репозиторий опубликован в образовательных и защитных целях: чтобы помочь пользователям Apache Camel Quarkus понять уязвимость, проверить, затронуты ли они, и убедиться, что обновление её устраняет. Не используйте этот материал против систем, которыми вы не владеете и не управляете.

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