4 points par GN⁺ 2024-04-06 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Le sandbox V8 est un sandbox léger, in-process, pour le moteur V8
  • Il a désormais dépassé le stade expérimental et est inclus dans le Vulnerability Reward Program (VRP) de Chrome
    • Certains problèmes de sécurité restent à résoudre, et Chrome 123 peut encore être considéré comme une version « bêta » du sandbox

Motivation

  • La sûreté mémoire reste un enjeu majeur : tous les exploits Chrome découverts au cours des trois dernières années ont commencé par une vulnérabilité de corruption mémoire dans V8
  • 60 % de ces vulnérabilités provenaient de V8, mais la plupart n’étaient pas des bogues de corruption mémoire « classiques », plutôt des problèmes logiques subtils
  • La plupart des solutions actuelles de sûreté mémoire ne s’appliquent pas à V8, et ni une migration vers un langage memory-safe comme Rust ni des fonctionnalités matérielles comme le memory tagging n’aident à relever les défis de sécurité de V8

Sandbox V8 (heap)

  • L’idée de base du sandbox est d’isoler la mémoire du heap de V8 afin d’empêcher qu’une corruption mémoire ne se « propage » à d’autres parties du processus
  • Il pourrait être implémenté avec un support matériel, mais faute de fonctionnalités matérielles adaptées à ce jour, il est mis en œuvre en logiciel
  • Le sandbox remplace les types de données pouvant accéder à toute mémoire externe par des alternatives « compatibles sandbox »
  • Seul le heap V8 à l’intérieur du sandbox se trouve dans le sandbox, ce qui est similaire au modèle de sandboxing de WebAssembly

Performances

  • Le principal avantage de cette approche par sandbox est qu’elle a fondamentalement un faible coût
  • Le surcoût du sandbox provient surtout des indirections via des tables de pointeurs vers les objets externes, et il est actuellement inférieur à 1 % sur les charges de travail typiques

Tests

  • La testabilité de la frontière de sécurité signifie la capacité à vérifier manuellement et automatiquement que les garanties de sécurité sont bien maintenues en pratique
  • Le sandbox V8 remplit toutes les conditions : un modèle d’attaquant clair, un moyen d’émuler cet attaquant et une méthode pour déterminer automatiquement quand la frontière de sécurité échoue

Utilisation

  • Le sandbox V8 doit être activé/désactivé au moment de la compilation à l’aide du build flag v8_enable_sandbox.
  • Il n’est disponible que sur les systèmes 64 bits et nécessite actuellement la réservation de 1 téraoctet d’espace d’adressage virtuel.
  • Le sandbox V8 est déjà activé par défaut depuis environ deux ans dans Chrome 64 bits sur Android, ChromeOS, Linux, macOS et Windows.

Conclusion

  • Le sandbox V8 est un nouveau mécanisme de sécurité conçu pour empêcher qu’une corruption mémoire dans V8 n’affecte d’autres zones mémoire du processus
  • Les technologies actuelles de sûreté mémoire s’appliquent difficilement aux moteurs JavaScript optimisés, mais elles sont efficaces pour protéger la surface d’attaque du sandbox V8
  • Le sandbox constitue une étape essentielle vers une meilleure sûreté mémoire

L’avis de GN⁺

  • Le sandbox V8 est une réponse moderne aux vulnérabilités de corruption mémoire, en apportant une solution à des problèmes que les techniques classiques de sûreté mémoire ne parviennent pas à résoudre
  • Compte tenu de la complexité des moteurs JavaScript, ce sandbox joue un rôle important pour renforcer la frontière de sécurité et améliorer la sûreté mémoire
  • Le faible surcoût en performances peut le rendre attractif pour les développeurs, ce qui devrait favoriser son adoption à grande échelle
  • Cependant, la technologie de sandbox peut aussi introduire de nouvelles vulnérabilités de sécurité, qui devront être gérées par une surveillance et des tests continus
  • Une implémentation efficace du sandbox joue un rôle crucial pour empêcher qu’un attaquant ne propage une corruption mémoire à d’autres parties du système, contribuant ainsi au renforcement de la sécurité du Web

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.