Pare-feux HDMI (HDMI FireWalls)
Mise en situation
Ce module de formation a pour source d'inspiration un article du N°127 du magazine MISC coécrit par 2 deux chercheurs en sécurité informatique de l'ANSSI (Agence Nationale de la Sécurité des Systèmes d'Information), MM. Pierre-Michel RICORDEL et José LOPES ESTEVES, et un ingénieur consultant en sécurité embarquée et mobile, M. Kévin REDON.
Cet article porte sur un exposé ayant eu lieu lors de l'édition de 2021 du SSTIC[1] mettant en évidence les failles de sécurité informatique possibles lors de l'utilisation d'un câble HDMI[2], failles induites par différents bus qui parcourent ce type de câble.
L'article présente 2 cartes électroniques, appelées pare-feux, permettant de protéger le système contre ce type de vulnérabilité.
La première solution reposant sur l'utilisation d'une mémoire morte EEPROM a fait l'objet d'une réalisation conçue par l'ANSSI[3] mais dont les documents de fabrication (sous-traités à une entreprise tiers) n'ont pu être mis en partage.
Ultérieurement une seconde réalisation, reposant sur un microcontrôleur, et proposant un filtrage sélectif des bus (solution moins exclusive que la première) a été développée par M. Redon. Cette solution est open source au niveau matériel (lien 1), et logiciel (lien 2).
Intentions pédagogiques
Les exploitations possibles, avec des étudiants de BTS CIEL ER, sont multiples, et vont être abordées sous forme de 4 activités.
2nde activité : se documenter sur les bus véhiculés par un câble HDMI[2], puis effectuer des captures de trames sur quelques-uns de ces bus, par l'intermédiaire d'une petite carte de test que l'on trouve dans le commerce. Cela permet d'amener l'étudiant à installer quelques librairies sous Linux, et à mettre en œuvre un ou des analyseurs logiques avec interpréteurs de trames pour analyser certains des échanges, plus particulièrement le bus I2C[4] qui permet de récupérer l'EDID[5] des appareils connectés, et le bus CEC[6] qui permet une télécommande de certains de ces appareils (Téléviseurs par exemple). Cependant, en fonction du niveau de performance du matériel dont on dispose, d'autres bus peuvent être analysés.
3ème activité : aborder l'aspect réalisation pratique de l'un des pare-feux en récupérant les documents de fabrication de la seconde version de la carte électronique (celle de M. Redon), pour les analyser aussi bien au niveau du schéma structurel que du routage.
Cela amènera entre autres à :
identifier les composants à commander pour effectuer la fabrication,
câbler les composants CMS et traversants avec du matériel adapté,
programmer le microcontrôleur,
valider le bon fonctionnement du pare-feu en s'assurant que certains bus étudiés dans la 2nde activité ne sont plus transmis que sélectivement.
Les documents de fabrication ont été développés sous KiCad, mais les collègues qui ne travaillent pas avec ce logiciel pourront tout de même récupérer les fichiers Gerber pour effectuer le travail à l'identique.
4ème activité : elle consiste, en s'inspirant de la réalisation précédente, à amener les étudiants en les guidant pas à pas, à concevoir la première version du pare-feu, celle qui fonctionne autour d'une mémoire EEPROM, beaucoup plus restrictive que l'autre, dont les documents de fabrication n'ont pas été partagés, mais dont le schéma structurel est tout de même communiqué dans le magazine.
Si l'on s'appuie sur l'activité précédente, cela amène l'étudiant à :
identifier et caractériser les composants à commander,
saisir le schéma de la carte,
router un circuit imprimé sur 4 couches,
s'initier au routage de paires différentielles (4 paires en l'occurrence),
câbler les composants CMS et traversants,
mettre en œuvre la procédure de récupération de l'EDID[5] de l'appareil à protéger,
valider le bon fonctionnement du pare-feu.
Le logiciel servant de support est KiCad, mais ce travail pourra être effectué sur tout autre logiciel de CAO électronique disposant de fonctionnalités similaires.
La carte réellement câblée pourra être celle routée par l'étudiant, ou une version routée par l'enseignant dont le bon fonctionnement sera avéré.
5ème activité : qui peut-être vue comme une évaluation, ou une maîtrise des connaissances abordées dans les activités précédentes.
L'étudiant est beaucoup plus en autonomie.
Il doit concevoir une petite carte de test d'une liaison HDMI[2], du même type que celle utilisée dans la première activité, mais disposant d'un repérage des différents bus sur la connectique, ce qui facilitera l'utilisation lors de la capture des trames.
Cette carte pourra également disposer d'un routage adapté aux paires différentielles, ce qui n'est pas le cas sur la carte d'origine.
Le travail mené de la saisie du schéma jusqu'à la capture de signaux après fabrication, permettra d'évaluer le niveau d'autonomie de l'étudiant.
Remarques générales
Pour des raisons évidentes de droits d'auteurs, une version .pdf de l'article du magazine MISC N°127 n'est pas mise en ligne sur ce site. Ce numéro est disponible à la vente dans différents formats.
Les solutions proposées pour les 2 pare-feux ont été testées. De très petites adaptations matérielles et logicielles sont nécessaires par rapport aux documents d'origine mis en ligne, ce qui peut aussi présenter certains intérêts pour un technicien.
Un facteur de forme a été respecté entre les 3 PCB[7] développés pour illustrer la formation, afin d'obtenir une compatibilité au niveau du support de stencil, et aussi pour rajouter une contrainte de fabrication, mais rien n'oblige à s'aligner sur ce choix.
Les établissements qui souhaitent réaliser leurs PCB en utilisant une CNC pourront faire les 2 dernières réalisations en version 2 couches (non testé !).
Les fichiers Gerber de ces 2 dernières réalisations pourront être fournis aux collègues qui seraient uniquement intéressés par le câblage et la mise en œuvre.
L'investissement est d'un coût très raisonnable.
Les échanges pour la configuration/programmation des cartes pare-feux peuvent se faire entre un PC sous Linux ou un Raspberry Pi (testé sur Rpi3 et Rpi4) et un équipement de type un écran, téléviseur, vidéoprojecteur, écran dynamique ... ayant bien sûr une connectique HDMI[2]. Si on dispose d'un téléviseur compatible HDMI-CEC c'est l'idéal.
Il faut également disposer d'un analyseur logique. Plusieurs modèles d'analyseurs proposent les interpréteurs de trames nécessaires (I2C et HDMI-CEC). Quelques activités proposées nécessitent d'installer les logiciels ScanaStudio et Logic2, ils sont gratuits.
Les cartes réalisées pourront éventuellement servir ensuite en tant qu'auto-équipement dans l'établissement.
Pré-requis
Avoir déjà pratiqué une saisie de schéma et un routage sur un ou des exemples simples. C'est un exercice trop difficile pour découvrir la saisie de schéma et le routage, sauf éventuellement l'activité 5.
Connaissances minimales sur l'environnement Linux.
Connaissances minimales sur le bus I2C, les microcontrôleurs, les mémoires EEPROM et la programmation en langage C/C++.
Il est souhaitable d'avoir déjà utilisé un analyseur logique.