Jenkins est un serveur d’automatisation open-source largement utilisé pour les pipelines d’intégration et de déploiement continus (CI/CD), prenant en charge la compilation, les tests et le déploiement de logiciels sur diverses plateformes. Divulguée en avril 2017, la CVE-2017-1000353 est une vulnérabilité critique de désérialisation qui permettait aux attaquants d’exécuter du code arbitraire à distance sans authentification. La vulnérabilité affecte les versions main line de Jenkins jusqu’à la version 2.56 incluse et les versions LTS de Jenkins jusqu’à la version 2.46.1 incluse.
| Produit | Jenkins |
| Date | 07/10/2025 12:41:25 |
Résumé technique
La vulnérabilité provient d’une désérialisation Java non sécurisée dans la fonctionnalité de remoting de l’interface de ligne de commande (CLI) de Jenkins. Plus précisément, le bug réside dans la fonction readFrom au sein de Command.java, où Jenkins désérialise des données contrôlées par l’utilisateur provenant d’une instance d’ObjectInputStream.
Le problème principal est que les attaquants peuvent transférer un objet Java sérialisé SignedObject vers la CLI de Jenkins basée sur le remoting, qui sera ensuite désérialisé via un nouvel ObjectInputStream, contournant ainsi le mécanisme de protection basé sur une liste de blocage (blocklist).
Étant donné que la liste de blocage existante dans Jenkins n’incluait pas SignedObject, sa désérialisation déclenchait la désérialisation du contenu encapsulé ;
Le scénario d’attaque se présente comme suit : Les attaquants envoient deux requêtes HTTP :
- La première requête établit une session CLI Jenkins valide avec deux canaux (upload/download) ;
- La seconde requête télécharge un SignedObject contenant un objet Java sérialisé malveillant ; La fonction readFrom désérialise le SignedObject ; Le contenu encapsulé du SignedObject est alors désérialisé, contournant la liste de blocage ; Des chaînes de gadgets malveillants sont activées lors de la désérialisation et exécutent du code arbitraire avec les privilèges du serveur Jenkins.
Recommandations
- Appliquer le correctif immédiatement : Mettre à jour toutes les instances de Jenkins vers la version 2.57 (weekly) ou 2.46.2 LTS.
- Désactiver la CLI basée sur le remoting : Après la mise à jour, les utilisateurs doivent désactiver la CLI basée sur le remoting et passer à d’autres modes (HTTP ou SSH).
- Recherche et surveillance : Mettre en œuvre des règles WAF pour détecter les signatures d’attaques par désérialisation Java et examiner les journaux d’accès de Jenkins à la recherche de modèles suspects dans la création de sessions CLI.
[Callforaction-THREAT-Footer]
Leave a Reply