oxml
🌐 FR , Changer de langue
llms.txt

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 bloc unsafe bloque 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 :

  1. Courriel : Envoyez un rapport confidentiel à security@oxmllib.com.
  2. GitHub Security Advisories : Déposez un signalement privé via l'avis de sécurité GitHub.
  3. Délais (SLA) : Accusé de réception sous 24 heures, évaluation initiale sous 48 heures, et correctif coordonné sous 7 jours.