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

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

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

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

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

Категории

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

CVE-2026-95628

Рабочий воспроизводитель proof-of-concept для CVE-2026-95628 — пробела в проверке абсолютных путей в Apache Camel camel-docling, с тестовыми окружениями Spring Boot и Quarkus и проверкой исправления.

Репозиторий
1 день назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-95628 — camel-docling: validatePathSafety не отклонял абсолютные пути (неполное исправление CVE-2026-40047)

Запускаемый воспроизводитель proof-of-concept для уязвимости Apache Camel, при которой проверка пути пользовательского аргумента, введённая исправлением CVE-2026-40047, искала только относительный обход. Она отклоняла значение, содержащее ../, и значение, нормализованная форма которого всё ещё содержала элемент .., — но она никогда не проверяла, является ли значение абсолютным путём, а абсолютный путь без сегментов обхода не содержит ни того, ни другого.

Среда выполненияКаталогСтек
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-docling 4.22.1
Camel Quarkuscamel-quarkus/Camel Quarkus 3.39.0 (Quarkus 3.39.0, Camel 4.22.0)

Запуск

cd camel-spring-boot          # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
until [ "$(curl -s http://localhost:8080/exploit/ready)" = "Started" ]; do sleep 1; done
curl -s http://localhost:8080/exploit/attack
docker compose down

Вывод на уязвимой сборке (идентичен в обеих средах выполнения):

1) A relative traversal value, which the CVE-2026-40047 fix does reject
     header CamelDoclingCustomArguments = [--artifacts-path, ../../../../etc]
     REJECTED by Camel: IllegalArgumentException: Custom argument at index 1 contains a relative path traversal sequence

2) Traversal hidden behind redundant separators - also rejected (normalized first)
     header CamelDoclingCustomArguments = [--artifacts-path, models/./../../../../etc]
     REJECTED by Camel: IllegalArgumentException: Custom argument at index 1 contains a relative path traversal sequence

3) An ABSOLUTE path, which contains no traversal sequence at all
     header CamelDoclingCustomArguments = [--artifacts-path, /etc]
     argv docling received: --artifacts-path /etc --to md --ocr-lang en --output /tmp/docling-... /tmp/docling-.../docling-....tmp

4) The same, attached to the flag after an equals sign
     header CamelDoclingCustomArguments = [--artifacts-path=/root/.ssh]
     argv docling received: --artifacts-path=/root/.ssh --to md --ocr-lang en --output /tmp/docling-... /tmp/docling-.../docling-....tmp

>>> PROVEN: ...

Зонды 1 и 2 показывают, что исправление CVE-2026-40047 работает как задумано. Зонды 3 и 4 — это пробел: флаг находится в списке разрешённых для этого исправления (--artifacts-path указывает docling, где искать артефакты модели), и значение проходит насквозь в обеих формах аргумента — отдельным элементом списка после флага и присоединённым после =. Сторона, способная выбирать пользовательские аргументы, могла бы таким образом направить процесс docling в любой каталог, к которому имеет доступ процесс Camel, за пределами рабочего каталога, в котором проверка должна была удерживать значения путей, — а это именно тот исход, который предыдущее исправление было призвано предотвратить.

Как это устроено

Установка docling не требуется. Изъян находится в командной строке, которую формирует Camel, поэтому опция эндпоинта doclingCommand указывает на записывающую заглушку для CLI, которая сохраняет переданный ей вектор аргументов в файл. Запускаются настоящие DoclingProducer, настоящие validateCustomArguments() и настоящий validatePathSafety(); заменён только внешний инструмент.

Только режим CLI, который используется по умолчанию, передаёт пользовательские аргументы в docling.

Достижимость

CamelDoclingCustomArguments принадлежит пространству имён заголовков Camel, которое потребители, применяющие фильтрацию заголовков Camel по умолчанию — например, потребители JMS и Kafka, — удаляют из входящих сообщений. Таким образом, проблема достигается там, где маршрут передаёт значения, подверженные внешнему влиянию, в заголовок, или где потребитель отображает входящие заголовки без такой фильтрации.

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

СвойствоЗначение
Компонентcamel-docling (DoclingProducer.validatePathSafety())
CWECWE-22 (Некорректное ограничение пути к каталогу)
СерьёзностьСредняя
Вектор атакиАбсолютный путь в качестве значения разрешённого флага, похожего на путь, в CamelDoclingCustomArguments
ВоздействиеНаправить процесс docling в любой каталог, к которому имеет доступ процесс Camel
Затронутые версииС 4.15.0 до 4.18.5, с 4.19.0 до 4.22.2
Исправленные версии4.18.5, 4.22.2, 4.23.0
JIRACAMEL-24893
БлагодарностьZhixi "Jace" Sun, независимый исследователь безопасности

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

Связанное: это неполное исправление CVE-2026-40047, а заголовок выходного пути того же компонента — CVE-2026-95629.

Исправление

validatePathSafety теперь также отклоняет значение пользовательского аргумента, похожего на путь, если оно является абсолютным путём, завершая обмен с IllegalArgumentException, сообщающим, что аргумент не должен быть абсолютным путём. Поскольку проверка находится в общем вспомогательном методе, который проверяет каждое значение, похожее на путь, обе формы аргумента охвачены.

Исправлено в main в apache/camel#26738 (fd3bc8e7), перенесено в camel-4.22.x в #26743 (e9233c37) и в camel-4.18.x в #26744 (59d30af1).

Проверка исправленной сборки

Установите camel.version в 4.22.2 и запустите снова. Проверено на 4.22.1 → 4.22.2:

3) An ABSOLUTE path, which contains no traversal sequence at all
     REJECTED by Camel: IllegalArgumentException: Custom argument at index 1 must not be an absolute path

4) The same, attached to the flag after an equals sign
     REJECTED by Camel: IllegalArgumentException: Custom argument at index 0 must not be an absolute path

>>> NOT reproduced: the absolute path was rejected too.

Смягчение последствий без обновления

Не создавайте CamelDoclingCustomArguments из значений, поступающих извне развёртывания; удаляйте этот заголовок из сообщений, приходящих извне, прежде чем они достигнут конечной точки docling; и убедитесь, что потребители, которые сопоставляют входящие заголовки, отбрасывают пространство имён заголовков Camel, чтобы только маршрут выбирал пользовательские аргументы.

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

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

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