Connexion
Abonnez-vous

DaMAgeCard : le SD Express détourné pour accéder à la mémoire vive

Avec Glenn Closed

DaMAgeCard : le SD Express détourné pour accéder à la mémoire vive

Des chercheurs sont parvenus à utiliser le port SD pour accéder à des informations sensibles en mémoire vive et déployer un code malveillant. La faute au standard SD Express, qui sacrifierait la sécurité sur l’autel des performances.

Le 09 décembre 2024 à 16h03

Les cartes SD sont disponibles en de multiples formats et avec divers protocoles. On les trouve sur de nombreux appareils, toujours pour permettre l’extension du stockage, voire le stockage tout court. C’est le cas notamment des appareils photos numériques, des ordinateurs portables ou encore de la plupart des consoles portables.

Des chercheurs de Positive Technologies ont montré qu’il n’était pas si complexe de détourner le port SD d’un appareil pour accéder aux données présentes en mémoire. Il est même possible de s’en servir pour envoyer du code malveillant dans le système hôte.

Entrées/sorties : entre PIO et DMA

Avant de plonger dans le problème qu’ils ont découvert, les chercheurs rappellent dans leur (long) exposé les différences à connaître dans l’accès aux données et la manière dont elles sont envoyées dans la mémoire centrale.

On distingue ainsi deux méthodes principales, PIO et DMA. La première, signifiant Programmable Input/Output, laisse le processeur maître des échanges. « Il demande les données, les récupère dans un registre ou autre, puis les place dans la mémoire principale », explique Positive Technologies. C’est donc le CPU qui interroge le périphérique. Pendant que la réponse se prépare, il peut vaquer à d’autres occupations. Quand elle arrive, le CPU revient s’occuper de la séquence et de l’envoi en mémoire.

La seconde méthode, DMA, signifie Direct Memory Access. Comme son nom l’indique, elle permet un accès direct à la mémoire. Le processeur n’est averti de la tâche à effectuer que lorsque tout est prêt, une interruption venant le prévenir. Il continue à initier et conclure le transfert, mais le reste des opérations est confié à un autre composant, dans la grande majorité des cas un contrôleur spécifique.

Dans le cas du problème découvert par les chercheurs, c’est bien dans le DMA que réside le problème. Il a d’ailleurs inspiré le nom de l’attaque : DaMAgeCard.

Au nom des performances

La méthode DaMAgeCard permet de profiter du DMA pour obtenir un accès direct à la mémoire de l’ordinateur. Elle contourne les mesures de sécurité habituelles, avec pour résultat la lecture des informations contenues en mémoire vive, jusqu’à l’injection de code malveillant.

Elle fonctionne théoriquement avec tout appareil contenant un port SD Express. Ces produits étaient plutôt rares jusqu’à présent, mais les chercheurs ont noté qu’on trouve ce type de lecteur sur un nombre croissant d’appareils. Ces lecteurs ont la possibilité de fonctionner en mode SDIO (Secure Digital Input Output), comme des ports SD classiques, ou en mode PCIe/NVMe.

Dans ce second cas, les performances sont largement augmentées. Sur les cartes SD classiques, la norme la plus rapide est UHS-III, avec un maximum théorique de 600 Mb/s. En comparaison, une seule ligne PCIe 3.0 autorise un maximum de 1 Gb/s.

Petit tour, vastes conséquences

Mais la sécurité peut en pâtir. Le lecteur démarre en fait toujours en mode SDIO. Il ne bascule en mode PCIe/NMVe qu’après avoir vérifié les caractéristiques de la carte, notamment la présence de contacts supplémentaires. C’est là que réside le problème : les chercheurs ont montré qu’il était possible d’émuler cette bascule entre les modes, tromper le contrôleur et donc passer par le DMA pour accéder à la mémoire.

Pour parvenir à leurs fins, les chercheurs ont utilisé un Raspberry Pi Pico, configuré pour émuler un contrôleur SD. On vous passe les détails, car la méthode n’est pas particulièrement simple. Les implications, elles, sont en revanches nombreuses.

Les chercheurs ont ainsi montré qu’il était possible d’obtenir un accès à la mémoire. De là, on peut obtenir les droits en lecture et en écriture. N’y a-t-il pas de sécurité prévue pour empêcher ce type de détournement ? Si, essentiellement l’IOMMU (Input–Output Memory Management Unit), chargé de faire correspondre les adresses virtuelles à des adresses physiques. Ce composant fait le lien entre un périphérique compatible DMA et la mémoire centrale.

Problème selon les chercheurs, cette protection n’est souvent pas bien implémentée. Sur un ordinateur portable gaming de chez MSI, ils sont ainsi parvenus à contourner l’IOMMU. Pour Positive Technologies, la sécurité des ports compatibles SD Express n’a pas été prise au sérieux. Ils généralisent le constat à l’ensemble du monde x86, puisque même les systèmes d’exploitation ne le gèreraient pas correctement ou ne l’utiliseraient pas au maximum de ses capacités, à cause souvent de pilotes trop anciens.

Qu’en déduire ?

Le DMA existe depuis une quinzaine d'années, pourquoi les attaques qui l’exploitent ne sont-elles pas devenues plus courantes ? Pour les chercheurs, DaMAgeCard constitue un évident nouveau point d’entrée avec lequel les concepteurs d’ordinateurs et autres appareils compatibles SD Express doivent composer.

En outre, les outils matériels aussi bien que logiciels n’étaient pas si nombreux il y a 15 ans. Avec un peu de rétro-ingénierie et des frais s’élevant à quelques dizaines de dollars/euros au maximum, il devient possible d’exploiter des faiblesses dans l’implémentation d’une norme.

« Aujourd'hui, nous disposons de multiples projets open-source qui fournissent des solutions prêtes à l'emploi pour extraire et analyser des images de la mémoire, contourner l'authentification dans les systèmes d'exploitation modernes et attaquer le chiffrement. Des articles de recherche de pointe et des conférences démontrent année après année comment contourner l'unique solution de protection. Pendant ce temps, des centaines de milliers d'appareils encore utilisés n'ont même pas cette protection activée », indiquent les chercheurs, en référence à l’IOMMU.

Ils estiment que SD Express ne peut que se répandre sur le marché, car les avantages en termes de performances sont trop grands pour être ignorés. Les appareils compatibles, en particulier les ordinateurs, sont encore assez peu nombreux, mais ils se démocratisent progressivement, descendant du haut vers le milieu de gamme. Les chercheurs espèrent sensibiliser les constructeurs avec les résultats de leurs travaux.

Commentaires (14)

votre avatar
C'est de toute beauté !
votre avatar
Dans le cas du problème découvert par les chercheurs, c’est bien dans le DMA que réside le problème. Il a d’ailleurs inspiré le nom de l’attaque : DaMAgeCard.
Non, ce n'est pas du DMA que vient le problème. Le DMA existe depuis très très longtemps en informatique. Le premier IBM PC avait déjà un contrôleur DMA. Non, le DMA n'existe pas depuis une quinzaine d'années.
The problem starts when an engineer gets a bright idea: “why don’t we put a DMA controller right on top of our peripheral device?”. This is known as Bus Mastering DMA.
Le problème vient du fait que c'est le périphérique qui programme le contrôleur DMA et pas le processeur. Donc, un périphérique externe peut demander de lire la mémoire sans contrôle de l'OS. C'est ça le problème. On peut donc lire toute la mémoire sans que les protections de l'OS et la MMU n'entrent en jeu.
Le problème vient du fait que des périphériques non certifiés comme sûrs peuvent prendre la main sur le bus mémoire et accéder où ils veulent.

Remarque : je n'ai pas lu tout leur effectivement très long exposé, mais ils expliquent que ce genre de failles existe depuis un moment (peut-être les 15 ans ?) mais que c'était plus difficile à exploiter parce que l'on pouvait verrouiller le boîtier de son PC et aussi parce qu'il n'y avait pas des outils (projets open source) facilitant beaucoup l'exploitation de la faille.
votre avatar
C'est pire que ça : le bus mastering existait déjà sur le bus ISA, puis sur le bus PCI. Bref, c'est vieux.
votre avatar
Mais comme ils disent : on pouvait cadenasser son boîtier. Bloquer le SD Express physiquement est plus difficile.
votre avatar
Il me semble d’ailleurs me souvenir d’un problème similaire (accès à la RAM depuis l’extérieur via DMA) sur les ports Firewire (ou IEEE 1394 pour ceux qui se souviennent de la norme).
Dans ce cas, le verrouillage du boîtier ne suffisait plus (mais Firewire n’a pas tellement été utilisé à part sur les Macs).
votre avatar
Oui pour ça que le support sur les OS récent a était supprimé/réduit
votre avatar
Pas vraiment, l'USB était devenu moins cher pour des différences de débits de plus en plus faibles.

Désormais, l'équivalent du Firewire est le Thunderbolt, qui a d'ailleurs le même soucis de DMA. Et c'est pour ça qu'il y a des options sur les bios / OS pour autoriser les périphériques.

Un exemple de faille : https://thunderspy.io/

On aura donc probablement bientôt des réglages de sécurité pour autoriser les cartes SD.
votre avatar
Tout ça existe "depuis la nuit des temps". Même problème avec PCMCIA, ExpressCard... Tout ce qui est plug n play et fait du DMA (exemple le PCIe, en port "normal" ou en port M.2).
IOMMU était censé corriger tout ça mais comme le disent les chercheurs, mal implémenté. Thunderbolt à ajouter à la liste, et donc maintenant USB4.

Je me souviens de périphérique Firewire qui servaient à déverrouiller (log in) une machine.
Donc par exemple, une machine chiffrée avec BitLocker+TPM mais sans mot de passe, qui attend qu'on rentre le mot de passe utilisateur.......

Pour ça que VeraCrypt a une option pour effacer les clés de chiffrement de la mémoire si une niveau périphérique est branché. Ils ne peuvent pas régler le problème du DMA, alors ils s'attaquent au plug'n'play...
votre avatar
Depuis quand c'est possible ? Il me semblait que l'échange direct ram-périphérique ne pouvait se faire que sur requête explicite du processeur à la dma.
votre avatar
Ça existe depuis très longtemps. Au moins 30 ans.
en.wikipedia.org Wikipedia
votre avatar
Tout à fait, le DMA est VIEUX, mais genre plus que moi alors que #teamvieux :D

Un des premiers contrôleurs DMA populaire a été l'intel 8237 qui était utilisé sur les ordis à base de CPU 8085 (sur des machines genre le TRS 80 model 100).

La date de sortie du 8237 est ~1979 (contre 1976 pour le 8085 avec lequel il s'interfaçait)
votre avatar
Après avoir soudé ports USB, je vais fondre le port SD.
Très intéressant cela dit.
votre avatar
Le DMA existe sur l'Amstrad CPC+ (1990), au moins pour le son. Mais bon pas trop de soucis de sécurité même si on a le wifi, SymbOS (OS avec GUI) n'a pas encore été piraté. Revenez sur les machines 8bit !
votre avatar
De ce que je comprends de l'article, le problème n'est pas vraiment le DMA en lui même, mais plutôt les implémentations des mécanismes de sécurité autour. Du coup il est un peu dommage de pointer le DMA comme coupable.

DaMAgeCard : le SD Express détourné pour accéder à la mémoire vive

  • Entrées/sorties : entre PIO et DMA

  • Au nom des performances

  • Petit tour, vastes conséquences

  • Qu’en déduire ?

Fermer