CVE-2026-40048
Full vulnerability record from the local CVENow database.
Description
The Camel-PQC FileBasedKeyLifecycleManager class deserializes the contents of `<keyId>.key` files in the configured key directory using java.io.ObjectInputStream without applying any ObjectInputFilter or class-loading restrictions. The cast to `java.security.KeyPair` is evaluated only after `readObject()` has already returned, so any `readObject()` side effects in the deserialized object run before the type check. An attacker who can write to the key directory used by a Camel application — for example through a path traversal into the directory, misconfigured filesystem permissions on the volume where keys are stored, a compromised key provisioning pipeline, or a symlink attack — can place a crafted serialized Java object that, when deserialized during normal key lifecycle operations, results in arbitrary code execution in the context of the application. This issue affects Apache Camel: from 4.19.0 before 4.20.0, from 4.18.0 before 4.18.2. Users are recommended to upgrade to version 4.20.0, which fixes the issue by replacing java.io.ObjectInputStream-based key and metadata storage with standard PKCS#8 (private key) / X.509 SubjectPublicKeyInfo (public key) Base64 JSON encoding. For users on the 4.18.x LTS releases stream, upgrade to 4.18.2.
View original CVE JSON
{
"id": "CVE-2026-40048",
"sourceIdentifier": "[email protected]",
"published": "2026-04-27T09:16:01.287",
"lastModified": "2026-10-26T22:10:00.163",
"vulnStatus": "Modified",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "The Camel-PQC FileBasedKeyLifecycleManager class deserializes the contents of `<keyId>.key` files in the configured key directory using java.io.ObjectInputStream without applying any ObjectInputFilter or class-loading restrictions. The cast to `java.security.KeyPair` is evaluated only after `readObject()` has already returned, so any `readObject()` side effects in the deserialized object run before the type check. An attacker who can write to the key directory used by a Camel application — for example through a path traversal into the directory, misconfigured filesystem permissions on the volume where keys are stored, a compromised key provisioning pipeline, or a symlink attack — can place a crafted serialized Java object that, when deserialized during normal key lifecycle operations, results in arbitrary code execution in the context of the application.\n\nThis issue affects Apache Camel: from 4.19.0 before 4.20.0, from 4.18.0 before 4.18.2.\n\nUsers are recommended to upgrade to version 4.20.0, which fixes the issue by replacing java.io.ObjectInputStream-based key and metadata storage with standard PKCS#8 (private key) / X.509 SubjectPublicKeyInfo (public key) Base64 JSON encoding. For users on the 4.18.x LTS releases stream, upgrade to 4.18.2."
},
{
"lang": "es",
"value": "La clase Camel-PQC FileBasedKeyLifecycleManager deserializa el contenido de los archivos ’[keyId].key’ en el directorio de claves configurado utilizando java.io.ObjectInputStream sin aplicar ningún ObjectInputFilter o restricciones de carga de clases. La conversión a ’java.security.KeyPair’ se evalúa solo después de que ’readObject()’ ya haya retornado, por lo que cualquier efecto secundario de ’readObject()’ en el objeto deserializado se ejecuta antes de la verificación de tipo. Un atacante que puede escribir en el directorio de claves utilizado por una aplicación Camel - por ejemplo, a través de un salto de ruta en el directorio, permisos de sistema de archivos mal configurados en el volumen donde se almacenan las claves, una canalización de aprovisionamiento de claves comprometida o un ataque de enlace simbólico - puede colocar un objeto Java serializado manipulado que, cuando se deserializa durante las operaciones normales del ciclo de vida de las claves, resulta en ejecución de código arbitrario en el contexto de la aplicación.\n\nEste problema afecta a Apache Camel: desde 4.19.0 antes de 4.20.0, desde 4.18.0 antes de 4.18.2.\n\nSe recomienda a los usuarios actualizar a la versión 4.20.0, que soluciona el problema reemplazando el almacenamiento de claves y metadatos basado en java.io.ObjectInputStream con codificación JSON Base64 estándar PKCS#8 (clave privada) / X.509 SubjectPublicKeyInfo (clave pública). Para los usuarios en la rama de versiones LTS 4.18.x, actualice a 4.18.2."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "Apache Software Foundation",
"product": "Apache Camel PQC",
"defaultStatus": "unaffected",
"collectionURL": "https://repo.maven.apache.org/maven2",
"packageName": "org.apache.camel:camel-pqc",
"versions": [
{
"version": "4.19.0",
"lessThan": "4.20.0",
"versionType": "semver",
"status": "affected"
},
{
"version": "4.18.0",
"lessThan": "4.18.2",
"versionType": "semver",
"status": "affected"
}
]
}
]
},
{
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"affectedData": [
{
"vendor": "Red Hat",
"product": "Red Hat build of Apache Camel for Spring Boot 4",
"defaultStatus": "unaffected",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"packageName": "camel-pqc",
"cpes": [
"cpe:/a:redhat:camel_spring_boot:4"
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 1.8,
"impactScore": 5.9
},
{
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 1.8,
"impactScore": 5.9
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-04-28T00:00:00+00:00",
"id": "CVE-2026-40048",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-502"
}
]
},
{
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-502"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:apache:camel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.18.0",
"versionEndExcluding": "4.18.2",
"matchCriteriaId": "964E4E5F-CDA3-4B7F-BF33-1C6B592FE11D"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:a:apache:camel:4.19.0:*:*:*:*:*:*:*",
"matchCriteriaId": "EDA4D206-8808-4D2A-873E-8488DD7E3E16"
}
]
}
]
}
],
"references": [
{
"url": "https://camel.apache.org/security/CVE-2026-40048.html",
"source": "[email protected]",
"tags": [
"Vendor Advisory"
]
},
{
"url": "http://www.openwall.com/lists/oss-security/2026/04/26/6",
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Mailing List",
"Third Party Advisory"
]
},
{
"url": "https://access.redhat.com/security/cve/CVE-2026-40048",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2463176",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-40048.json",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
}
]
}