En un post anterior hablamos sobre el origen del concepto de bug informático, y de cómo la utilización para referirse a este tipo de fallos de un término que traducido significa «bicho» tuvo su origen en una fecha tan remota como 1945, debido al estropicio que provocó una polilla atrapada en la Harvard Mark II, como documentaron celosamente los dos técnicos que resolvieron el problema, quienes no dudaron en dejar pegada en el propio libro de registro de errores a la sorprendente protagonista del incidente.
Ya vimos entonces también que el concepto de bug tiene actualmente un sentido muy amplio, al abarcar cualquier problema de un equipo, sistema o programa de software que provoca que se produzcan resultados distintos a los esperados.
Así, un bug es un fallo que puede afectar desde a una app hasta un videojuego, y no hace falta que sea tan drástico como para implicar que algo se quede colgado o se cierre inesperadamente, ya que basta con que sea perceptibles fenómenos indeseados.
De hecho, la aparición de bugs resulta consustancial a la evolución de los softwares, surgiendo por ejemplo de manera recurrente cuando se lanzan nuevas versiones de sistemas operativos.
El peligro de los bugs que generan brechas de seguridad
Con todo, cabría diferenciar entre bugs menores que pueden traducirse simplemente en que un cursor se comporte de manera extraña, o en el peor de los casos que un equipo se quede colgado; a fallas de importancia crítica por lo que suponen de brecha de seguridad en softwares y sistemas, una rendija que es susceptible de ser explotada por los ciberdelincuentes para colarse, obtener datos sensibles o provocar fallos.
Un ejemplo de lo último que acabamos de referir se está experimentando sin ir más lejos en los conflictos bélicos que se están dando actualmente, en los que por ejemplo ya se ha visto el caso de drones hackeados que amenazan a sus propias tropas sin que sus operadores puedan hacer nada al respecto.
Bugs con nombre propio: BEAST, CRIME o Heartbleed
Durante muchos años las vulnerabilidades fueron conocidas, simplemente, por códigos como CVE-2003-1598 o CVE-2005-1580. Sin embargo, el protocolo de seguridad SSL/TLS daría lugar a la aparición de bugs con nombre propio, como si los investigadores no se conformasen con que fueran un simple número y quisieran reivindicar el potencial de las mismas.
Así, desde 2011 en adelante aparecerían vulnerabilidades en el protocolo de cifrado SSL/TLS, el utilizado para proteger las comunicaciones en Internet, que empezaban a ser denominadas con nombres llamativos como BEAST, CRIME, BREACH o TIME. Aunque sin duda, la más conocida de esta primera hornada de vulnerabilidades con nombre propio fue Hearbleed.
El bug Heartbleed, detectado en 2014, afectaba a la librería OpenSSL, y permitía leer memoria del servidor, llegando a poder hacerse con las claves de cifrado de las webs que fueran vulnerables, así como otra información especialmente sensible. Cuando se detectó llevaba pudiendo ser explotado desde 2011, algo muy preocupante teniendo en cuenta que OpenSSL era, y es actualmente, utilizado masivamente en los servidores de Internet.
Más preocupante aún, no es que pudiera ser explotado, si no que de hecho fue explotado de forma activa por grupos de ciberdelincuentes, estando por ejemplo esta vulnerabilidad involucrada en ataques a organismos gubernamentales de Canadá, o a la compañía JP Morgan, una de las instituciones bancarias y financieras más grandes del mundo.
Más bugs con nombre propio: MS17-10, EternaBlue & WannaCry
Sin embargo, si una vulnerabilidad cambió para siempre el mundo de la ciberseguridad fue la conocida como MS17-10, en referencia al correspondiente boletín de Microsoft que la parcheaba, un bug que recibió el nombre de EternalBlue y que pasaría a la posteridad por haber sido el que utilizó el ramsonware WannaCry para extenderse y afectar varios cientos de miles de equipos en multitud de países, alcanzando redes de empresas tan significativas como Nissan, Renault, Hitachi o Telefónica, y de organismos gubernamentales tan críticos para un país como el del Servicio Nacional de Salud de Reino Unido.
Pero no vayamos tan deprisa porque la historia detrás de este bug es, sin duda, muy interesante. Todo parece comenzar con la Agencia de Seguridad Nacional de EEUU, la NSA. Esta agencia estaba apoyada por un grupo externo de expertos en ciberseguridad denominado Equation Group, que descubrió vulnerabilidades de día 0, sin parche o mitigación temporal disponible, y desarrolló exploits y suites de herramientas para la explotación, post-explotación y control remoto, en principio, para ayudar a que el espionaje de EEUU consiguiera sus objetivos.
En esta historia de cazadores cazados, donde no hay “buenos”, las herramientas de Equation Group (que ya presentaban muchas dudas éticas por tratarse de ciberarmasal servicio del espionaje e intereses de EEUU y aparentemente utilizadas contra objetivos de la inteligencia norteamericana) fueron sustraídas por otro grupo denominado The Shadow Brokers, los cuales, con un interés mucho más pecuniario empezaron a subastarlas y venderlas en la red.
Una de las herramientas que se hizo pública fue un exploit denominado EternalBlue,el cual aprovechaba la vulnerabilidad CVE-2017-0144, existente en el protocolo Server Message Block (SMB) v1 de Microsoft, y que permitía a un atacante la ejecución remota de comandos, con privilegios administrativos, en el sistema afectado sin necesidad de autenticación previa.
Esta vulnerabilidad, que poco a poco se fue dando a conocer, sería la que el día 14 de marzo de 2017 Microsoft parchease en su boletín MS17-10, para todos aquellos sistemas que no habían llegado al fin de su ciclo de vida, no sin antes criticar públicamente a la NSA, con la que históricamente había colaborado.
Dos meses más tarde, el día 12 de mayo, cuando el parche MS17-10 no había sido aplicado aún por muchas grandes empresas, aún confiadas en que sus mecanismos de seguridad perimetral protegieran sus sistemas internos, y sin contar con ventanas de mantenimiento lo suficientemente ágiles, surgió WannaCry para cambiar radicalmente el panorama mundial de la ciberseguridad: más de 150 países afectados, más de 300.000 equipos comprometidos y un impacto económico cifrado entre dos mil y tres mil millones de euros.
El bug de Instagram descubierto por un niño de 10 años
Afortunadamente las vulnerabilidades no resultan siempre tan amenazantes, aunque sigan siendo llamativas. Como lo fue, por ejemplo, la vulnerabilidad de Instagram descubierta por un niño finlandés de apenas 10 años, que fue capaz de acreditar que podía eliminar comentarios de cualquier usuario alterando el código de la interfaz de programación de aplicaciones.
Este pequeño virtuoso de la informática informó del agujero a la compañía, e incluso les hizo una demostración práctica de cómo el bug era explotable por cualquiera para hacer creer a la plataforma que era el propio usuario el que borraba comentarios.
Igualmente, la complejidad de los videojuegos los hace un terreno fértil para que se den todo tipo de bugs, aunque en ocasiones mucho de ellos, los que no comprometen la información sensible de los jugadores pueden tener una vertiente más cómica que trágica.
A menos, eso sí, que el fallo provoque cosas tan espeluznantes como la desaparición de las caras de los personajes, y que solo les queden la boca y los ojos, una espectral transformación que estuvo produciéndose en un videojuego como Assassin’s Creed Unity hasta que se introdujo el parche correspondiente para solucionar el problema.
Medidas para luchar contra los bugs y las vulnerabilidades
Pero más allá de lo anecdótico, los bugs suponen una importante amenaza que hay que tener siempre presente, para garantizar en los usuarios dos aspectos clave en el ámbito de la informática como son la eficiencia y la seguridad.
Por ello, grandes compañías, empresas especializadas en ciberseguridad y centros de investigación como el MIT trabajan permanentemente para desarrollar programas y algoritmos apoyados por funciones de aprendizaje profundo (Deep Learning) que ayuden a detectar bugs.
Asimismo, en los protocolos de desarrollo de softwares se han ido introduciendo cada vez más controles dentro de los procesos de testing asociados al área de QA, teniendo cada vez más peso el testing automatizado, para comprobar el funcionamiento de los códigos ante todo tipo de escenarios durante un periodo de tiempo antes del lanzamiento.
Además, desde las primeras fases de escritura de código se van ejecutando también procesos de depuración o debugging, así como diversas estrategias y pruebas de integración para encontrar y eliminar los bugs.
Así mismo, más allá de la capacidad propia de cada organización y de sus propios departamentos de ingeniería, los programas de bug bounty, es decir, el establecimiento de programas de recompensas económicas para personas que colaboren de forma externa en el descubrimiento de vulnerabilidades, se está revelando también como una medida acertada para la mejora de la calidad del software.
Para concluir y, a modo de moraleja, hemos visto en los múltiples casos referidos nunca se sabe cuándo puede irrumpir el ‘ bicho ‘, por lo que al menos a efectos de ciberseguridad a nivel de ‘usuario’ la mejor recomendación que podemos dar es tener permanentemente actualizados todos los programas, apps y sistemas operativos con las nuevas versiones que se van desarrollando.
Por contra, cuando hablamos de empresas de cualquier naturaleza o administraciones, somos conscientes de que la ecuación se complica y la mejor recomendación sobre la remediación de vulnerabilidades que podemos dar es que esta se contemple dentro de una estrategia de ciberseguridad, planteando siempre una defensa por capas que responda de forma prioritaria a riesgos reales, con medidas de seguridad muy concretas, que pongan el foco prioritariamente en el usuario del sistema de información, que sean asumibles económicamente y que se puedan implementar en plazos razonables de tiempo.