[gull] Bug dans OpenSSL Debian -- comportement bizarre

Frédéric Schütz schutz at mathgen.ch
Wed May 28 16:36:25 CEST 2008


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





More information about the gull mailing list