Une vulnérabilité importante découverte sur SQLite

Les chercheurs en sécurité de Tencent Blade ont découvert une vulnérabilité importante sur SQLite et Chromium, qu'ils ont nommé Magellan. De manière générale, tout projet ayant l'une de ces deux dépendances serait vulnérable. La faille a été qualifiée d’importante par Google. Son exploitation pourrait permettre d’exécuter du code arbitraire à distance ou provoquer un déni de service. Une attaque sur Chromium nécessiterait l'interaction avec un utilisateur en lui faisant visiter une page web malveillante. Une attaque sur SQLite nécessiterait de pouvoir exécuter une requête SQL sur le système dans lequel la base SQLite est intégrée. Ces deux attaques ne nécessiteraient pas de privilège particulier.

SQLite est une bibliothèque permettant l'implémentation d'un moteur de base de donnée SQL, avec la particularité d'être directement intégrée au programme, contrairement à d'autres moteurs qui suivent une architecture client-serveur. La vulnérabilité est particulièrement importante car SQLite se revendique comme le type de base de données le plus déployé au monde. Elle est notamment très utilisée dans le domaine de l'internet des objets. Dans une discussion sur le forum Hacker News, le créateur de SQLite a confirmé que la vulnérabilité n'était exploitable que lorsqu'un attaquant a la possibilité d’exécuter des commandes SQL arbitraire, c'est à dire réaliser une injection SQL. En revanche, Chromium ferait exception à cette règle. L'équipe de développement a travaillé les dernières années sur des mesures de protections afin d'empêcher des attaques par injection SQL directement au niveau de la bibliothèque. Cependant, cette vulnérabilité utiliserait les "Shadow Table" comme vecteur d'attaque, des tables spécifiques utilisées par SQLite dans son mécanisme de gestion des tables virtuelles.

Chromium est un navigateur web servant de base à d'autres projets de navigateurs comme Chrome et plus récemment Edge. Il intègre notamment WebSQL qui est une API de stockage dans une base SQLite. Cette API n'est plus supportée par le W3C depuis 2010. Les chercheurs de Tencent ont réussi à exploiter la vulnérabilité sur le Google Home car il utilise Chromium pour la lecture de pages Web. Aucun code vulnérable n'a été publié mais un code d'exploitation permettant de réaliser un déni de service en provoquant une interruption logicielle de Chrome a été publié. Le projet logiciel Electron bâti sur Chromium serait également affecté.

Tencent Blade n'a pas souhaité communiquer de détails techniques sur cette vulnérabilité et a annoncé son intention de ne pas dévoiler de code d'exploitation. La vulnérabilité n'aurait pas été exploitée. Les mises à jour les plus récentes des versions stables de Chromium et SQLite, publiées début décembre, intègrent un correctif pour cette vulnérabilité. Ce sont ainsi 224 fichiers qui ont été mis à jour dans Chromium. Du fait de la criticité de la vulnérabilité, et de l'ubiquité de SQLite, les utilisateurs sont invités à appliquer les mises à jour le plus rapidement possible.

Détails techniques :

Les CVE pour cette vulnérabilité sont décrits comme suit : 

CVE-2018-20346 [CVSS v3 8.1] : Les versions antérieures à la v3.25.3 de Les versions antérieures à la v3.25.3 de SQLite, lorsque l'extension FTS3 est activée, rencontrent un débordement de mémoire pour les requêtes FTS3, permettant aux attaquants connectés à distance d'exécuter du code arbitraire en utilisant la capacité à exécuter des instructions SQL arbitraires (comme dans certains cas d'utilisation WebSQL).
CVE-2018-20505 [CVSS v3 7.5] : SQLite v3.25.2, lorsque les requêtes sont exécutées sur une table avec une clé PRIMAIRE dans un format incorrect, permet aux attaquants connectés à distance de provoquer un déni de service en exploitant la possibilité d'exécuter des instructions SQL arbitraires (comme dans certains cas d'utilisation WebSQL).
CVE-2018-20506 [CVSS v3 8.1] : Les versions antérieures à la v3.25.3 de SQLite, lorsque l'extension FTS3 est activée, rencontrent un débordement de mémoire pour les requêtes FTS3, permettant aux attaquants connectés à distance d'exécuter du code arbitraire en utilisant la capacité à exécuter des instructions SQL arbitraires (comme dans certains cas d'utilisation WebSQL).

Informations
+

Risques

  • Exécution d'un code arbitraire

Criticité

  • Score CVSS : 8.10

Existence d’un code d’exploitation de la vulnérabilité

  • Aucun code d'exploitation n'est disponible pour réaliser une exécution de code à distance. En revanche, un code d'exploitation est publiquement disponible pour réaliser une interruption logicielle sous Google Chrome.

Composants & versions vulnérables

  • SQLite : versions antérieures à la 3.26.0
  • Chromium : versions antérieures à la 71.0.3578.80

CVE

  • CVE-2018-20346
  • CVE-2018-20505
  • CVE-2018-20506

Recommandations
+

Mise en place de correctif de sécurité

  • Des correctifs de sécurité ont été publiés pour Chromium et SQLite. Les mises à jours de Chrome peuvent être installées directement depuis le navigateur et sont en général automatiques. Les mises à jour de SQLite sont disponibles sur le site du projet.
  • Pour Chromium, installer la version 71.0.3578.80. Pour SQLite, installer la version 3.26.0.

Solution de contournement

  • Aucune solution de contournement n'est proposée pour SQLite ou Chromium.