Affected keys include SSH keys, OpenVPN keys, DNSSEC keys, and key material for use in X.509 certificates and session keys used in SSL/TLS connections. Keys generated with GnuPG or GNUTLS are not affected, though.
affecte Debian Etch, testing depuis un bon bout de temps (date de 2006年09月17日 dans sid comme déjà dit) ; Ubuntu 7.04 (Feisty), 7.10 (Gutsy), 8.04 LTS (Hardy).
j'ai essayé de regarder rapidement la raison du bug ; appremment à l'origine, un bug a été ouvert pour faire taire valgrind sur l'utilisation de mémoire non initialisée :
je ne comprends pas spécialement ce code, mais je soupçonne que ça a évité d'appeler MD_Update dans un cas où "buf" était non initialisé, mais *aussi* dans un cas où "buf" était initialisé avec du bon random, qui garantissait justement la sécurité des clés créées..
ce qui m'étonne c'est que le mainteneur Debian qui a commité ce patch est probablement quelqu'un avec de grandes connaissances en sécurité ; hors dans ce domaine, il faut faire très attention à la source de random pour garantir la sécurité.. quand on fait un changement dans ce domaine il faut faire très attention ; maintenant c'est beaucoup plus facile de le voir après coup.. ce devait être tout de même très subtil.
[^] # Re: En parlant de bugs..
Posté par gc . En réponse au journal OpenBSD : un bug vieux de 25ans. Évalué à 5.
Affected keys include SSH keys, OpenVPN keys, DNSSEC keys, and key material for use in X.509 certificates and session keys used in SSL/TLS connections. Keys generated with GnuPG or GNUTLS are not affected, though.
affecte Debian Etch, testing depuis un bon bout de temps (date de 2006年09月17日 dans sid comme déjà dit) ; Ubuntu 7.04 (Feisty), 7.10 (Gutsy), 8.04 LTS (Hardy).
j'ai essayé de regarder rapidement la raison du bug ; appremment à l'origine, un bug a été ouvert pour faire taire valgrind sur l'utilisation de mémoire non initialisée :
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=363516
ça a fini dans sid en septembre par :
-- openssl-0.9.8c.orig/crypto/rand/md_rand.c
+++ openssl-0.9.8c/crypto/rand/md_rand.c
@@ -271,7 +271,10 @@
else
MD_Update(&m,&(state[st_idx]),j);
+/*
+ * Don't add uninitialised data.
MD_Update(&m,buf,j);
+*/
MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
MD_Final(&m,local_md);
md_c[1]++;
@@ -465,8 +468,10 @@
MD_Update(&m,local_md,MD_DIGEST_LENGTH);
MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
#ifndef PURIFY
+#if 0 /* Don't add uninitialised data. */
MD_Update(&m,buf,j); /* purify complains */
#endif
+#endif
k=(st_idx+MD_DIGEST_LENGTH/2)-st_num;
if (k > 0)
{
je ne comprends pas spécialement ce code, mais je soupçonne que ça a évité d'appeler MD_Update dans un cas où "buf" était non initialisé, mais *aussi* dans un cas où "buf" était initialisé avec du bon random, qui garantissait justement la sécurité des clés créées..
ce qui m'étonne c'est que le mainteneur Debian qui a commité ce patch est probablement quelqu'un avec de grandes connaissances en sécurité ; hors dans ce domaine, il faut faire très attention à la source de random pour garantir la sécurité.. quand on fait un changement dans ce domaine il faut faire très attention ; maintenant c'est beaucoup plus facile de le voir après coup.. ce devait être tout de même très subtil.