Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-43867 — Riproduttore per CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager deserializzazione non sicura dei metadati delle chiavi (RCE) | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-43867
Analisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza CloudBinary Exploitation
GitHuboscerd/cve-2026-43867

CVE-2026-43867

Riproduttore per CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager deserializzazione non sicura dei metadati delle chiavi (RCE)

Vedi Repository
1 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

camel-pqc AWS Secrets Manager Key-Metadata Riproduttore di Deserializzazione Non Sicura (CVE-2026-43867)

Questo progetto dimostra una vulnerabilità di deserializzazione Java nel componente camel-pqc di Apache Camel, tracciata come CVE-2026-43867. AwsSecretsManagerKeyLifecycleManager.deserializeMetadata() legge i metadati delle chiavi post-quantum persistiti da un segreto di AWS Secrets Manager decodificando in Base64 il valore memorizzato e deserializzandolo con un java.io.ObjectInputStream.readObject() grezzo e nessun ObjectInputFilter — il cast a KeyMetadata avviene solo dopo il ritorno di readObject(), quindi qualsiasi effetto collaterale di readObject() viene eseguito prima. Un principale che può scrivere in quel segreto (secretsmanager:PutSecretValue) può memorizzare un oggetto serializzato manipolato che viene deserializzato durante le normali operazioni del ciclo di vita delle chiavi, portando potenzialmente a esecuzione di codice.

Advisory: https://camel.apache.org/security/CVE-2026-43867.html

Riepilogo della Vulnerabilità

Stesso difetto di CVE-2026-46590 (segnalato indipendentemente; quell'avviso copre anche i gestori fratelli HashiCorp Vault e basati su file), e un follow-up di correzione incompleta per CVE-2026-40048 (CAMEL-23200), che ha cambiato FileBasedKeyLifecycleManager in un formato JSON/PKCS#8/X.509 ma non ha aggiunto un ObjectInputFilter e non ha coperto i gestori AWS/Vault.

Dettagli Tecnici

root@kitploit:~
// AwsSecretsManagerKeyLifecycleManager - affected 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)) {   // NO ObjectInputFilter
        return (KeyMetadata) ois.readObject();                    // gadget fires here, before the cast
    }
}

getKeyMetadata(keyId) legge il segreto chiamato <keyPrefix>/<keyId>/metadata, analizza il suo involucro JSON ({"metadata":"<base64>","keyId":...,"algorithm":...}), e passa il campo metadata a deserializeMetadata. La correzione (4.18.3 / 4.21.0) introduce un KeyMetadataCodec condiviso che memorizza i metadati come JSON per tutti i gestori e limita le restanti letture legacy di ObjectInputStream con un ObjectInputFilter di whitelist.

Attaccante vs. vittima

La vittima è l'applicazione che gestisce le chiavi PQC con il gestore AWS. L'attaccante è qualsiasi principale che può scrivere il segreto dei metadati (secretsmanager:PutSecretValue). Questo PoC utilizza LocalStack per emulare AWS Secrets Manager; l'endpoint /exploit/attack scrive un segreto di metadati manipolato e poi guida il percorso di lettura del gestore.

root@kitploit:~
CVE-2026-43867/
├── pom.xml                 # camel-pqc 4.18.2 + aws-sdk secretsmanager 2.41.28 + commons-collections 3.2.1
├── Dockerfile              # runs the app (--add-opens for gadget build)
├── docker-compose.yml      # LocalStack (Secrets Manager) + the reproducer app
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Gadget.java             # CommonsCollections6 gadget, fires during readObject()
    │   └── ExploitController.java  # writes the crafted secret, then calls getKeyMetadata()
    └── resources/
        └── application.properties

In un attacco reale i byte serializzati sono prodotti offline dall'attaccante (ad es. con ysoserial). Questo PoC costruisce il gadget in-process, motivo per cui la JVM viene eseguita con --add-opens java.base/java.util=ALL-UNNAMED — un dettaglio di costruzione del gadget, non correlato alla vulnerabilità.

Prerequisiti

  • Java 17+ e Maven 3.8+
  • Docker (esegue LocalStack e l'app)

Passaggi di Riproduzione

Passo 1: Compila e avvia tutto

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

Questo avvia LocalStack (emulando AWS Secrets Manager) e l'app riproduttrice, che punta il suo AwsSecretsManagerKeyLifecycleManager a LocalStack tramite l'override dell'endpoint.

Passo 2: Attiva la deserializzazione (RCE)

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Wrote crafted serialized metadata to AWS Secrets Manager secret 'pqc/keys/victim-key/metadata'.
#    getKeyMetadata() threw java.lang.ClassCastException  (expected — the gadget runs during readObject ...)
#
#    >>> RCE proof — /tmp/pwned exists: true

Passo 3: Verifica

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

Pulizia

root@kitploit:~
docker compose down

Vettori di Attacco

Qualsiasi applicazione che utilizza AwsSecretsManagerKeyLifecycleManager il cui segreto dei metadati delle chiavi può essere scritto da un soggetto diverso dall'identità fidata dell'applicazione stessa. La deserializzazione viene eseguita durante le normali operazioni del ciclo di vita delle chiavi (getKeyMetadata, loadExistingKeys, listKeys, controlli di rotazione, …).

Condizioni di Sfruttamento

  1. Un'applicazione che utilizza AwsSecretsManagerKeyLifecycleManager di camel-pqc su una versione affetta.
  2. L'attaccante può scrivere il segreto dei metadati (secretsmanager:PutSecretValue su di esso).
  3. Una libreria gadget nel classpath (qui commons-collections:3.2.1).

Correzione Raccomandata

Aggiorna a 4.18.3 / 4.21.0 (CAMEL-23726). I metadati sono memorizzati come JSON e qualsiasi lettura legacy rimanente di ObjectInputStream è vincolata da un ObjectInputFilter di whitelist.

Mitigazione

Fino all'aggiornamento:

  1. Limita secretsmanager:PutSecretValue sul segreto dei metadati camel-pqc all'identità dell'applicazione stessa (IAM con privilegi minimi).
  2. Mantieni il materiale delle chiavi PQC in un segreto separato da qualsiasi dato che principali meno fidati possono scrivere.
  3. Rimuovi le librerie gadget dal classpath (aggiorna/rimuovi commons-collections 3.x e simili).

Dichiarazione di non responsabilità

Questo riproduttore è fornito solo per ricerca sulla sicurezza e test autorizzati, per una vulnerabilità divulgata pubblicamente e corretta. Non utilizzarlo contro sistemi senza autorizzazione esplicita.

Scarica lo strumento
ProprietàValore
Componentecamel-pqc (AwsSecretsManagerKeyLifecycleManager)
Classe Affettaorg.apache.camel.component.pqc.lifecycle.AwsSecretsManagerKeyLifecycleManager#deserializeMetadata
CWECWE-502: Deserialization of Untrusted Data
ImpattoEsecuzione di codice nell'applicazione di gestione delle chiavi (richiede accesso in scrittura al segreto dei metadati)
Versioni AffetteDa 4.18.0 prima di 4.18.3, da 4.19.0 prima di 4.21.0
Versioni Corrette4.18.3, 4.21.0 (camel-pqc non è sulla linea LTS 4.14.x)
JIRACAMEL-23726
SegnalatoreVenkatraman Kumar (Securin)