Microsoft poursuit son travail sur les hyperviseurs. Pour rappel, la Xbox 360 utilise déjà un hyperviseur et des DRM très costaux (NGSCB). La console a d'ailleurs été cassée par un bug trouvé dans l'hyperviseur.
Extrait d'un email dans le rapport de bug Debian : « Just for the record: Do not use the "hotfix" named disable-vmsplice-if-exploitable.c. The hotfix first tries to run the exploit (which would be totally unnecessary for the actual "fix" by the way and is therefore a very dumb thing to do), and this still leads to kernel memory corruption which will render the system unstable. You can imagine what might come from corrupted kernel beside a simple crash (e.g. data loss). ».
« A prerequisite for installing SP1 is that the computer has to be up to the current patch level — all of the critical updates Microsoft delivers via the update function » et « Depending on the language, these complete packs will range from 500MB to 800MB in size. »
Ca me semble quand même très très gros, surtout que c'est compressé ! Ubuntu Gutsy (un OS complet, pas juste notepad hein) tient dans 650 Mo :-)
« The SP1 installation itself can take several hours » et « Using the Vista DVD with integrated SP1 the installation takes no longer than installing Vista without SP1, but you cannot create such a Vista DVD yourself, since there is no integrate function unlike previous service packs. »
J'ai installé un Windows XP il n'y a pas longempts (ouais, l' « OS » qui est plus vieux qu'Ubuntu Warthog ou Debian Woody !). Hé bien, ça m'a pris plusieurs heures pour installer tous les correctifs puis le gros SP2. D'ailleurs, le SP2 est une vraie plaie à installer :-( En attendant, Debian sort régulièrement des version correctives de Debian Stable (4.0, 4.0r1, 4.0r2, ...).
Le libre n'est pas tout blanc ou tout noir. Autant la société s'offre une publicité gratuite (payé par le gouvernements des USA si j'ai bien compris), autant il y a des résultats : des bugs sont corrigés dans des logiciels libres.
Si je ne me trompe pas, Coverty fait de l'analyse statique du code source. Ce type d'analyse peut trouver de nombreux bugs qui ont peu de chance de pouvoir réellement se reproduire (car il faut réunir un grand nombre de conditions qui peuvent ne jamais arriver).
Alors qu'avec le fuzzing, on est directement fixé : c'est une analyse dynamique qui teste le programme en cours d'exécution avec de vraies données.
J'avais pensé un jour créer une communauté libre qui viserait à auditer tous les logiciels libres, mais j'ai la flemme de créer ça :-) L'idée serait d'échanger des informations sur les outils d'audit, faciliter la communication avec les éditeurs des logiciels, et se partager les outils pour tester un maximum de logiciels.
Actuellement, je le fais tout seul dans mon coin et quand j'ai du temps. Je teste Mplayer, Gstreamer, Firefox, poppler, libvorbis, etc. J'ai même écrit un outil de fuzzing pour ça :-) http://fusil.hachoir.org/trac
Prenez la version stable, la version de développement est en gros chantier pour intégrer un débogueur (ptrace).
PS: Krunch : propose ton texte comme dépêche ! Pourquoi commencer à faire un journal alors que c'est déjà prêt pour une dépêche ??
Petit à petit, tous les effets graphiques en 2D utilisent le GPU (les fonctions OpenGL) car c'est simple, portable et rapide. Il faut donc un bon pilote "3D" pour la carte vidéo. Or, AMD (ATI) n'a libéré que les spécifications pour la partie 2D... celle dont tout le monde s'en fout.
« suppression du "Giant Lock" » => « suppression du verrou géant »
* « Stabilisation, amélioration de SCHED_ULE » => « Stabilisation et amélioration de l'ordonnanceur de processus « SCHED_ULE » »
* « Support de ZFS » => « Support du système de fichier ZFS »
* « Support de la journalisation pour UFS » => « Ajout de la journalisation dans le système de fichier UFS »
Histoire de compléter la liste des hébergeurs cités : http://berlios.de/
Perso, j'ai commencé à héberger les projets chez moi. Comme ça j'ai tous les services qu'il me faut et un contrôle total dessus ;-) J'utilise Trac + Subversion... Rien d'extraordinaire, mais j'ai la main sur le serveur (création de comptes, sauvegarde simplifiée, etc.). Quelques projets : http://hachoir.org/ http://fusil.hachoir.org/trac
À ce que j'ai compris, la fragmentation est surtout douloureuse lorsqu'on veut allouer une grosse zone mémoire contigüe, nécessaire pour certaines pilotes (pour les échanges par DMA ?). Comme effet de bord : on peut supprimer de la mémoire à chaud, point intéressant pour la virtualisation (du style OpenVZ ?).
Pour info, la gestion de la mémoire sous Linux a son site web dédié ! http://linux-mm.org/
Le système de fichier EXT2 (et ses amis EXT3 et EXT4) ont déjà des méchanismes pour limiter la fragmentation. Plusieurs personnes m'ont assuré que si si, ça fragmente, mais peu.
« une fois de plus, et c'est à se demander si patrick_g est humain, et si il dort la nuit. »
Je crois que le cycle de développement de la version .24 lui a laissé le temps de préparer tout ça. KernelTrap et LWM sont également d'excellentes sources pour suivre le développement !
Attention, j'applaudis également patrick_g des deux mains, je ne cherche pas à dénigrer son travail. Je voulais juste expliquer qu'on peut arriver à son niveau en dormant la nuit.
Comme exercice, je vous laisse préparer les dépêches pour les sorties de Firefox3 et d'Hurd 1.0.
Wow !!! Je ne pensais pas que la bêtise pouvait aller jusqu'à ce point !
Je ne vois pas en quoi c'est une bétise. Apple protège son logiciel contre la rétro-ingénierie. De nombreuses logiciels font ça, Skype est un véritable bunker. Bien sûr, ça n'a pas empêché le reverse engineering, ça l'a juste ralentit : http://www.secdev.org/conf/skype_BHEU06.handout.pdf
Le code source ne sert à rien sans les données dont il besoin pour faire tourner le jeu. Est-ce ces données ces libres et/ou gratuites ? Faudra payer pour l'installer sur OLPC ?
Je suis employé par INL depuis septembre 2006 et j'suis très fier d'y travailler. Tout le code qu'on écrit est distribué sous licence GPL (GPLv2, GPLv3 maintenant), mis à part quelques très rare exceptions : un petit peu de code proprio pour un logiciel Windows, et quelques logiciels sous licence BSD ou APL.
Mis à part le code écrit qui est sous licence libre, nous contribuons également à des logiciels existants : Linux kernel, Netfilter, Apache, Prelude, etc. http://software.inl.fr/trac/wiki/Contribs
D'autres sociétés se disent « open source » ou « pro-logiciel libre » mais ne diffusent qu'une partie de leurs logiciels sous licence libre. Les pires étant celles qui disent contribuer aux logiciels libres (liste à l'appui) alors qu'en fait c'est un mensonge (tch tch, pas de marque).
Au passage, je m'étais posé un jour comment afficher une image qui est plus grosse que la mémoire vive (genre 10.000x10.000 voir 200.000x200.000). Gimp et autres outils ont tendance à ramer très fort pour finalement planter ou mettre la machine à genoux. Et bien le programme nip2 affiche des images de n'importe quelle taille. Certes ça râme, mais au moins l'image s'affiche !
Fusil n'a pas l'air d'un framework, il ne produit pas de logiciel.
Je considère chaque projet de fuzzing comme un logiciel indépendant, car il existe plein de petits logiciels (écrit à partir de rien, souvent en C) qui testent un type d'attaque pour une cible donnée. Voir par exemple : http://www.digitaldwarf.be/products.html
Maintenant, l'utilisation de « framework » est peut-être un peu abusive.
Les auteurs d'un article Wikipédia n'apparait pas à l'affichage de l'article ni dans la source de l'article. Elle est stockée automatiquement à part dans l'historique de l'article. Cet outil permet de récupérer facilement la liste des auteurs d'un article donné : http://tools.wikimedia.de/~escaladix/cgi-bin/auteurs.tcl?tit(...)
Sauf que là tout de suite, le site est malade. Sûrement la grippe, même linuxfr est touché...
Il ne faut pas considérer les erreurs comme un cas particulier et les mettre de côté. Il faut considérer une erreur comme un code/cas normal. Je vois pas trop comment expliciter mon idée correctement.
De par mon expérience, j'ai noté plusieurs points.
La gestion d'erreur par « return code_erreur; » (où code_erreur est un nombre négatif, nul ou encore NULL) est inefficace. Le soucis étant qu'il est pénible d'écrire « if (resultat < 0) » ou « if (!result) » après chaque appel de fonction. Testez-vous le résultat de fopen() et de malloc() ? Si oui : très bien. Mais le faites vous pour snprintf(), write(), etc. ? Pour éviter de « polluer le code », on préfère supposer que les erreurs n'arrivent jamais. Le plus pénible est de diffuser l'erreur est fonctions parentes : si a() appelle b() qui appelle c(), et qu'une erreur intervient dans c() : il faut transmettre l'erreur à b() puis à a().
Du coup, les exceptions sont une vraie révolution pour la gestion d'erreur : toutes les erreurs sont remontées. Au pire, le code gérant l'erreur peut l'ignorer, mais dans ce cas, c'est volontaire. De plus, les erreurs sont typées et on peut créer une hiérarchie des types d'exception. Ceci permet d'écrire une gestion d'erreur générique.
Enfin, on peut décaler (déplacer) la gestion d'erreur : pour reprendre mon exemple précédent, l'erreur dans c() n'a pas besoin d'être transmis par b() ou a(), c'est automatique. De plus, on peut très bien écrire un gestion d'erreur très générique dans la fonction main() puis des gestions plus ciblés autour d'appels plus spécifiques. On ne va pas s'occuper des erreurs MemoryError après chaque appel de fonction, on va le gérer une seule fois dans main() par exemple.
[^] # Re: Performances ?
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche LLVM 2.2 : Un concurrent pour GCC ?. Évalué à 7.
http://lucille.atso-net.jp/blog/?p=294
L'architecture de LLVM permet des optimisations que gcc n'est âs capable de produire.
Je serai intéressé par des benchmarks frais ;-)
# Article plus technique et plus intéressant par ici
Posté par Victor STINNER (site web personnel) . En réponse au journal Mes impressions des Microsoft TechDays 2008. Évalué à 3.
Microsoft poursuit son travail sur les hyperviseurs. Pour rappel, la Xbox 360 utilise déjà un hyperviseur et des DRM très costaux (NGSCB). La console a d'ailleurs été cassée par un bug trouvé dans l'hyperviseur.
On apprend que Microsoft fait de l'analyse statique de son code mais aussi du fuzzing. Lire le papier « Automated Whitebox Fuzz Testing » à ce sujet :
http://research.microsoft.com/research/pubs/view.aspx?type=T(...)
[^] # Re: Smack
Posté par Victor STINNER (site web personnel) . En réponse au journal Nouvelles du noyau Linux : SMACK, PSS, mais pas de kgdb. Évalué à 4.
# Au sujet de disable-vmsplice-if-exploitable.c
Posté par Victor STINNER (site web personnel) . En réponse au journal Ça faisait longtemps: Local Root Exploit dans linux !. Évalué à 5.
# Autre source
Posté par Victor STINNER (site web personnel) . En réponse au journal morceaux choisis. Évalué à 1.
« A prerequisite for installing SP1 is that the computer has to be up to the current patch level — all of the critical updates Microsoft delivers via the update function » et « Depending on the language, these complete packs will range from 500MB to 800MB in size. »
Ca me semble quand même très très gros, surtout que c'est compressé ! Ubuntu Gutsy (un OS complet, pas juste notepad hein) tient dans 650 Mo :-)
« The SP1 installation itself can take several hours » et « Using the Vista DVD with integrated SP1 the installation takes no longer than installing Vista without SP1, but you cannot create such a Vista DVD yourself, since there is no integrate function unlike previous service packs. »
J'ai installé un Windows XP il n'y a pas longempts (ouais, l' « OS » qui est plus vieux qu'Ubuntu Warthog ou Debian Woody !). Hé bien, ça m'a pris plusieurs heures pour installer tous les correctifs puis le gros SP2. D'ailleurs, le SP2 est une vraie plaie à installer :-( En attendant, Debian sort régulièrement des version correctives de Debian Stable (4.0, 4.0r1, 4.0r2, ...).
[^] # Re: Et le fuzzing alors ?
Posté par Victor STINNER (site web personnel) . En réponse au journal Le gouvernement US paie l'audit de projets libres (la suite). Évalué à 2.
Le libre n'est pas tout blanc ou tout noir. Autant la société s'offre une publicité gratuite (payé par le gouvernements des USA si j'ai bien compris), autant il y a des résultats : des bugs sont corrigés dans des logiciels libres.
# Et le fuzzing alors ?
Posté par Victor STINNER (site web personnel) . En réponse au journal Le gouvernement US paie l'audit de projets libres (la suite). Évalué à 5.
Alors qu'avec le fuzzing, on est directement fixé : c'est une analyse dynamique qui teste le programme en cours d'exécution avec de vraies données.
J'avais pensé un jour créer une communauté libre qui viserait à auditer tous les logiciels libres, mais j'ai la flemme de créer ça :-) L'idée serait d'échanger des informations sur les outils d'audit, faciliter la communication avec les éditeurs des logiciels, et se partager les outils pour tester un maximum de logiciels.
Actuellement, je le fais tout seul dans mon coin et quand j'ai du temps. Je teste Mplayer, Gstreamer, Firefox, poppler, libvorbis, etc. J'ai même écrit un outil de fuzzing pour ça :-)
http://fusil.hachoir.org/trac
Prenez la version stable, la version de développement est en gros chantier pour intégrer un débogueur (ptrace).
PS: Krunch : propose ton texte comme dépêche ! Pourquoi commencer à faire un journal alors que c'est déjà prêt pour une dépêche ??
[^] # Re: Que du bonheur!
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Elisa Media Center 0.3.3 "Mayfly" est sortie. Évalué à 2.
# Remarques
Posté par Victor STINNER (site web personnel) . En réponse au journal News FreeBSD 7. Évalué à 4.
* « Stabilisation, amélioration de SCHED_ULE » => « Stabilisation et amélioration de l'ordonnanceur de processus « SCHED_ULE » »
* « Support de ZFS » => « Support du système de fichier ZFS »
* « Support de la journalisation pour UFS » => « Ajout de la journalisation dans le système de fichier UFS »
[^] # Re: Et les alternatives ?
Posté par Victor STINNER (site web personnel) . En réponse au journal SourceForge m'intrigue et m'ennuie. Évalué à 2.
Perso, j'ai commencé à héberger les projets chez moi. Comme ça j'ai tous les services qu'il me faut et un contrôle total dessus ;-) J'utilise Trac + Subversion... Rien d'extraordinaire, mais j'ai la main sur le serveur (création de comptes, sauvegarde simplifiée, etc.). Quelques projets :
http://hachoir.org/
http://fusil.hachoir.org/trac
[^] # Re: Patch anti-fragmentation
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Sortie du noyau Linux 2.6.24. Évalué à 3.
http://lwn.net/Articles/224829/
À ce que j'ai compris, la fragmentation est surtout douloureuse lorsqu'on veut allouer une grosse zone mémoire contigüe, nécessaire pour certaines pilotes (pour les échanges par DMA ?). Comme effet de bord : on peut supprimer de la mémoire à chaud, point intéressant pour la virtualisation (du style OpenVZ ?).
Pour info, la gestion de la mémoire sous Linux a son site web dédié !
http://linux-mm.org/
Le système de fichier EXT2 (et ses amis EXT3 et EXT4) ont déjà des méchanismes pour limiter la fragmentation. Plusieurs personnes m'ont assuré que si si, ça fragmente, mais peu.
[^] # Re: bravo
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Sortie du noyau Linux 2.6.24. Évalué à 5.
Je crois que le cycle de développement de la version .24 lui a laissé le temps de préparer tout ça. KernelTrap et LWM sont également d'excellentes sources pour suivre le développement !
Attention, j'applaudis également patrick_g des deux mains, je ne cherche pas à dénigrer son travail. Je voulais juste expliquer qu'on peut arriver à son niveau en dormant la nuit.
Comme exercice, je vous laisse préparer les dépêches pour les sorties de Firefox3 et d'Hurd 1.0.
# Appel protège ses logiciels
Posté par Victor STINNER (site web personnel) . En réponse au journal Mac OS X et Dtrace. Évalué à 4.
Je ne vois pas en quoi c'est une bétise. Apple protège son logiciel contre la rétro-ingénierie. De nombreuses logiciels font ça, Skype est un véritable bunker. Bien sûr, ça n'a pas empêché le reverse engineering, ça l'a juste ralentit :
http://www.secdev.org/conf/skype_BHEU06.handout.pdf
La Xbox360 est aussi un bunker, genre tout est chiffré => idem, crackée à cause d'un bug dans l'hyperviseur :
http://www.securityfocus.com/archive/1/461489
Pour contourner la « protection PT_DENY_ATTACH», il suffit de court circuiter l'appel à ptrace :
http://steike.com/code/debugging-itunes-with-gdb/
http://landonf.bikemonkey.org/code/macosx/ptrace_deny_attach(...)
# Et les données ?
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Le code source de SimCity libéré. Évalué à 10.
[^] # Re: INL
Posté par Victor STINNER (site web personnel) . En réponse au journal Les SSLL en France. Évalué à 2.
# INL
Posté par Victor STINNER (site web personnel) . En réponse au journal Les SSLL en France. Évalué à 2.
Mis à part le code écrit qui est sous licence libre, nous contribuons également à des logiciels existants : Linux kernel, Netfilter, Apache, Prelude, etc.
http://software.inl.fr/trac/wiki/Contribs
D'autres sociétés se disent « open source » ou « pro-logiciel libre » mais ne diffusent qu'une partie de leurs logiciels sous licence libre. Les pires étant celles qui disent contribuer aux logiciels libres (liste à l'appui) alors qu'en fait c'est un mensonge (tch tch, pas de marque).
[^] # Re: Ca sert à quoi GDAL ?
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Sortie de GDAL/OGR 1.5.0. Évalué à 2.
[^] # Re: "NetBSD, un projet inutile ?" dixit un des créateurs du projet en 2
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Sortie de NetBSD 4.0. Évalué à 3.
http://www.generation-nt.com/commenter/bsd-licence-probleme-(...)
Le problème étant la mention « Ce produit inclut du code développé par l'Université de Californie, Berkeley et ses contributeurs ».
[^] # Re: Shell scripting
Posté par Victor STINNER (site web personnel) . En réponse au journal Qu'est-ce que bien gérer les erreurs dans ses programmes ?. Évalué à 2.
[^] # Re: Framework ... je te hais
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Fusillez vos applications avec Fusil 0.6. Évalué à 2.
Je considère chaque projet de fuzzing comme un logiciel indépendant, car il existe plein de petits logiciels (écrit à partir de rien, souvent en C) qui testent un type d'attaque pour une cible donnée. Voir par exemple :
http://www.digitaldwarf.be/products.html
Maintenant, l'utilisation de « framework » est peut-être un peu abusive.
# Liste des auteurs d'un article Wikipédia
Posté par Victor STINNER (site web personnel) . En réponse au journal knol un concurrent de wikipedia. Évalué à 2.
http://tools.wikimedia.de/~escaladix/cgi-bin/auteurs.tcl?tit(...)
Sauf que là tout de suite, le site est malade. Sûrement la grippe, même linuxfr est touché...
[^] # Re: Vive les exceptions !
Posté par Victor STINNER (site web personnel) . En réponse au journal Qu'est-ce que bien gérer les erreurs dans ses programmes ?. Évalué à 6.
Il ne faut pas considérer les erreurs comme un cas particulier et les mettre de côté. Il faut considérer une erreur comme un code/cas normal. Je vois pas trop comment expliciter mon idée correctement.
# Vive les exceptions !
Posté par Victor STINNER (site web personnel) . En réponse au journal Qu'est-ce que bien gérer les erreurs dans ses programmes ?. Évalué à 9.
La gestion d'erreur par « return code_erreur; » (où code_erreur est un nombre négatif, nul ou encore NULL) est inefficace. Le soucis étant qu'il est pénible d'écrire « if (resultat < 0) » ou « if (!result) » après chaque appel de fonction. Testez-vous le résultat de fopen() et de malloc() ? Si oui : très bien. Mais le faites vous pour snprintf(), write(), etc. ? Pour éviter de « polluer le code », on préfère supposer que les erreurs n'arrivent jamais. Le plus pénible est de diffuser l'erreur est fonctions parentes : si a() appelle b() qui appelle c(), et qu'une erreur intervient dans c() : il faut transmettre l'erreur à b() puis à a().
Du coup, les exceptions sont une vraie révolution pour la gestion d'erreur : toutes les erreurs sont remontées. Au pire, le code gérant l'erreur peut l'ignorer, mais dans ce cas, c'est volontaire. De plus, les erreurs sont typées et on peut créer une hiérarchie des types d'exception. Ceci permet d'écrire une gestion d'erreur générique.
Enfin, on peut décaler (déplacer) la gestion d'erreur : pour reprendre mon exemple précédent, l'erreur dans c() n'a pas besoin d'être transmis par b() ou a(), c'est automatique. De plus, on peut très bien écrire un gestion d'erreur très générique dans la fonction main() puis des gestions plus ciblés autour d'appels plus spécifiques. On ne va pas s'occuper des erreurs MemoryError après chaque appel de fonction, on va le gérer une seule fois dans main() par exemple.
# Plus d'infos
Posté par Victor STINNER (site web personnel) . En réponse au journal IPv6 chez free.fr. Évalué à 4.
http://www.haypocalc.com/blog/index.php/2007/12/13/106-ipv6-(...)
http://www.haypocalc.com/blog/index.php/2007/12/13/105-decou(...)
Depuis, j'ai migré mon DNS sur Xname pour que http://hachoir.org soit accessible en IPv6 :-)
# Pas encore
Posté par Victor STINNER (site web personnel) . En réponse au journal Free déploie l'IPV6. Évalué à 4.