Hier a ete publie en urgence le correctif MS08-067. Touchant une sous fonction de CanonicalizePathName, meme fonction ayant presente la vulnerabilite patchee par Microsoft avec MS06-040. C'est moche. Il y a 42 experts securite chez Microsoft qui ont bosse sur le patch (indice: nombre fictif) et ils n'ont pas vu cette faille juste sous leur nez! Bon allez, je ne les blame pas je ne l'ai pas vu non plus. D'un autre cote je ne bossais pas chez Immunity a l'epoque, mais chez EADS donc necessairement moins de temps a ecrire des exploits (excuse bidon numero 42).
La vulnerabilite est vicieuse. Je vous conseille d'aller jeter un oeil au blog du sieur Sotirov pour voir le reverse de la fonction vulnerable.
Pourquoi donc le mois de l'"underflow"? Avec MS08-062, on avait une copie de buffer debordant devant le buffer et pas derriere, pareil avec MS08-067. C'est nouveau, c'est beau. Le stack cookie est derriere le buffer, donc avec un underflow, on ecrase le stack frame d'une fonction fille et pas le cookie de la fonction ou le buffer est defini, et c'est gagne. Grandiose! Je ne sais pas si c'est tres clair, c'est complique a expliquer.
Apres on peut aller voir le PoC sur milw0rm. Et c'est la qu'on voit le mauvais hacker.
This is because it depends on the state of the stack prior to the "overflow".You need a slash on the stack prior to the input buffer.
Declencher la vulnerabilite est ridiculement facile. Toute la difficulte reside dans la possibilite d'obtenir un '\' unicode a un endroit determine pour que votre "underflow" soit fiable. Cela prend 10min lorsque l'on comprend ce qui se passe, ou apparemment c'est trop complique pour qu'on s'y attarde pour les autres.