
Reproducer per CVE-2026-46590: deserializzazione non sicura del ciclo di vita delle chiavi in Apache Camel camel-pqc (migrazione legacy dei file .key tramite ObjectInputStream in FileBasedKeyLifecycleManager), remediation incompleta di CVE-2026-40048 (risolto in 4.18.3/4.21.0)
Reproducer proof-of-concept eseguibili per la stessa vulnerabilità Apache Camel, uno per runtime:
| Runtime | Directory | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-pqc 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (bundles Camel 4.20.0) |
Entrambe sono versioni interessate (corrette in 4.18.3 / 4.21.0) e dimostrano lo stesso identico difetto:
FileBasedKeyLifecycleManager persiste le chiavi post-quantum come JSON PKCS#8/X.509, ma migra ancora i file
di chiave legacy (serializzati in Java) con un ObjectInputStream grezzo e nessun ObjectInputFilter — il
residuo della correzione incompleta di CVE-2026-40048. getKey(keyId) ripiega su migrateLegacyKey(), che
deserializza il file <keyId>.key piazzato dall'attaccante; il cast a KeyPair avviene solo dopo che
readObject() restituisce, quindi un oggetto appositamente costruito viene eseguito per primo (CWE-502).
Ogni sottodirectory è un progetto autonomo con il proprio Dockerfile, docker-compose.yml e README. In
breve, per entrambi:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Avviso: https://camel.apache.org/security/CVE-2026-46590.html
Questi reproducer sono forniti esclusivamente per ricerca sulla sicurezza e test autorizzati, per una vulnerabilità divulgata pubblicamente e corretta. Non utilizzarli contro sistemi senza autorizzazione esplicita.
| Proprietà | Valore |
|---|
| Componente | camel-pqc |
| Classe interessata | org.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager#migrateLegacyKey (e migrateLegacyMetadata), oltre alle classi sorelle HashicorpVault / AwsSecretsManager |
| CWE | CWE-502 (Deserializzazione di dati non attendibili) |
| Impatto | Esecuzione di codice nell'applicazione di gestione delle chiavi quando viene letto un valore di chiave/metadati legacy |
| Versioni interessate | Dalla 4.18.0 alla 4.18.3 esclusa, dalla 4.19.0 alla 4.21.0 esclusa (i key manager camel-pqc non esistono prima della 4.16.0, quindi la 4.14.x non è interessata) |
| Versioni corrette | 4.18.3, 4.21.0 |
| JIRA | CAMEL-23726 (PR apache/camel#23912, backport #23914) |
| Crediti | Yu Bao (PayPal) |