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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-78165 — Рабочий воспроизводитель proof-of-concept для CVE-2026-78165, демонстрирующий нефильтрованную десериализацию JDK полезных нагрузок Redis PUBLISH в Apache Camel camel-spring-redis. | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-78165
Оборонительные ИнструментыАнализ уязвимостейЭксплуатацияОбучение и Образование
GitHuboscerd/cve-2026-78165

CVE-2026-78165

Рабочий воспроизводитель proof-of-concept для CVE-2026-78165, демонстрирующий нефильтрованную десериализацию JDK полезных нагрузок Redis PUBLISH в Apache Camel camel-spring-redis.

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

Популярное

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

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

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

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

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

CVE-2026-78165 — camel-spring-redis: нефильтрованная десериализация JDK полезных нагрузок Redis

Запускаемый воспроизводитель proof-of-concept для уязвимости Apache Camel, при которой camel-spring-redis, когда опция serializer не настроена, создавал голый JdkSerializationRedisSerializer без java.io.ObjectInputFilter и использовал его для каждого чтения. RedisConsumer.setBody применял его к сырым байтам каждого сообщения, опубликованного в подписанные каналы, до создания Exchange — поэтому субъект, способный выполнить PUBLISH в подписанный канал, напрямую достигал стока десериализации и мог выполнить readObject произвольного сериализованного графа объектов (удалённое выполнение кода, CWE-502). Тот же сериализатор по умолчанию использовался для команд чтения продюсера (GET/HGET/HGETALL/HVALS) и SpringRedisIdempotentRepository.

Среда выполненияКаталогСтек
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-spring-redis 4.22.0 (уязвим; исправлено в 4.22.1)
Camel Quarkuscamel-quarkus/Quarkus 3.29.0 + camel-quarkus-spring-redis 3.29.0 (Camel 4.15.0, уязвим)

Дефект восходит к появлению компонента в 2.11.0, поэтому уязвим каждый затронутый выпуск и Camel 4.15.0 в последнем Camel Quarkus. Исправление поставляется в Camel 4.18.5 / 4.22.1 / 4.23.0; модуль Spring Boot запускает как уязвимую сборку (4.22.0), так и исправленную сборку (4.22.1). Ни один выпущенный Camel Quarkus пока не содержит исправленный Camel.

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

Приложение запускает маршрут Camel, который выполняет SUBSCRIBE к cve-channel без опции serializer (поэтому используется JdkSerializationRedisSerializer по умолчанию). Атакующий — это обычный Redis клиент, который может только PUBLISH в этот канал — у него нет доступа к процессу Camel. Он публикует сырые сериализованные байты намеренно безвредного com.example.PwnMarker, чей readObject лишь переключает глобальный флаг JVM (без гаджета, без команды). На уязвимой сборке потребитель десериализует его и readObject выполняется; на исправленной сборке список разрешений по умолчанию (стандартные типы java./javax. и org.apache.camel.) отклоняет com.example.PwnMarker с InvalidClassException: filter status: REJECTED.

cd camel-spring-boot
mvn clean package
docker compose up -d --build     # starts Redis + the reproducer
curl -s http://localhost:8080/exploit/attack
docker compose down

Ожидаемый вывод на затронутой сборке:

Attacker connects to Redis redis:6379 and PUBLISHes a serialized com.example.PwnMarker to channel 'cve-channel'.
PUBLISH delivered to 1 subscriber(s).

Result:
>>> PROVEN: the Redis consumer deserialized the attacker-published, non-allow-listed class
>>> (com.example.PwnMarker) with no ObjectInputFilter — its readObject executed.

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

СвойствоЗначение
Компонентcamel-spring-redis (camel-spring-redis-starter / camel-quarkus-spring-redis)
CWECWE-502 (Десериализация недоверенных данных)
Уровень серьёзностиВЫСОКИЙ
Вектор атакиPUBLISH в канал, на который подписан потребитель Camel spring-redis (или контроль над ключом Redis, который читает продюсер); сериализатор по умолчанию десериализует полезную нагрузку без фильтра
ВоздействиеУдалённое выполнение кода внутри процесса Camel через класс-гаджет до выполнения какой-либо логики маршрута
Затронутые версииС 2.11.0 до 4.18.5, с 4.19.0 до 4.22.1
Исправленные версии4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24421
БлагодарностьLeon Zlobecki

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

Исправление

Новая опция эндпоинта deserializationFilter управляет фильтром, применяемым при чтении полезных нагрузок сериализатором по умолчанию. Если она не задана, используется общесистемный для JVM jdk.serialFilter, если он присутствует, иначе применяется консервативный список разрешённых типов (стандартные типы Java и Apache Camel; java.net запрещён), а в версиях 4.23.0/4.22.1 дополнительно применяются ограничения формы графа объектов из JEP-290. Сериализатор создаётся через свой конструктор на основе Converter с десериализующим конвертером, который устанавливает фильтр на потоке до чтения графа объектов. Установка serializer в пользовательский RedisSerializer по-прежнему обходит фильтр, поскольку тогда Camel больше не контролирует способ чтения полезной нагрузки.

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

Задайте общесистемный для JVM параметр -Djdk.serialFilter=... (затронутый путь его учитывает) или установите опцию эндпоинта serializer в не-Java сериализатор, например StringRedisSerializer (именно как опцию serializer, а не только на пользовательском redisTemplate). Требуйте аутентификацию в Redis и ограничьте, кто может публиковать в каналы, на которые оформлена подписка.

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

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

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