10 abril 2014

Algunas conclusiones mirando más allá de Heartbleed

Heartbleed logoSobre Heartbleed, sin duda uno de los fallos de seguridad más importantes descubiertos en la historia de internet, ya han corrido ríos de bits, y en cualquier caso, deberíais buscar información en páginas de referencia en seguridad, no en la mía. La seguridad no es tema para especulaciones o para opiniones ligeras o no expertas. Sin embargo, el análisis de la cuestión sí puede dar para algunas conclusiones interesantes, sobre todo sobre la naturaleza de la red y de las actividades que desarrollamos en ella.

Hablamos de una vulnerabilidad descubierta en la capa de cifrado y autenticidad de OpenSSL, un desarrollo de código abierto instalado en dos de cada tres servidores, de los cuales un porcentaje relativamente importante utilizan la versión afectada. En la gestión de conexiones cifradas o seguras existe un procedimiento, el heartbeat, que el servidor utiliza para verificar que la conexión debe mantenerse abierta tras haber llevado a cabo el intercambio de claves o handshake. Simplemente, una manera de evitar el cierre de esa conexión y la necesidad de volver a llevar a cabo el proceso de negociación de claves.

El problema surge cuando un error, aparentemente espontáneo, en el código que especifica cómo se desarrolla ese heartbeat, permite que un atacante conocedor del mismo pueda acceder a 64kB de la memoria del servidor, lo que permite que a base de sucesivas llamadas, alguien pueda acceder a muchísima información de la memoria de un servidor en pedacitos de 64kB. En esa memoria puede haber absolutamente de todo: cuentas de usuarios con sus contraseñas, claves privadas de los certificados digitales de los servidores… cualquier cosa, dado que todo pasa en algún momento por la memoria del servidor. Grave no, gravísimo, si pensamos que se trata de un fallo que lleva ahí mucho tiempo (la vulnerabilidad existe desde el 31 de diciembre de 2011, y el uso del código afectado se extendió a partir de la release de la versión 1.0.1 de OpenSSL, el 14 de marzo de 2012), y que afecta a servicios que utilizamos todos. Además de su posible uso por delincuentes, que aunque posible, no parece especialmente extendido, es muy posible que estemos hablando de vulnerabilidades que hayan sido utilizadas de manera sistemática por agencias de seguridad con el fin de acceder a información cifrada, en línea con algunas de las cuestiones reveladas por Edward Snowden con respecto a la capacidad de la NSA para penetrar servidores cifrados.

Aparte de recomendar que antes de llevar a cabo cualquier transacción te asegures, con alguno de los muchos tests que han sido ya desarrollados, de que el servidor en el que pretendes llevarla a cabo ha sido objeto de la correspondiente actualización que evite ese peligro, y de que estés atento a las recomendaciones de cambio de contraseña de los servicios que uses habitualmente (posiblemente no sea una mala idea empezar a utilizar alguna de esas aplicaciones de gestión automatizada de contraseñas), mi reflexión, sin embargo, va un poco más allá, y es sobre la naturaleza de esta red que utilizamos.

Sin duda, la red tiene vulnerabilidades, peligros y problemas de diversos tipos. Todo lo que hacemos en nuestra vida, desde caminar por la calle hasta bebernos una copa, está sujeto a vulnerabilidades, peligros y problemas de diversos tipos. En el caso de la red, además, estamos hablando de cuestiones de indudable complejidad, que se apoyan en tecnologías desarrolladas por infinidad de personas, en muy distintos tipos de regímenes diferentes. Hay tecnologías que fueron, en su momento, desarrolladas por empresas. Otras muchas, sin duda mayoritarias, lo fueron por programadores, a veces solos, a veces en grupos, a veces simplemente voluntarios, que contribuyeron con funciones que, a partir de ese momento, fueron siendo adoptadas en función de su utilidad. Una gran parte de las piezas sobre las que se asienta el uso cotidiano que hoy hacemos de la red provienen de ese tipo de orígenes.

Generalmente, asumimos que los fallos en el código son tanto más aparentes y fáciles de corregir cuanto más abierto es este, cuantos más ojos están en disposición de examinarlo. En este caso, hablamos de un fallo que nadie miró, o que quienes lo descubrieron, prefirieron mantenerlo en secreto, a modo de “llave maestra” que les permitía acceder a sitios de manera irregular. El equivalente en el mundo offline podría ser cuando, por ejemplo, se revela de repente que un componente utilizado en la cadena alimentaria ha podido estar generando problemas de salud para quienes lo ingerían: posiblemente alguien lo intuía, tal vez algunos lo han ocultado para así ganar más dinero, y algo que utilizábamos con toda naturalidad nos ha podido estar perjudicando. Pero con toda su gravedad… es algo que ocurre con relativa frecuencia.

La red no es tan distinta del resto de las herramientas que utilizamos los humanos. Simplemente, basa su enorme éxito en el hecho de ser abierta, de que cualquiera puede desarrollar código para plantear utilidades y funciones sobre esa plataforma, y que eso la dota de un dinamismo y una adaptabilidad brutal, que ha permitido que llegue a ser lo que hoy es. Posiblemente, deberíamos replantearnos hasta qué punto retribuimos y cómo a todas esas personas que desarrollan esas funciones que posteriormente terminamos utilizando todos, y que simplemente decidieron no darle un desarrollo comercial. Ese procedimiento, el desarrollo constante de piezas por actores de todo tipo, es susceptible de tener fallos. Esos fallos pueden ser más o menos graves, en ocasiones llegan a parecer de alguna manera enmiendas a la totalidad, pero no inhabilitan lo principal: que esa característica de la red, el estar construida a retales por infinidad de personas con todo tipo de motivaciones y objetivos, es precisamente donde radica su principal fortaleza.

Heartbleed no es la primera vulnerabilidad seria que se descubre, ni será la última. En la red siempre tendremos la impresión de que muchas de las cosas que utilizamos y damos por sentadas están sujetas con palillos pinchados en un corcho y con alambres hechos con clips retorcidos. Tras la revelación de la vulnerabilidad, toca examinar nuestros procedimientos, revisar hasta qué punto podemos haber sido afectados, y aprovechar para replantearnos algunas de nuestras prácticas comunes buscando reforzar su seguridad. Pero no dejemos que el tremendismo nos oculte la gran verdad: la red tiene peligros y problemas exactamente igual que lo tienen todos los sistemas y herramientas desarrollados por el ser humano. Lo que tenemos que seguir haciendo es trabajar con ellos, descubrirlos, aislar y responsabilizar a quienes los conocían y explotaban pero no los revelaron, y pensar que sobre esa característica de la red, su caos y su desorganización, se edifica una gran parte de su grandeza.




(Enlace a la entrada original - Licencia)

0 comentarios:

Publicar un comentario

ATENCIÓN: Google ha metido en Blogger un sistema antispam automático que clasifica como spam casi lo que le da la gana y que no se puede desactivar.

Si después de hacer tu comentario este no aparece, no se trata del espíritu de Dans que anda censurando también aquí, es que se ha quedado en la cola de aceptación. Sacaré tu mensaje de ahí tan pronto como pueda, si bien el supersistema este tampoco me avisa de estas cosas, por lo que tengo que estar entrando cada cierto tiempo a ver si hay alguno esperando. Un inventazo, vaya.