Generic HTML Sanitizer Bypass Investigation

LiveOverflow
3 Jul 202314:04

Summary

TLDRDans ce script, l'auteur explore une faille potentielle dans les sanitizeurs HTML découverte sur Twitter, où un tag HTML '22' entraîne une transformation inattendue du balisage par les navigateurs. Il tente d'exploiter ce comportement pour contourner des sanitizeurs HTML, mais découvre que les sanitizeurs bien conçus, comme DOMPurify, gèrent correctement ce genre d'entrées en suivant les spécifications HTML. L'auteur encourage à apprendre de ces expériences pour améliorer la sécurité des applications web.

Takeaways

  • 🔍 Un tweet a attiré l'attention sur un comportement étrange du navigateur Web où un tag HTML avec un numéro comme premier caractère est traité comme du texte.
  • 🌐 L'ouverture du tag HTML est encodée en HTML et le tag de fermeture est transformé en commentaire HTML, ce qui peut avoir des implications en matière de sécurité.
  • 🤔 L'exploration de cette anomalie a conduit à une discussion sur la différence entre la codification HTML et la purification HTML, et comment elles interagissent avec la prévention des attaques XSS.
  • 🛠️ La purification HTML est une tâche complexe car elle doit permettre certaines balises HTML tout en protégeant contre les vulnérabilités XSS.
  • 🕵️‍♂️ Une démonstration a été réalisée pour voir si ce comportement pouvait être exploité pour contourner les purificateurs HTML, en particulier en utilisant des attributs malformés.
  • 💻 Des tests ont été effectués en utilisant différents types de balises et en les assignant à innerHTML pour observer comment le navigateur les interprète et les mutate.
  • 🛡️ Le purificateur DOMPurify, bien que maintenu par cure53, a réussi à purifier correctement les entrées malveillantes, montrant son efficacité.
  • 📚 La spécification HTML indique que les balises ne doivent pas commencer par un caractère numérique, expliquant ainsi le comportement observé dans les navigateurs.
  • 🚫 Les purificateurs HTML correctement implémentés devraient gérer ce cas de figure conformément à la spécification HTML, ce qui a été confirmé par des tests avec un purificateur Ruby.
  • 🔗 La recherche de failles de sécurité dans les purificateurs HTML peut être complexe, mais il est essentiel de comprendre les spécifications et les comportements des navigateurs pour prévenir les attaques XSS.
  • 🎓 L'importance de la formation continue est soulignée, en particulier pour les développeurs, afin de bien comprendre les vulnérabilités de sécurité Web et de coder de manière sécurisée.

Q & A

  • Quel est le sujet principal du script?

    -Le script traite de la découverte d'un comportement inhabituel dans le parsing HTML par les navigateurs web, et de la tentative d'utiliser ce comportement pour contourner les sanitizeurs HTML.

  • Pourquoi le tag HTML '22' est-il considéré comme un sujet d'intérêt pour la sécurité?

    -Le tag '22' est traité comme du texte et non comme un tag HTML valide, ce qui peut potentiellement être exploité pour contourner les sanitizeurs HTML et causer des vulnérabilités XSS.

  • Quelle est la différence entre l'encodage HTML et la sanitization HTML?

    -L'encodage HTML consiste à transformer les caractères spéciaux en leurs équivalents codés, tandis que la sanitization permet de nettoyer le code HTML pour permettre certains tags tout en évitant les vulnérabilités XSS.

  • Pourquoi est-il difficile de contourner un sanitizeur HTML de qualité?

    -Les sanitizeurs de qualité comme DOMPurify utilisent le parseur HTML du navigateur pour comprendre le code HTML exactement comme le navigateur, ce qui rend la recherche de failles plus complexe.

  • Quels sont les défis rencontrés lors de la création de cours sur la sécurité web?

    -Les défis incluent la compréhension des connaissances préalables des étudiants, la création de micro-cours pour permettre une exploration croisée des sujets, et l'organisation des cours de manière à ce que les étudiants puissent naviguer librement entre eux.

  • Quel est l'impact de la spécification HTML sur la manière dont les navigateurs gèrent les balises HTML incorrectes?

    -La spécification HTML définit clairement comment les navigateurs doivent gérer les erreurs de parsing, comme les balises commençant par un nombre, qui sont traitées comme du texte plutôt que comme des balises HTML.

  • Pourquoi les sanitizeurs côté serveur sont-ils susceptibles d'être moins fiables que les sanitizeurs côté client?

    -Les sanitizeurs côté serveur doivent implémenter leur propre logique de parsing, qui peut ne pas parfaitement correspondre au comportement des navigateurs, ce qui peut conduire à des failles de sécurité non prévues.

  • Quels sont les avantages de l'utilisation de micro-cours dans l'apprentissage?

    -Les micro-cours permettent aux apprenants de naviguer librement entre les sujets et d'explorer des domaines connexes pour améliorer leur compréhension, tout en offrant la flexibilité de passer à des sujets plus avancés si nécessaire.

  • Quelle est la leçon apprise à la fin du script sur la recherche de vulnérabilités dans les sanitizeurs HTML?

    -La leçon apprise est que la recherche de vulnérabilités dans les sanitizeurs HTML est complexe et que les sanitizeurs bien conçus suivront la spécification HTML, ce qui rend la découverte de failles moins facile que prévu.

  • Quels sont les moyens proposés pour aider les apprenants à comprendre les concepts complexes en matière de sécurité web?

    -Les moyens proposés incluent l'encouragement à explorer et à rechercher des sujets qui ne sont pas compris, ainsi que l'organisation de cours de manière à ce qu'ils puissent être parcourus de manière non linéaire pour améliorer la compréhension croisée des sujets.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
Sécurité WebHTML ParsingXSSSanitizationNavigateursCode InjectionHextree.ioDéveloppement WebAnalyse de VulnérabilitésSécurité des Applications
Do you need a summary in English?