Le code de l'implĂ©mentation de rĂ©fĂ©rence de la spĂ©cification TPM 2.0 (Trusted Platform Module) prĂ©sente des vulnĂ©rabilitĂ©s (CVE-2023-1017, CVE-2023-1018) permettant l'Ă©criture ou la lecture de donnĂ©es en dehors du buffer allouĂ©. Une attaque contre les implĂ©mentations de processeurs cryptographiques utilisant le code vulnĂ©rable peut entraĂźner l'extraction ou la réécriture d'informations stockĂ©es sur la puce, telles que des clĂ©s cryptographiques. La possibilitĂ© de réécrire les donnĂ©es dans le firmware TPM peut ĂȘtre exploitĂ©e par un attaquant pour exĂ©cuter son propre code dans le contexte du TPM, ce qui peut, par exemple, ĂȘtre utilisĂ© pour mettre en Ćuvre des backdoors fonctionnant du cĂŽtĂ© du TPM et non dĂ©tectables depuis le systĂšme d'exploitation.
Les vulnérabilités sont dues à une vérification incorrecte de la taille des paramÚtres de la fonction CryptParameterDecryption(), permettant l'écriture ou la lecture de deux octets en dehors du buffer transmis à la fonction ExecuteCommand() contenant la commande TPM 2.0. Selon l'implémentation du firmware, les deux octets réécrits peuvent corrompre à la fois de la mémoire non utilisée et des données ou des pointeurs sur la pile.
L'exploitation de la vulnérabilité se fait en envoyant au module TPM des commandes spécialement formatées (l'attaquant doit avoir accÚs à l'interface TPM). Les problÚmes ont été résolus dans la mise à jour de janvier de la spécification TPM 2.0 (1.59 Errata 1.4, 1.38 Errata 1.13, 1.16 Errata 1.6).
La bibliothÚque ouverte libtpms, utilisée pour l'émulation logicielle des modules TPM et l'intégration du support TPM dans les hyperviseurs, est également vulnérable. La vulnérabilité a été corrigée dans la version libtpms 0.9.6.
Source : opennet.ru
