39:51Unicode Vulnerabilities That Could Byͥte You
Télécharger les ressourcesÀ propos de cette session
Philippe Arteau, chercheur en sécurité chez GoSecure, présente cinq classes de vulnérabilités Unicode, après un rappel sur les encodages. D'abord la normalisation : en mode compatibilité, NFKC ramène des caractères comme la barre oblique pleine largeur ou les lettres cerclées vers l'ASCII, d'où la faille HostSplit de redirection ouverte dans la validation OAuth, que les navigateurs normalisaient implicitement jusqu'à la mi-2019, et une faille de vérification de nom d'hôte trouvée dans Oracle JDK et OpenJDK, où un certificat sosie passe la validation TLS. Ensuite la casse : le eszett allemand devient SS en majuscules, le symbole Kelvin et le i sans point deviennent ASCII en minuscules, ce qui permet d'inscrire un compte qui correspondra plus tard à admin. Puis le contournement de filtres : charges utiles en UTF-16 ou UTF-7, changement d'encodage en plein document XML et collation Latin1 de SQL Server qui transforme des caractères stockés en balises HTML. Quatrièmement, les attaques homographes par domaines punycode, parées par les heuristiques de Chrome et la transparence des certificats. Enfin, la perte silencieuse de données lors de sauvegardes sans encodage préservé. Il recommande de valider avant toute transformation, de limiter les champs critiques à l'ASCII et de déclarer l'encodage explicitement.
The number of Unicode code points has never stopped growing just like its integration in modern technologies. Web applications you have developed or used are likely to support input and output formatted in UTF-8 character encoding.
In this talk, you will learn about the security implications of encoding conversion. Normalizing a UTF-8 string to ASCII only character has numerous potential side effects. The latest research affecting Unicode will be summarized including the HostSplit attack. The HostSplit attack abuses minor characters conversion to trigger open redirect or Server-Side Request Forgery (SSRF). Aside from normalization, uppercase and lowercase transformations can introduce vulnerabilities. Encoding can be used to circumvent security controls such as Web Application Firewalls. Additionally, punycode is the new representation to support domains with special characters outside of ASCII. This representation can be used to create visual confusion to end users.
While some issues were patched in major software, many risks remain or are likely to resurface. Get ready for a complete summary of everything security professionals should know about Unicode!
À retenir
- Exécuter toute vérification de sécurité (liste blanche, correspondance de nom d'hôte, comparaison de rôle) avant toute normalisation ou changement de casse, jamais après.
- Limiter à l'ASCII les identifiants critiques comme les noms d'utilisateur, les rôles et les noms d'hôte; garder une colonne d'affichage distincte si Unicode est requis.
- Auditer les bibliothèques et cadriciels utilisés pour les normalisations NFKC ou appels ToUpper implicites; les bogues OAuth et JDK se trouvaient dans du code partagé, pas dans le code applicatif.
- En testant des filtres, essayer les encodages UTF-16 et UTF-7, les déclarations d'encodage en plein document XML et les conversions de collation de base de données, pas seulement l'encodage URL et les entités HTML.
- Déclarer explicitement l'encodage dans le code et les exports, et une fois SPF et l'hygiène courriel de base en place, surveiller les journaux de transparence des certificats pour les sosies punycode de ses domaines.

