• [^] # Re: Remplacer l'assembleur par Ada ou Rust ?

    Posté par . En réponse à la dépêche Nouvelle vulnérabilité dans l’implémentation OpenSSL. Évalué à 4.

    J'ai cité rust, comme j'aurais pu/du citer Ada, ou d'autres.
    (...)
    Sinon, non aucune foutre idée de comment ré implémenter cela en rust, je fuis le C comme bill gates.

    C'est bien à ça que je réponds: tu dis que le problème vient de l'utilisation du C, mais tu ne connais pas le sujet et n'a pas envie de le connaître, sauf que justement on est en plein cœur d'une des rares utilisation actuelles ou le C et l'assembleur restent incontournables. Malgré leurs défauts (et là on s'en tape un en pleine face, c'est clair).

    La crypto doit être à la fois optimisée en perfs, facile à auditer (plus le langage est de haut niveau plus il y a de comportements déclaratifs ou implicites) et disponible sur toutes les plateformes (Rust c'est 4 plateformes pour le moment, Ada je ne dis pas). C'est contraignant comme du réseau ou du noyau.

    Sachant qu'en l'occurrence le bug n'était pas un problème de lecture dans un pointeur mal alloué qui se règlerait trivialement avec un array de plus haut niveau qui ferait lui-même le bound-check comme en Rust, en C++, en Pascal ou en Visual Basic. C'était l'oubli d'un sanity check sur la valeur lue dans le message réseau qui arrive, auquel le code a malheureusement1 fait confiance aveuglément.

    C'est bien expliqué dans le lien plus haut, en même temps c'est tellement simple que ça se voit bien dans le correctif aussi (d'autant plus qu'il a été largement commenté ligne à ligne, probablement un effet médiatique ;-)):
    https://github.com/openssl/openssl/commit/731f431497f463f3a2a97236fe0187b11c44aead

    1: exprès, disent les plus méfiants