CVE-2026-95664
Apache Camel : le producer Camel-AWS2-S3 évalue les clés d'objet S3 non fiables provenant de l'en-tête CamelAwsS3Key comme des expressions simples
- Publié
- 26 oct. 2026
- Mise à jour
- 26 oct. 2026
- Attribution de CNA
- apache
- Preuve observée
- 30 oct. 2026
CVSS primaire
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:NFaible · 30 prochains jours
- Percentile
- 57,6 %
- Date du modèle
- 29 oct. 2026
EPSS est une estimation statistique, et non une certitude ou une mesure d'impact. Combinez-le avec CVSS, le statut KEV, l'exposition et votre environnement.
Résumé
Vulnérabilité de neutralisation incorrecte des éléments spéciaux utilisés dans une instruction de langage d'expression (« Expression Language Injection ») dans le composant AWS2-s3 d'Apache Camel. Ce problème affecte Apache Camel : de 4.8.0 avant 4.18.5, de 4.19.0 avant 4.22.2. Pour l'objet qu'il téléverse, lit ou supprime, le producteur camel-aws2-s3 récupère la clé depuis l'en-tête de message CamelAwsS3Key et ne se rabat sur l'option keyName configurée sur le point de terminaison que lorsque cet en-tête est absent. Depuis 4.8.0, AWS2S3Utils.determineKey() transmettait également la valeur résultante au langage Simple dès qu'elle contenait ${ ou $simple{, afin qu'une route puisse utiliser une clé dynamique, et l'évaluation s'appliquait aussi bien à une valeur issue de l'en-tête qu'à l'option configurée. L'en-tête ne relève toutefois pas de la configuration de la route : le consommateur aws2-s3 définit CamelAwsS3Key sur les échanges qu'il crée à la clé de l'objet qu'il a lu, c'est-à-dire le nom de l'objet dans le bucket. Dans une route qui ne fait rien d'autre que consommer depuis un point de terminaison aws2-s3 et produire vers un autre, le nom de chaque objet consommé atteignait donc le producteur, et un nom contenant l'un ou l'autre des marqueurs était évalué comme une expression, bien que l'auteur de la route n'ait jamais demandé d'évaluation, et configurer keyName sur le producteur ne l'empêchait pas, car l'en-tête avait la priorité. Une clé qu'une route copiait dans l'en-tête depuis d'autres contenus de message était évaluée de la même manière. Quiconque pouvait choisir le nom d'un objet dans un bucket que consomme une telle route, typiquement un principal autorisé à téléverser vers ce bucket, pouvait donc faire évaluer des expressions Simple de son choix dans le processus Camel. Le langage Simple peut lire les propriétés système de la JVM, les variables d'environnement et les propriétés de configuration, qui portent couramment des identifiants, et, lorsque camel-bean est présent dans le classpath, invoquer des méthodes sur des beans du registre. Le résultat évalué devenait la clé utilisée par le producteur, si bien que relire une valeur exigeait en plus la capacité de voir les noms d'objets dans le bucket de destination, tandis qu'une invocation de méthode prenait effet sans cela ; combiné à la nécessité de nommer un objet dans un bucket consommé, c'est pourquoi la gravité est évaluée comme moyenne. Le nom du bucket passait par la même évaluation, mais le consommateur ne place jamais dans un en-tête de bucket que le bucket configuré sur son propre point de terminaison, jamais une valeur dérivée d'un objet distant, de sorte que le nom du bucket n'était pas atteignable de cette manière. Les versions antérieures à 4.8.0 utilisaient la clé de l'en-tête telle quelle et ne sont pas affectées. Il est recommandé aux utilisateurs de mettre à niveau vers la version 4.23.0, qui corrige le problème. Si les utilisateurs sont sur la branche des versions 4.22.x, il leur est suggéré de mettre à niveau vers 4.22.2. Si les utilisateurs sont sur la branche des versions 4.18.x, il leur est suggéré de mettre à niveau vers 4.18.5. Les lignes de versions 4.8.x à 4.17.x et 4.19.x à 4.21.x ont atteint leur fin de vie avant que ce problème ne soit résolu et ne recevront pas de correctif, de sorte que les déploiements sur celles-ci doivent migrer vers une version prise en charge. Après la mise à niveau, une clé ou un nom de bucket fourni via un en-tête de message est utilisé littéralement, de sorte qu'une route qui plaçait une expression Simple non évaluée dans l'en-tête CamelAwsS3Key ou CamelAwsS3OverrideBucketName doit l'évaluer dans la route à la place, par exemple avec setHeader et simple(), ou la configurer comme option keyName ou bucketName du point de terminaison. Pour les déploiements qui ne peuvent pas être mis à niveau immédiatement, ne laissez pas une clé dérivée d'un nom d'objet ou d'autres contenus de message non fiables atteindre un producteur aws2-s3 sans contrôle : dans les routes qui transmettent des échanges d'un consommateur aws2-s3 à un producteur aws2-s3, supprimez soit l'en-tête CamelAwsS3Key avant le producteur avec removeHeader(“CamelAwsS3Key”), afin que le keyName configuré sur le point de terminaison soit utilisé, soit rejetez les échanges dont l'en-tête CamelAwsS3Key contient ${ ou $simple{. Configurer keyName seul ne constitue pas un contournement, car l'en-tête a la priorité sur celui-ci. En défense en profondeur, n'autorisez que des principaux de confiance à écrire dans les buckets que consomment les routes Camel.
Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.