- L’affirmation selon laquelle un adaptateur Ethernet-vers-USB acheté en Chine embarquait un malware s’est propagée, mais les indices confirmés pointaient plutôt vers un mode de distribution des pilotes propre à d’anciennes puces RJ45-vers-USB
- Les « éléments en russe » signalés par un scan CrowdStrike Falcon correspondaient aux caractéristiques d’un EXE auto-extractible 7-Zip d’Igor Pavlov, et le contenu du fichier semblait correspondre au pilote public pour le SR9900 de CoreChips Shenzhen
- Le SR9900 est une puce très peu documentée, mais elle semble être un clone direct du Realtek RTL8152B, ce qui cadre avec le contexte de Windows 7, où des périphériques USB 2.0 et 100BASE-TX fournissaient leurs pilotes via un stockage intégré
- La mémoire flash SPI de 512 kB au format 25x40 sur le PCB ne servait pas à stocker des paquets interceptés, mais, d’après l’analyse, à recevoir telle quelle une image ISO 9660 et des pilotes Windows écrits par un outil de production afin de fonctionner comme un CD-ROM virtuel
- Le code des microcontrôleurs USB et Ethernet internes au SR9900 reste une zone non vérifiée, mais ce seul cas ne suffit pas à conclure que du « matériel bizarre » est forcément malveillant
Point de départ des soupçons de matériel malveillant dans la supply chain
- Dans la cybersécurité, les accusations de sabotage massif de la supply chain reviennent souvent, mais dans la réalité, elles s’avèrent le plus souvent fausses
- Non pas parce que ce type d’attaque est impossible, mais parce qu’il est complexe, long à mettre en œuvre et risqué
- En pratique, voler des identifiants ou pousser une victime à télécharger un fichier malveillant est bien plus simple
- La polémique a pris de l’ampleur lorsqu’un jeune fondateur de startup a affirmé sur les réseaux sociaux qu’un adaptateur Ethernet-vers-USB acheté en Chine était préinfecté par un malware
- Son message évoquait l’évasion de machines virtuelles, la capture de frappes clavier et l’usage d’éléments en russe
- Les publications associées ont cumulé des millions de vues, sans toutefois fournir de détails techniques clairs
Vérification du scan public et des fichiers de pilote
- Le rapport de scan CrowdStrike Falcon partagé par l’auteur était ambigu et ressemblait davantage à un ensemble d’indices trompeurs qu’à une preuve décisive
- Le binaire analysé était un EXE auto-extractible basé sur 7-Zip, l’outil de compression open source d’Igor Pavlov
- Les éléments en russe peuvent s’expliquer par la nationalité de son auteur
- Le fait qu’il s’agisse d’une archive auto-extractible installant des pilotes explique l’essentiel des comportements qui semblaient suspects
- Le contenu de l’archive semblait correspondre au pilote public signé 2.0.7.0 destiné à une puce RJ45-vers-USB conçue par CoreChips Shenzhen
- Le fichier
.infinclus montre que l’entreprise utilisait aussi le nom Corechip Semiconductor
- Le fichier
La puce SR9900 et le contexte d’une ancienne conception
- Le pilote fait référence à une puce appelée SR9900
- Il existe très peu d’informations publiques sur cette puce et sur son fabricant
- L’enquête suggère que le SR9900 est un clone direct du Realtek RTL8152B
- Une présentation produit en anglais laisse entendre que « SR » signifie « Supereal », et cette marque est aussi apparue dans le contexte des fausses puces FTDI FT232RL qui ont déjà posé problème dans l’industrie
- Cette filiation est importante, car la conception d’origine de Realtek est ancienne et repose sur une fiche technique de 2013
- L’appareil prend en charge le 100BASE-TX et l’USB 2.0
- Cela correspond bien aux usages des périphériques à l’époque de Windows 7
- À l’époque, les lecteurs CD-ROM disparaissaient progressivement, mais on ne pouvait pas encore supposer que tous les ordinateurs étaient toujours connectés à Internet
- Le fait que certains périphériques se présentent comme un périphérique de stockage de masse contenant leurs propres pilotes était donc cohérent avec ce contexte
- Du point de vue de la sécurité, ce n’était pas forcément meilleur ni pire que d’autres méthodes temporaires de distribution de pilotes
Usage réel de la mémoire flash SPI
- Les photos de démontage montraient un PCB simple avec, à côté du SR9900, une puce de mémoire flash série au format 25x40
- La question centrale était de savoir si cette flash de 512 kB servait au firmware ou au stockage de paquets interceptés
- Ni la documentation du SR9900 ni celle du RTL8152B n’expliquaient clairement l’usage de cette puce flash d’accompagnement, et les recherches d’images de schémas n’ont pas permis de trouver de conception du chip Realtek d’origine avec quelque chose connecté à ses broches série
- Le bus SPI lui-même est simple
- L’hôte fournit le signal d’horloge à la vitesse qu’il souhaite
- À chaque front montant de l’horloge, le périphérique lit 1 bit sur « serial in », et l’hôte lit 1 bit sur « serial out »
- Il n’y a ni handshake, ni en-tête, ni bit de parité, ni contrôle de flux
- Une lecture typique de mémoire flash série consiste à envoyer la commande READ 0x03 suivie d’une adresse sur 3 octets, puis à recevoir les données en continu
- Cela rendait possible l’achat du dongle réel afin de dumper son contenu mémoire
- Après avoir retrouvé le site de CoreChips en chinois et poursuivi les recherches, l’auteur a trouvé de vieux messages de forum chinois liés au « SR9900 series chip Windows system mass production tool », ainsi que des archives protégées par mot de passe et payantes
- L’archive « SR9900(A)设计资料1018.rar » a été téléchargée pour 2,99 dollars puis examinée
- Elle contenait l’outil de production SR9900Efuse, avec une interface au style résolument rétro
- L’image de système de fichiers ISO 9660 de 168 kB incluse contenait le pilote Windows auto-extractible
- L’outil de production écrit directement le fichier
.isodans la mémoire flash SPI - La puce fonctionne alors comme un CD-ROM « défini par logiciel », remplaçant un lecteur physique
- L’image disque peut être téléchargée ici, avec le mot de passe
rj45
- L’outil de production écrit directement le fichier
- L’image CD-ROM a été créée avec « ULTRAISO V9.3 CD & DVD CREATOR, (C) EZB SYSTEMS »
- UltraISO est présenté comme un outil qui évoque l’époque de Windows XP
- La configuration minimale requise mentionne un Intel Pentium 166MHz ou supérieur
Fonction de CD-ROM virtuel optionnelle et limites restantes
- L’archive principale contenait aussi le document « SR9900(A)设计前必看.docx »
- D’après le texte traduit automatiquement, lorsqu’on utilise le SR9900 comme carte réseau USB, le SPI peut servir de lecteur optique virtuel pour installer le pilote Windows
- Il est possible de prégraver dans la mémoire flash SPI le pilote SR9900 pour Windows
- Le document précise que l’usage d’une puce flash est optionnel
- En résumé, l’aspect étrange de ce cas semble provenir non pas d’un comportement malveillant, mais d’une ancienne méthode de distribution de pilotes pour périphériques
- Même sans laboratoire hardware, les recherches dans les ressources publiques et un peu de patience suffisaient à lever les principales interrogations
- La zone qui n’a pas été totalement vérifiée concerne les deux petits cœurs de microcontrôleur internes au SR9900
- La puce contient des cœurs USB et Ethernet, chacun exécutant son propre code interne
- Si l’on suppose une implication du fabricant de la puce, il pourrait être possible d’aller inspecter cet intérieur
- Realtek fournit un pilote Linux open source pour le RTL8152, et ce pilote applique des correctifs de firmware depuis la mémoire
- À l’œil nu, rien n’indiquait la présence de chiffrement ou de signature
- On ne peut pas exclure totalement la possibilité d’un dongle USB malveillant
- Le texte note qu’un scientifique travaillant sur le programme nucléaire iranien aurait de quoi s’en inquiéter
- Un RSSI d’une entreprise civile stratégiquement importante devrait aussi faire preuve d’une certaine vigilance
- Pour du networking domestique, ce cas seul ne fournit pas de base solide pour le considérer comme une menace immédiate
1 commentaires
Avis de Hacker News
Cette formulation prête à confusion. Le problème n’était pas tant la fausse puce elle-même que le fait que, lorsqu’il détectait une contrefaçon, le pilote officiel FTDI modifiait le PID du matériel en fonctionnement en 0000, le rendant ainsi impossible à reconnaître ensuite : http://www.rei-labs.net/changing-ftdi-pid/
J’ai ri à la mention « Intel Pentium 166 MHz ou supérieur requis ». L’article est aussi amusant, et j’aime beaucoup ce genre où « une personne intelligente, par ennui, pousse jusqu’au bout une conclusion qui paraît évidente au bon sens, mais dont la preuve exige une créativité et une ténacité inattendues »
j’étais prêt à aller sur le Dark Web (amazon.com) acheter un dongle pour dumper le contenu de la puce mémoireIl est également plus confortable de se dire victime et découvreur d’un complot que d’accepter qu’il ne s’agissait que d’un assemblage bricolé assez courant en ingénierie. Bravo à l’auteur
Cela ne veut pas dire que les spywares chinois ne posent pas problème. Mais si l’on n’a pas les compétences techniques de base pour les identifier, il ne faut pas courir partout en criant « Chine ! Chine ! Chine ! ». C’est comme ça que des responsables politiques s’emparent de fake news pour justifier des politiques stupides, et c’est nuisible pour la société
Dès que j’ai vu le tweet sur ce dongle « malveillant », j’ai reconnu exactement l’objet sur lequel j’avais travaillé auparavant. Plus que malveillant, il est simplement pénible
https://blog.brixit.nl/making-a-usb-ethernet-adapter-work-sr...
Dans mon cas, j’avais désactivé le module flash SPI pour qu’il n’apparaisse plus comme un lecteur CD, mais l’auteur de cet article a même trouvé la documentation indiquant que le SPI est optionnel. Fait amusant, cet article fournit désormais aussi les outils pour le reflasher et en faire un véritable dongle RJ45 malveillant
On dirait qu’ils ont prévu une empreinte de diode pour boîtier SOT23 à 3 broches, puis, faute de stock de ce composant spécial, qu’ils ont soudé une diode SOD323 entre deux broches, inclinée d’environ 30 degrés
Si c’est une conséquence non intentionnelle, alors au mieux ce n’était que de la sécurité par l’obscurité, et il est préférable que cela soit exposé pour que les gens n’en dépendent pas
autorun.infau faux CD ?J’aime plutôt bien l’idée qu’un périphérique USB se fasse passer pour un périphérique de stockage afin de fournir son propre pilote. La méthode « correcte » aujourd’hui consisterait sans doute à déposer tout un tas de choses sur les serveurs de Microsoft et à les télécharger au branchement, mais j’ai vu suffisamment de matériel nécessitant une installation manuelle de pilotes pour savoir que ce n’est pas aussi simple que ça en a l’air. Par exemple, je dois très souvent télécharger des pilotes ADB propres à chaque constructeur
Quoi qu’il en soit, c’est une approche astucieuse qu’un périphérique aide à sa configuration initiale, et avoir le pilote dans l’appareil facilite un peu les choses par rapport à la recherche de la source officielle de téléchargement
Mais les multiples modes de fonctionnement ont rendu difficiles à configurer des appareils comme les dongles USB 4G/LTE. Ils apparaissent comme un périphérique de stockage USB, ou comme un certain type de périphérique série, ou comme quelque chose ressemblant à un modem CDC-ACM, et pour passer au bon mode il faut combiner des outils avec des commandes AT propres au constructeur. J’aimerais revenir à des appareils simples qui font leur travail dès qu’on les branche
Je ne sais pas où en est l’état de l’art aujourd’hui, mais pendant longtemps il a été courant d’ajouter une petite flash aux circuits intégrés de périphériques USB pour y stocker le VID/PID et d’autres informations de configuration USB. Ainsi, au branchement, l’appareil pouvait être correctement énuméré et associé au bon pilote. Selon le moment de la conception, la plus petite capacité facilement disponible dans la chaîne d’approvisionnement pouvait être de 512 ko ; utiliser une telle puce pour stocker quelques dizaines d’octets n’avait donc rien d’étrange
La partie ISO est un peu bizarre, mais honnêtement c’est une manière créative de contourner les politiques de sécurité IT d’entreprise qui limitent le stockage de masse USB. Les lecteurs optiques utilisent une autre classe de périphérique et peuvent probablement éviter la plupart des restrictions ; et s’ils sont énumérés comme un périphérique composite combinant lecteur optique et adaptateur réseau, ils pourraient permettre d’installer leur propre pilote même sur un ordinateur où les « clés USB » sont verrouillées
Ce qui est étrange, c’est qu’ils ont ajouté de la flash, donc du coût, tout en retirant les composants d’isolation magnétique. Il n’y a que des condensateurs en série, le jack est trop petit pour sembler intégrer des composants magnétiques, et inclure aussi des condensateurs en série n’aurait pas de sens
Je serais vraiment furieux d’apprendre que le dongle Ethernet USB que j’ai acheté n’a pas de composants d’isolation magnétique
Des dongles Ethernet USB « malveillants », ça existe évidemment. Mais pas celui-ci
https://hak5.org/products/lan-turtle
Du point de vue d’un puriste du RJ45, il faudrait appeler ça 8P8C. Sur ce, je sors
Par exemple, j’ai déjà vu des « dongles RJ45 » qui convertissent l’USB en série RS232 pour les ports console de nombreux équipements réseau
Pour USB-1000BASE-T, et plus généralement les dongles 2.5GBaseT d’aujourd’hui, si les performances vous importent, il est utile de connaître la différence entre un périphérique USB et un périphérique PCI Express
Après l’avoir branché à chaud sur un ordinateur portable avec un noyau Linux récent, il suffit de regarder s’il apparaît dans
sudo lsusb -vou danssudo lspci -vLes périphériques PCIe natifs offrent de bien meilleures performances, peuvent atteindre le débit filaire du 2.5GBASE-T, et communiquent avec l’hôte via une implémentation Thunderbolt au-dessus de l’USB. Les périphériques purement USB peuvent aussi fonctionner correctement, mais s’ils sont bon marché, il y a une raison. Bien sûr, certains portables d’entrée de gamme peuvent ne pas avoir du tout d’implémentation Thunderbolt, il faut donc aussi en tenir compte
Mais, fondamentalement, ça reste un dongle, et j’obtiens 9,4 Gbit/s avec iperf3 sur Mac. Évidemment, il apparaît comme un périphérique PCIe
[1] https://www.amazon.com/gp/product/B0DHSWSSBY
Si l’on n’a qu’un port USB et que les performances comptent, la différence la plus importante est probablement de savoir si le périphérique Ethernet USB implémente CDC-NCM ou seulement CDC-ECM. CDC-ECM envoie les trames une par une au pilote, qui doit les confirmer et les traiter une par une, ce qui génère beaucoup de travail CPU, tandis que le plus récent CDC-NCM regroupe les trames
Sur mon portable, même un dongle ECM 1 Gbit atteint le débit gigabit, mais il utilise 100 % d’un cœur CPU, alors qu’un dongle NCM 1 Gbit n’utilise presque pas de CPU
Créer une connexion nuisible via un port Ethernet est extrêmement difficile, alors que créer une connexion nuisible via un port USB est très facile. Il faut l’appeler par son nom. C’est un dongle USB malveillant qui se trouve aussi avoir une prise Ethernet