En bref

  • CVE-2026-49869 — contournement d'authentification (CVSS 10.0) dans Kestra OSS menant à une exécution de code arbitraire en tant que root
  • Affecte Kestra OSS versions < 1.0.45 et 1.3.x < 1.3.21 ; les instances exposées sur Internet sont directement compromises
  • Exploitation active confirmée (déploiement de cryptomineurs, vol de credentials cloud) — patcher immédiatement vers 1.0.45 ou 1.3.21

Les faits

La CVE-2026-49869 est une vulnérabilité de contournement d'authentification critique affectant Kestra Open Source Software (OSS), une plateforme d'orchestration de flux de travail et de pipelines de données largement adoptée dans les environnements cloud-native. Avec un score CVSS 3.1 de 10.0, il s'agit de la note de sévérité maximale possible, reflétant la facilité d'exploitation et l'impact total sur la confidentialité, l'intégrité et la disponibilité des systèmes cibles. La CISA a ajouté cette vulnérabilité à son catalogue Known Exploited Vulnerabilities (KEV) le 2 septembre 2026, confirmant son exploitation active dans la nature.

L'origine technique de la faille réside dans un défaut de logique dans le composant AuthenticationFilter de Kestra. Ce filtre est chargé de protéger les endpoints de l'API REST en vérifiant les credentials Basic Auth avant d'autoriser l'accès. Or, la règle d'exemption pour la route de configuration publique /configs repose sur un appel à request.getPath().endsWith("/configs"). Cette vérification par suffixe, et non par correspondance exacte du chemin, constitue la faille fondamentale : toute URL de l'API dont le dernier segment de chemin est /configs contourne intégralement l'authentification, quel que soit le reste du chemin.

Puisque Kestra adresse ses ressources (espaces de noms, identifiants de flux) via des segments de chemin choisis par le client, un attaquant peut construire des URL arbitraires se terminant par /configs pour atteindre n'importe quel endpoint de l'API sans présenter de credentials. En pratique, cela permet à un attaquant non authentifié d'appeler l'API de création et d'exécution de flux de travail, qui constitue le cœur fonctionnel de Kestra. La classification CWE associée est CWE-287 (Improper Authentication) et CWE-863 (Incorrect Authorization).

La chaîne d'exploitation complète vers une RCE root se déroule en deux étapes. Premièrement, l'attaquant crée un flux de travail malveillant via l'API non protégée, en définissant des tâches utilisant les plugins d'exécution de scripts embarqués par défaut dans Kestra : plugin-script-shell, plugin-script-python ou équivalents. Deuxièmement, il déclenche l'exécution de ce flux, qui est prise en charge par le worker Kestra tournant dans un conteneur Linux. Les commandes système définies dans le flux s'exécutent avec les privilèges root à l'intérieur du conteneur. L'attaque est entièrement sans interaction utilisateur et ne requiert aucune authentification préalable.

Un proof-of-concept (PoC) public a été mis en ligne peu après la divulgation. Des templates de détection ont été contribués au projet Nuclei (projectdiscovery/nuclei-templates), rendant la détection et l'exploitation à grande échelle triviales pour tout opérateur disposant d'outils de scan automatisé. Des dépôts GitHub de PoC sont également disponibles publiquement, abaissant drastiquement la barrière d'entrée pour les attaquants opportunistes.

Les vecteurs d'attaque observés en exploitation réelle sont particulièrement préoccupants. Des chercheurs en sécurité et des équipes de réponse aux incidents ont documenté des incidents impliquant le déploiement de cryptomineurs (XMRig et variantes) sur les systèmes compromis, utilisant les ressources CPU/GPU des victimes à des fins lucratives. Plus grave encore, des attaquants ont exploité l'accès root dans le conteneur Kestra pour récupérer les variables d'environnement et les fichiers de configuration exposant des credentials cloud (AWS IAM, GCP service accounts, Azure managed identities), permettant une latéralisation vers les infrastructures cloud associées. Selon les rapports d'analyse forensique publiés, les premières tentatives d'exploitation ont été observées dans les 72 heures suivant la publication du PoC.

Les versions vulnérables couvrent un spectre large de l'écosystème Kestra : toutes les versions de la branche 1.0.x antérieures à 1.0.45, et toutes les versions de la branche 1.3.x antérieures à 1.3.21. Les versions des branches 1.1.x et 1.2.x sont également concernées selon les bulletins de sécurité de l'éditeur. Kestra Enterprise Edition dispose de mécanismes d'authentification différents qui ne présentent pas la même vulnérabilité, mais les organisations utilisant la version OSS avec leur propre couche d'authentification ajoutée doivent vérifier que celle-ci s'interpose effectivement avant l'AuthenticationFilter natif.

La criticité de CVE-2026-49869 doit être appréciée dans le contexte de l'omniprésence de Kestra dans les environnements de data engineering, MLOps et orchestration CI/CD. Une instance Kestra compromise peut constituer un pivot stratégique vers des actifs critiques de l'entreprise bien au-delà du périmètre immédiat de l'outil : bases de données de production, buckets de stockage cloud, registres de conteneurs, pipelines de déploiement. Les instances exposées directement sur Internet sans VPN ni reverse proxy filtrant sont les plus exposées, mais les déploiements internes non patchés présentent également un risque significatif en cas de latéralisation post-compromission initiale.

Impact et exposition

Toute instance Kestra OSS exposée sur un réseau accessible, qu'il s'agisse d'Internet public ou d'un réseau interne d'entreprise, est vulnérable si elle exécute une version antérieure aux correctifs. L'exploitation ne requiert aucun compte valide, aucune interaction utilisateur et aucune condition préalable particulière : un simple accès réseau à l'interface web ou à l'API REST suffit. La criticité maximale CVSS 10.0 reflète exactement ces conditions — vecteur réseau, complexité faible, aucun privilège requis, aucune interaction utilisateur, impact total sur la confidentialité, l'intégrité et la disponibilité.

L'exploitation active confirmée par la CISA transforme cette vulnérabilité en menace immédiate. Les acteurs malveillants disposent de PoC fonctionnels et de templates de scan automatisé. Des scans à grande échelle d'instances Kestra exposées ont été observés, avec exploitation opportuniste des instances non patchées détectées. Les environnements cloud sont particulièrement à risque du fait des credentials souvent présents dans les variables d'environnement des workers Kestra.

Les organisations utilisant Kestra dans des pipelines de données sensibles (données personnelles, secrets cryptographiques, credentials d'accès à des bases de données de production) doivent considérer que toute instance non patchée exposée est potentiellement compromise et procéder à une analyse forensique avant toute remédiation.

Recommandations immédiates

  • Mettre à jour Kestra OSS vers la version 1.0.45 ou 1.3.21 (ou supérieure) — bulletin Kestra Security Advisory 2026-0001
  • Si la mise à jour immédiate est impossible : isoler l'instance derrière un VPN ou un reverse proxy avec authentification forte, bloquer l'accès public à l'API REST
  • Auditer les logs d'accès à la recherche de requêtes anormales sur des endpoints /configs avec des chemins inattendus antérieures au patch
  • Analyser les variables d'environnement et les secrets accessibles depuis le contexte worker Kestra ; effectuer une rotation des credentials potentiellement exposés
  • Rechercher dans les flows existants toute définition malveillante créée sans autorisation légitime

⚠️ Urgence maximale

CVE-2026-49869 est un CVSS 10.0 avec exploitation active confirmée par la CISA et des PoC publics disponibles. Toute instance Kestra OSS non patchée exposée sur un réseau doit être considérée comme compromise. La remédiation doit être traitée en urgence absolue.

Comment savoir si je suis vulnérable ?

Vérifiez la version de Kestra : depuis l'interface web, accédez à Settings > About, ou exécutez kestra --version en ligne de commande. Si vous êtes sur une branche 1.0.x < 1.0.45 ou 1.3.x < 1.3.21, vous êtes vulnérable. Pour tester l'exposition, envoyez une requête GET sans header Authorization vers http://[votre-kestra]/api/v1/flows/[namespace]/[flowid]/configs — si vous obtenez une réponse 200 au lieu d'un 401, la faille est présente.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.

Demander un audit