jueves, 5 de marzo de 2009

¿Existen programas sin fallos de seguridad?

Ante esa pregunta, a muchos se nos viene a la cabeza automáticamente el servidor de correo qmail y el servidor DNS djbdns, ambos de código abierto. En realidad, si existiese algo parecido, probablemente serían estos dos programas. Su autor D. J. Bernstein ofreció hace más de diez años 500 dólares a quien encontrara un fallo de seguridad en qmail y 1.000 a quien lo encontrara en djbdns. El día 3 de marzo Bernstein reconocía una pequeña vulnerabilidad en su servidor DNS y ha premiado con 1000 dólares a Matthew Dempsky.

D. J. Bernstein programó a mediados de los noventa, qmail y djbdns con la seguridad siempre en mente. Precisamente, estaba harto de vulnerabilidades en sus homónimos Sendmail y BIND, dos pesos pesados de Internet que sufrían de enormes agujeros de seguridad cada muy poco tiempo por aquel entonces. Como alternativa, creó estos servidores siguiendo unas premisas muy sencillas en las que se premiaba por encima de todo la seguridad y simplicidad. Estaba tan seguro de su trabajo que ofreció una recompensa económica a quien encontrara fallos en su software. Hoy en día es habitual que premien económicamente a los que encuentran fallos de seguridad, pero por entonces, era una especie de osadía. Para Bernstein se convirtió en su garantía de seguridad. Nunca se pensó que pasarían tantos años hasta que alguien pudiese hacerse con el premio.

Matthew Dempsky se ha llevado 1.000 dólares por encontrar un pequeño fallo de seguridad en djbdns. Bajo circunstancias bastante atípicas, un atacante podría controlar entradas de caché almacenadas para un domino. Dempsky demuestra así que, por pequeño que sea, es posible encontrar problemas de seguridad en cualquier programa. Más que los 1.000 dólares que se ha embolsado (hoy en día pagan mucho más por descubrir cualquier otro fallo, probablemente más sencillo de encontrar en otros programas) se lleva la satisfacción de haber sido el primero en romper la garantía de seguridad de Bernstein.

Parece que si realmente se pone empeño y se sabe lo que se está haciendo, es posible crear un software con muy pocos problemas de seguridad. Cuando en agosto de 2008 Kaminsky descubre un fallo de seguridad en la implementación del protocolo DNS que afectó a la inmensa mayoría de fabricantes y programadores de servidores DNS, djbdns no necesitó actualización. Bernstein había añadido deliberadamente una mayor entropía a sus cálculos, e implementó su servidor de forma que no se vio afectado por este problema casi "universal" mucho antes de que pillara por sorpresa al resto.

Por desgracia, no abunda el ejemplo. Aunque hay que decir que Bernstein no suele añadir funcionalidades a sus servidores ni ofrece versiones nuevas habitualmente. Su código es el que es prácticamente desde que fue escrito. No es viable trasladar este modelo ni sus circunstancias a otros programas más complejos o comerciales, donde muchas otras presiones están por encima de la de crear código a prueba de balas. Bernstein ha publicado un pequeño parche para solucionar el problema encontrado por Dempsky y ofrece de nuevo la garantía de seguridad: pagará con 1.000 dólares a quien encuentre otro fallo en su servidor DNS.

Qmail sigue imbatido hasta la fecha. El servidor djbdns no deja de ser uno de los programas más fiables y seguros por este fallo. En realidad, el hecho de que se haya encontrado una vulnerabilidad en él, demuestra sobre todo que existe gente como Bernstein verdaderamente buena programando, que existen investigadores como Dempsky capaces de encontrar fallos en cualquier código, que no hay software sin vulnerabilidades... pero sobre todo, que Bernstein es un hombre de palabra.


Sergio de los Santos
ssantos@hispasec.com


Más información:

djbdns<=1.05 lets AXFRed subdomains overwrite domains
http://article.gmane.org/gmane.network.djbdns/13864

No hay comentarios:

Publicar un comentario en la entrada