• [^] # Re: En parlant de bugs..

    Posté par . En réponse au journal OpenBSD : un bug vieux de 25ans. Évalué à 5.

    ce bug est énorme dans ses implications !

    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.