samedi 19 septembre 2009

L'échec de Microsoft

Dans Windows, il n'y a que 3 points d'entrée à défendre:

  • La pile TCP/IP
  • L'implémentation SMB (sur les ports TCP/139 et/ou TCP/445)
  • L'implémentation du RPC endpoint mapper (port TCP/135)
En effet, ces 3 points d'entrée sont toujours accessibles quels que soient la version et le mode d'utilisation de Windows (machine personnelle, poste de travail, serveur, etc.).

Il est possible de n'avoir aucun port ouvert sur l'extérieur (moyennenant quelques astuces telles que la configuration de la clé de base de registre "ListenOnInternet"), mais en pratique je n'ai jamais vu une machine configurée de la sorte ailleurs que dans les labos de recherche.

Avec Windows Vista (sorti en novembre 2006, pour mémoire), Microsoft a modifié deux composants fondamentaux:
  • La pile TCP/IP, entièrement réécrite pour supporter nativement IPv6.
  • L'implémentation SMB, passée en version 2. Cette version est supposée plus simple (donc plus sûre) avec seulement 16 commandes au lieu de 80.
Bien sûr, avec tout le tremblement autour du Secure Development Lifecycle, on aurait pu penser que le remplacement de 2 composants critiques sur 3 se ferait avec toutes les précautions possibles.

Ca sentait pourtant mauvais, puisque la pile IP s'est d'abord avérée partiellement vulnérable à la Land Attack (avant la sortie de la RTM), puis une faille conceptuelle dans l'implémentation de la signature SMB a obligé Microsoft à mettre à jour le protocole en version 2.1 (bulletin de sécurité MS07-063).

Mais ce mois-ci, c'est le drame.
Non seulement la pile IP s'avère vulnérable à une faille d'exécution de code à distance (pas triviale, je l'avoue) - CVE-2009-1925, à ne pas confondre avec la faille SockStress qui a été patchée dans le même bulletin (MS09-048) - mais surtout il n'a échappé à personne qu'une faille d'exécution de code à distance (confirmée par Microsoft) non patchée affecte la pile SMBv2.
Quelles leçons tirer de tout cela ?
  1. On ne peut avoir confiance en personne. Malgré un budget de 4 milliards de dollars pour le développement de Vista, le recrutement de toutes les pointures en sécurité disponibles sur le marché, et des objectifs affichés en matière de sécurité, Microsoft a raté[*] une faille assez triviale (à détecter, pas à exploiter :) et catastrophique en terme d'impact.
  2. Il n'y a eu aucune analyse correcte de la faille sur Internet. Je n'ai vu que SourceFire et ReverseMode aborder le sujet sous un angle vaguement technique, sans toutefois rentrer dans les détails. Ca ne veut pas dire que personne ne comprend rien - ça veut dire que les gens qui travaillent sérieusement sur cette faille ne sont pas payés pour faire fuir les détails sur leur blog ...
  3. Par contre des gens pour réécrire le code d'exploitation en Java et s'accorder tous les crédits, il y en a eu. J'attends la version PHPCLI ...
  4. Les loups sont lâchés. Je prédis d'autres failles sur SMBv2 (bon là je triche un peu ;).
  5. Et vive la France, puisque tous les acteurs de la chaine sont francophones ! Laurent Gaffié (on m'a dit qu'il était québecois, mais je ne le connais pas personnellement), Kostya Kortchinsky et Nicolas Pouvesle.
[*] Est-ce que Microsoft a vraiment "raté" cette faille ? Pas tout à fait sûr, puisque la faille a été corrigée dans Windows Seven entre la RC et la RTM. Reste à savoir si cette correction a été apportée sans comprendre l'impact de la faille ("à la Linux"), ou si Microsoft a tout à fait compris l'enjeu ... et décidé de passer la faille sous le tapis, ce qui serait vraiment malhonnête de la part d'une société qui prétend donner des leçons de sécurité à tout le monde !
PS. Bienvenue aux lecteurs de la newsletter XMCO n°23 :)

8 commentaires:

Anonyme a dit…

et le gars va se ramasser des credits pour du remote code execution alors qu'il a fait que sortir un fuzzer (vu dans l'interview de securityfocus) et s'arreter a un crash ... alors que Kotsya et son équipe auront fait un travail remarquable pour arriver du code execution.

newsoft a dit…

@anonyme: non il n'aura pas les crédits, car Microsoft ne donne de crédits que pour la remontée de failles en mode "responsable" (responsible disclosure en anglais).

La morale est sauve :)

Benjamin a dit…

@newsoft: Laurent est français, il vit juste au quebec en ce moment.

@anonyme: bien c'est plutôt normal que Laurent prenne des crédits. C'est quand même lui qui a trouvé la faille...

S. a dit…

tu n'aura pas la version phpcli, car php c'est pas secure ;) alors personne ne sortira en exploit ;)

MeiK a dit…

mais en plus le code Java qui fait crasher, on dirait du code d'un débutant en Java ...

newsoft a dit…

@MeiK: une bonne analyse l'écosystème Java:

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Anonyme a dit…

"a la Linux"... Attention aux trolls trop poilus, ça lasse!

Anonyme a dit…

@S.: la version en page web dynamique écrit en PHP a déjà été écrite.
(J'avais que ça sous la main pour faire un test ...)