Assurance & Durcissement
Architecture de sécurité & Modèle de menaces
Conçu dès l'origine pour la sécurité mémoire : #![forbid(unsafe_code)], protections actives contre XXE et attaques Billion Laughs, et fuzzing continu automatisé.
Garanties de sécurité mémoire : Zéro code unsafe
Historiquement, les bibliothèques XML écrites en C/C++ (notamment libxml2 et Expat) ont été exposées à des vulnérabilités de corruption mémoire : dépassements de tampon, utilisation après libération (use-after-free) et calculs de pointeurs invalides.
oxml garantit la sécurité mémoire à la compilation :
#![forbid(unsafe_code)]: Règle absolue déclarée à la racine de chacun des crates. L'insertion d'un blocunsafebloque immédiatement la compilation.- Arène générationnelle sécurisée : Les durées de vie des nœuds sont encapsulées dans le conteneur du document. Les relations entre nœuds reposent sur des index générationnels sans pointeurs bruts.
- Zéro dépendance externe dans le cœur : Le moteur de parsing n'embarque aucune dépendance tierce dans son noyau.
Atténuation des attaques XML & Modèle de menaces
Des documents XML malveillants peuvent tenter de saturer le processeur ou d'exfiltrer des fichiers système. oxml intègre des défenses déterministes par défaut :
| Type de vulnérabilité | Vecteur d'attaque | Stratégie d'atténuation dans oxml |
|---|---|---|
| Injection XXE (CWE-611) | DTD externes et entités SYSTEM tentant de lire des fichiers locaux (/etc/passwd) ou d'émettre des requêtes SSRF. | Désactivé par défaut. Aucun accès réseau ni lecture de système de fichiers n'est exécuté durant le parsing. |
| Attaque Billion Laughs (CWE-776) | Expansion exponentielle d'entités internes récursives saturant la mémoire vive. | Profondeur bornée. La récursion est limitée à 32 niveaux, et le volume cumulé d'expansion est bridé à 10 Mo. |
| Dépassement de pile | Documents XML contenant des milliers de balises imbriquées pour saturer la pile d'exécution. | Profondeur maximale fixée. La profondeur maximale d'imbrication est fixée (512 par défaut), déclenchant une erreur immédiate. |
Fuzzing continu & Politique de divulgation
Bancs de tests automatisés (Fuzzing)
Tous les parseurs et évaluateurs XPath sont soumis à un fuzzing continu avec cargo-fuzz (LLVM LibFuzzer) et honggfuzz-rs couvrant les flux malformés et les suites de conformité W3C.
Divulgation responsable des vulnérabilités
Pour signaler une anomalie de sécurité ou un cas d'épuisement de ressources :
- Courriel : Envoyez un rapport confidentiel à
security@oxmllib.com. - GitHub Security Advisories : Déposez un signalement privé via l'avis de sécurité GitHub.
- Délais (SLA) : Accusé de réception sous 24 heures, évaluation initiale sous 48 heures, et correctif coordonné sous 7 jours.