Une vulnérabilité de haute gravité a été révélée dans la bibliothèque de base de données SQLite, qui a été introduite dans le cadre d’un changement de code datant d’octobre 2000 et pourrait permettre aux attaquants de planter ou de contrôler des programmes.
Suivi comme CVE-2022-35737 (score CVSS : 7,5), le problème vieux de 22 ans affecte les versions SQLite 1.0.12 à 3.39.1, et a été abordé dans version 3.39.2 sortie le 21 juillet 2022.
« CVE-2022-35737 est exploitable sur les systèmes 64 bits, et l’exploitabilité dépend de la façon dont le programme est compilé », Andreas Kellas, chercheur chez Trail of Bits a dit dans un article technique publié aujourd’hui.
« L’exécution de code arbitraire est confirmée lorsque la bibliothèque est compilée sans canaris de pile, mais non confirmée lorsque des canaris de pile sont présents, et le déni de service est confirmé dans tous les cas. »
Programmé en C, SQLiteName est le le plus largement utilisé moteur de base de donnéesinclus par défaut dans Android, iOS, Windows et macOS, ainsi que dans les navigateurs Web populaires tels que Google Chrome, Mozilla Firefox et Apple Safari.
La vulnérabilité découverte par Trail of Bits concerne un bogue de débordement d’entier qui se produit lorsque des entrées de chaîne extrêmement volumineuses sont transmises en tant que paramètres aux implémentations SQLite du fonctions printfqui, à leur tour, utilisent une autre fonction pour gérer le formatage de la chaîne (« sqlite3_str_vappendf« ).
Cependant, une militarisation réussie de la faille repose sur la condition préalable que la chaîne contienne les types de substitution de format %Q, %q ou %wpouvant entraîner un plantage du programme lorsque des données contrôlées par l’utilisateur sont écrites au-delà des limites d’un tampon alloué par la pile.
« Si la chaîne de format contient le ‘!’ caractère spécial pour activer l’analyse des caractères Unicode, il est alors possible d’obtenir une exécution de code arbitraire dans le pire des cas, ou de faire en sorte que le programme se bloque et boucle (presque) indéfiniment », a expliqué Kellas.
La vulnérabilité est également un exemple d’un scénario qui était autrefois considéré comme irréalisable il y a des décennies – allouer des chaînes de 1 Go en entrée – rendu possible avec l’avènement de Informatique 64 bits systèmes.
« C’est un bogue qui n’a peut-être pas semblé être une erreur au moment où il a été écrit (remontant à 2000 dans le code source SQLite) lorsque les systèmes étaient principalement des architectures 32 bits », a déclaré Kellas.
Poster un commentaire