Quelques illustrations croisées récemment sur un blog pour illustrer la question de la sécurité sur les deux systèmes
Elles représentent les appels systèmes qui interviennent lorsqu'un serveur web sert la même page html contenant juste une image.
Il faut se rappeler qu'un appel système représente une opportunité d'adresser de la mémoire. Or ce sont ces opportunités d'adresser la mémoire qui seront le lieu de tentative d'attaque, puisque un "exploit" par dépassement de tampon ("buffer overflow") use de ces réservations mémoires de manière imprévue pour réserver et écrire dans des zones d'exécution de code. Lorsqu'il y a effectivement une faille de dépassement de tampon, c'est que les vérifications dans le code sur la correction des demande de réservation mémoire, est mal faite ou est inexistante.
Un développeur qui veut se prémunir de ces attaques doit donc faire un audit de chaque appel système pour éventuellement détecter si il existe une vulnérabilité.
Plus il y a donc d'appels systèmes, plus leur enchevêtrement/succession est complexe, plus le potentiel est grand de vulnérabilité, et plus l'effort est important pour créer une application sure.
A vous de juger maintenant quel succession d'appel système est la plus simple:
Apache sous Linux:
IIS sous Windows:
Quant à la raison de cette complexité sous Windows, c'est dû probablement au fait que Windows s'est construit sans souci d'élégance de conception, mais juste sous des impératifs commerciaux de détenir tel ou telle fonctionnalité, la fin justifiant l'inélégance des moyens.
Sous les Unix BSD ou Linux, puisque ces développements sont indépendants de tout impératif commercial, on n'a pas hésité à réécrire ou supprimer totalement certains vestiges.
Sous Windows, on construit sur ces vestiges. C'est un peu comme faire construire une maison à l'architecture élégante et équilibrée, puis lui rajouter telle ou telle extension, tel ou tel appentit qui détruit l'équilibre, l'esprit général de l'architecture.
Source:
http://blogs.zdnet.com/threatchaos/?p=311
Hugues