CVE-2023-45612
Description de la CVE
Dans JetBrains Ktor avant la version 2.3.5, la configuration par défaut de ContentNegotiation avec le format XML était vulnérable à une attaque XXE.
La vulnérabilité a été corrigée par @marychatte le 29 septembre 2023 (https://github.com/ktorio/ktor/pull/3770). Cette vulnérabilité était causée par une attaque sur la chaîne d'approvisionnement basée sur une mauvaise configuration dans la bibliothèque externe xmlutil version 0.86.1.

D'après le guide OWASP (https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html), le correctif n'est pas assez complet. J'ai trouvé une réponse intéressante ici (https://security.stackexchange.com/questions/260956/java-xxe-vulnerability) : L'objectif principal est de désactiver les DTD, cela constitue essentiellement la défense primaire contre cette attaque.
Qu'est-ce que OWASP ?
- OWASP (Open Worldwide Application Security Project) est une communauté mondiale à but non lucratif dédiée à l'amélioration de la sécurité logicielle. Elle fournit des ressources gratuites et indépendantes des fournisseurs, telles que de la documentation, des outils et des formations, pour aider les développeurs, les chercheurs en sécurité et les organisations à construire des applications sécurisées. L'un de ses projets les plus connus est le OWASP Top 10, qui met en évidence les risques de sécurité des applications web les plus critiques.
Preuve de concept
Directives de prévention
- Mise à niveau : Ktor ≥ 2.3.5 et xmlutil vers des versions corrigées
- Durcir l'analyse XML :
- Désactiver les déclarations DOCTYPE
- Désactiver les entités générales/paramètres externes
- Désactiver le chargement externe de DTD
- Activer FEATURE_SECURE_PROCESSING
- Désactiver XInclude
- Privilégier JSON plutôt que XML, sauf si strictement nécessaire
- Principe du moindre privilège : Exécuter les services sans accès au système de fichiers/réseau pour l'analyse
- Validation des entrées : Rejeter les charges utiles contenant des déclarations DOCTYPE au niveau de l'application
Références :