Bonjour, j'ai passé un peu de temps ces derniers jours à essayer de comprendre les détails de la vulnérabilité OpenSSL dans Debian (si par hasard vous n'en avez pas entendu parler, voir http://lwn.net/Articles/282230/ ou http://lwn.net/Articles/282038/), et ai une question sur un comportement relié à Unix.
Pour mémoire, la version de OpenSSL qui était livrée dans Debian générait une clé qui dépendait uniquement du process ID. En écrivant une fonction getpid() de remplacement dans une bibliothèque, et en la faisant charger par openssl en utilisant la variable d'environnement LD_PRELOAD, on peut forcer openssl à utiliser un numéro de PID arbitraire (voir par exemple http://metasploit.com/users/hdm/tools/debian-openssl/). Effectivement, ça marche très bien: je peux spécifier le PID dans une variable d'environnement, puis exécuter 100000 fois la commande openssl genrsa 512 et j'obtiens 100'000 fois la même clé "A". Par contre, si je mets la commande en background ("openssl genrsa 512 &"), j'obtiens environ 92000 la clé "A", et 8000 fois une autre clé "B"... Bien sûr, il faudrait sûrement regarder en détail le code source d'openssl pour avoir les détails (ce que je n'aurais pas le temps de faire); mais plus généralement, est-ce que quelqu'un aurait une idée de ce qui, sous Unix, pourrait être différent pour un programme selon qu'il ait été lancé en background ou non ? Je suis curieux surtout parce que c'est quelque chose d'à la fois déterministe (pour un process ID, c'est toujours les mêmes clés A et B qui sont générées), mais aussi aléatoire (pas de structure apparente dans la génération des clés A et B: il peut y avoir 50 clés A, suivies de 6 clés B, ou des alternances, etc), et je ne vois pas vraiment ce que ça peut être. Si quelqu'un veut s'amuser, je peux lui donner les scripts pour générer toutes ces clés (rien de bien compliqué). Frédéric _______________________________________________ gull mailing list gull@forum.linux-gull.ch http://forum.linux-gull.ch/mailman/listinfo/gull