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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-43867 — Reproducer for CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager unsafe key-metadata deserialization (RCE) | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-43867
Vulnerability AnalysisCode AnalysisExploitationCloud SecurityBinary Exploitation
GitHuboscerd/cve-2026-43867

CVE-2026-43867

Reproducer for CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager unsafe key-metadata deserialization (RCE)

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

Популярное

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

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

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

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

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

camel-pqc: Воспроизводитель небезопасной десериализации метаданных ключа AWS Secrets Manager (CVE-2026-43867)

Этот проект демонстрирует уязвимость десериализации Java в компоненте Apache Camel camel-pqc, отслеживаемую как CVE-2026-43867. AwsSecretsManagerKeyLifecycleManager.deserializeMetadata() считывает сохранённые пост-квантовые метаданные ключа обратно из секрета AWS Secrets Manager, декодируя сохранённое значение из Base64 и десериализуя его с помощью чистого java.io.ObjectInputStream.readObject() без ObjectInputFilter — приведение к KeyMetadata происходит только после возврата readObject(), поэтому сначала выполняются все побочные эффекты readObject(). Участник, который может записывать в этот секрет (secretsmanager:PutSecretValue), может сохранить подложный сериализованный объект, который десериализуется во время обычных операций жизненного цикла ключа, что потенциально может привести к выполнению кода.

Консультация: https://camel.apache.org/security/CVE-2026-43867.html

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

Тот же дефект, что и CVE-2026-46590 (сообщено независимо; это предупреждение также охватывает менеджеры для HashiCorp Vault и файловые менеджеры), и неполное исправление последствий CVE-2026-40048 (CAMEL-23200), которое изменило FileBasedKeyLifecycleManager на формат JSON/PKCS#8/X.509, но не добавило ObjectInputFilter и не охватило менеджеры AWS/Vault.

Технические детали

root@kitploit:~
// AwsSecretsManagerKeyLifecycleManager - затронутая версия 4.18.2
private KeyMetadata deserializeMetadata(String base64) throws Exception {
    byte[] data = Base64.getDecoder().decode(base64);
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    try (ObjectInputStream ois = new ObjectInputStream(bais)) {   // НЕТ ObjectInputFilter
        return (KeyMetadata) ois.readObject();                    // гаджет срабатывает здесь, до приведения
    }
}

getKeyMetadata(keyId) считывает секрет с именем <keyPrefix>/<keyId>/metadata, разбирает его JSON-обёртку ({"metadata":"<base64>","keyId":...,"algorithm":...}) и передаёт поле metadata в deserializeMetadata. Исправление (4.18.3 / 4.21.0) вводит общий KeyMetadataCodec, который хранит метаданные в формате JSON для всех менеджеров и ограничивает оставшиеся чтения устаревшего ObjectInputStream с помощью белого списка ObjectInputFilter.

Атакующий vs. жертва

Жертвой является приложение, управляющее PQC-ключами с помощью AWS-менеджера. Атакующим является любой участник, который может записывать секрет метаданных (secretsmanager:PutSecretValue). Этот PoC использует LocalStack для эмуляции AWS Secrets Manager; конечная точка /exploit/attack записывает подложный секрет метаданных, а затем запускает путь чтения менеджера.

root@kitploit:~
CVE-2026-43867/
├── pom.xml                 # camel-pqc 4.18.2 + aws-sdk secretsmanager 2.41.28 + commons-collections 3.2.1
├── Dockerfile              # запускает приложение (--add-opens для сборки гаджета)
├── docker-compose.yml      # LocalStack (Secrets Manager) + приложение-воспроизводитель
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Gadget.java             # Гаджет CommonsCollections6, срабатывает во время readObject()
    │   └── ExploitController.java  # записывает подложный секрет, затем вызывает getKeyMetadata()
    └── resources/
        └── application.properties

В реальной атаке сериализованные байты создаются офлайн атакующим (например, с помощью ysoserial). Этот PoC строит гаджет внутри процесса, поэтому JVM запускается с --add-opens java.base/java.util=ALL-UNNAMED — деталь сборки гаджета, не связанная с уязвимостью.

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

  • Java 17+ и Maven 3.8+
  • Docker (запускает LocalStack и приложение)

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

Шаг 1: Сборка и запуск всего

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

Это запускает LocalStack (эмулирует AWS Secrets Manager) и приложение-воспроизводитель, которое направляет свой AwsSecretsManagerKeyLifecycleManager на LocalStack через переопределение конечной точки.

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

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Записан подложный сериализованный метаданные в секрет AWS Secrets Manager 'pqc/keys/victim-key/metadata'.
#    getKeyMetadata() вызвал java.lang.ClassCastException  (ожидаемо — гаджет срабатывает во время readObject ...)
#
#    >>> Доказательство RCE — /tmp/pwned существует: true

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

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

Очистка

root@kitploit:~
docker compose down

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

Любое приложение, использующее AwsSecretsManagerKeyLifecycleManager, чей секрет метаданных ключа может быть записан стороной, отличной от собственного доверенного удостоверения приложения. Десериализация происходит во время обычных операций жизненного цикла ключа (getKeyMetadata, loadExistingKeys, listKeys, проверки ротации и т.д.).

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

  1. Приложение, использующее AwsSecretsManagerKeyLifecycleManager от camel-pqc в уязвимой версии.
  2. Атакующий может записать секрет метаданных (secretsmanager:PutSecretValue на него).
  3. Библиотека гаджетов в classpath (здесь commons-collections:3.2.1).

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

Обновиться до 4.18.3 / 4.21.0 (CAMEL-23726). Метаданные хранятся в формате JSON, а любые оставшиеся чтения устаревшего ObjectInputStream ограничены белым списком ObjectInputFilter.

Меры смягчения

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

  1. Ограничить secretsmanager:PutSecretValue на секрет метаданных camel-pqc только для собственного удостоверения приложения (принцип наименьших привилегий IAM).
  2. Хранить материал PQC-ключа в секрете отдельно от любых данных, которые могут записывать менее доверенные участники.
  3. Удалить библиотеки гаджетов из classpath (обновить/удалить commons-collections 3.x и подобные).

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

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

Скачать инструмент
СвойствоЗначение
Компонентcamel-pqc (AwsSecretsManagerKeyLifecycleManager)
Затронутый классorg.apache.camel.component.pqc.lifecycle.AwsSecretsManagerKeyLifecycleManager#deserializeMetadata
CWECWE-502: Десериализация недоверенных данных
ВлияниеВыполнение кода в приложении, управляющем ключами (требуется доступ на запись к секрету метаданных)
Затронутые версииС 4.18.0 до 4.18.3, с 4.19.0 до 4.21.0
Исправленные версии4.18.3, 4.21.0 (camel-pqc не входит в версию с долгосрочной поддержкой 4.14.x)
JIRACAMEL-23726
СообщившийВенкатраман Кумар (Securin)