Source : billet de blog de Yannik Marchand. Contexte : analyse de l’implémentation TLS du sysmodule « ssl » de la Nintendo Switch (librairie NSS) et découverte d’un défaut de vérification permettant l’interception de trafic 🔒.
Résumé technique : la vérification des certificats dans le callback SslAuthCertCb
comporte un cas spécial pour les certificats importés via nn::ssl::Context::ImportServerPki
. Lorsque le certificat reçu figure dans la liste « de confiance » du contexte, la signature n’est pas validée par NSS. La fonction CertificateStore::IsTrusted
ne compare que le Subject Key Identifier (SKID) — une valeur contrôlable par un attaquant — au lieu de vérifier la chaîne et la signature. En forgeant un certificat auto-signé avec le même SKID qu’un certificat importé, un attaquant peut réussir une attaque de type man-in-the-middle (MITM) et usurper un serveur.
Portée et impact : la faille est limitée aux connexions où l’application a appelé ImportServerPki
. L’auteur a observé un cas réel avec le client vidéo de l’eShop, qui importe de nombreux CAs racines dans son contexte. L’attaque permet d’injecter des fichiers MP4 vers la console (augmentation de surface d’attaque si le parseur MP4 est vulnérable), mais aucun jeton secret n’a été observé dans les requêtes interceptées. Il ne s’agit donc pas d’un contournement TLS global.
Exploitation (PoC) : via l’Atmosphere GDB stub et l’analyse dynamique, le chercheur a identifié un flux du client vidéo eShop vers nemof.hac.lp1.nemo.srv.nintendo.net
. En générant un certificat auto-signé avec le SKID du CA « SwissSign Silver CA » et en l’utilisant sur un serveur HTTPS factice, la Switch a accepté la connexion et a émis une requête GET vers la ressource vidéo — confirmant le MITM 🐛.
Correctif : signalée via HackerOne, la vulnérabilité a été corrigée en version système 20.2.0. Le correctif ajoute une comparaison stricte via CERT_CompareCerts
(comparaison du DER complet) en plus du SKID, empêchant l’acceptation d’un certificat forgé. L’auteur n’a pas pu reproduire l’attaque sur Switch 2, mais note que l’extension de portée « Switch 2 System Processes » sur HackerOne suggère que le problème concernait aussi Switch 2. Type d’article : publication technique détaillée visant à documenter la vulnérabilité et sa correction.
IOCs:
- Domaine ciblé (PoC) : nemof.hac.lp1.nemo.srv.nintendo.net
- SKID utilisé (référence CA) : 17a0cdc1e441b63a5b3bcb459dbd1cc298fa8658
- CA de référence : SwissSign Silver CA
TTPs observés:
- MITM TLS via forgery de SKID dans un certificat auto-signé
- Usurpation de serveur grâce à l’acceptation basée sur SKID seul
- Ciblage des apps utilisant
nn::ssl::Context::ImportServerPki
- Analyse statique/dynamique (IDA/Ghidra, Atmosphere GDB stub) pour repérage des callbacks NSS (
SSL_AuthCertificateHook
,SSL_BadCertHook
) et du flux vulnérable - Basculement vers un serveur HTTPS contrôlé par l’attaquant pour la livraison de contenus MP4
🔗 Source originale : https://reversing.live/sslbypass.html