De com una línia de codi embolica la troca de valent

Què ha passat amb Debian i OpenSSL? OpenSSL serveix, entre d’altres coses, per generar contrasenyes. Per això, és necessari que el programa sigui capaç de generar nombres aleatoris que difícilment es puguin preveure. Es tracta que sigui complicat que, aplicant algorismes i mètodes matemàtics, algú pugui descobrir la forma de trobar una contrasenya.

El que ha passat és que una de les eines que ajuda als programadors a programar (els depuradors o debuggers, permeten trobar errors) es queixava per aquesta línia de codi: MD_Update(&m,buf,j);. Per això, els encarregats del codi font d’OpenSSL la van eliminar. I, en eliminar aquesta línia, el que s’ha produït és que totes les claus generades des de setembre de 2006 poden ser descobertes per gent malintencionada, aprofitant l’existència d’aquest forat de seguretat per crear eines que els permetin fer-ho. De fet aquesta eina ja ha estat creada i s’ha demostrat molt eficaç.

Qui ho va eliminar va ser la persona que s’encarrega de fer el paquet per a Debian, no els programadors originals d’OpenSSL, i és per això que l’error només afecta a sistemes operatius Debian i derivats, entre ells Ubuntu. De tota manera, cal dir que el responsable de la catàstrofe va actuar amb les espatlles cobertes. I és que, abans d’eliminar la línia en qüestió, va preguntar als programadors d’OpenSSL què passaria si ho feia:

Kurt Roeckx (encarregat del paquet de Debian):

No tinc ni idea de com afectarà això realment a la generació aleatòria de nombres.

Ulf Möller (programador d’OpenSSL):

No afectarà massa. Si això ajuda a la depuració, estic a favor d’eliminar-la.

Aquesta conversa va tenir lloc el maig de 2006. El setembre de 2006, es publica a Debian el paquet OpenSSL amb la línia de marres ja eliminada. I no és fins la semana passada que Luciano Bello descobreix l’error, avisa a Debian i es publica l’alerta de seguretat i la notícia comença a passar de bloc en bloc. En parlen en Xavier Caballé o Kriptópolis, per exemple.

Queda demostrat: una sola línia de codi pot embolicar la troca de valent.