Las líneas de código (es decir, los programas de computadores o el
software)
perfilan el mundo actual, de esto no hay duda. Desde un microondas, relojes, teléfonos, pasando por diferentes vehículos que usamos a diario como aviones, coches, etcétera, hasta complejas instalaciones como por ejemplo las centrales nucleares, hospitales (y su instrumentación) o fábricas, dependen de un programa de un ordenador. Y toda esta, digamos, dependencia y expansión, empezó justo después de la invención del primer microprocesador, el
Intel 4004 en
1971, y desde entonces el
software ha ido ocupando un sitio destacado y fundamental dentro de la tecnología y a su vez, de la sociedad.
 |
Figura 1: Los años locos de la seguridad informática:
De la camiseta prohibida al virus de una sola línea de código |
Esto no quiere decir que antes no hubiera programas (de hecho, en este artículo aparecen algunos anteriores a esa fecha) ya que el primer, digamos “
código”, se creó en
1715 … ahí lo dejamos ;) . En nuestro libro “
Microhistorias: anécdotas y curiosidades de la historia de la Informática (y los hackers)” aparecen más historias como estas, tanto de ciberseguridad como de la informática y
hackers en general.
En este artículo hemos seleccionado algunos fragmentos de código que, de alguna u otra manera, han tenido impacto en el mundo de la seguridad informática y casi podríamos decir que en la sociedad. Desde instrucciones erróneas en vehículos espaciales que había que hacer un “
bypass” (como
el caso del Apolo 14) pasando por el curioso caso de la camiseta prohibida y el código de cifrado RSA, harán acto de presencia en este texto. Vamos a verlos un poco más en profundidad.
Sobrecarga (overflow) y engaño (deception) en el software del Apolo 11 y 14
En ambos viajes espaciales, un programa de ordenador estuvo a punto de echar al traste toda la misión. No fueron un problema técnico del vehículo, sino una mala interpretación de una señal en un caso y un error de programación o de interpretación de señales en el otro.
En el caso de la misión
Apolo 11, a pocos minutos de aterrizar en la
Luna,
Buzz Aldrin dejó activo un radar del
vehículo LEM que desbordó de información (
overflow) el ordenador, activando las alarmas
1201 y
1202 que casi terminan con la misión. Menos mal que
Margaret Hamilton y su equipo tenían previsto este contratiempo (esas alarmas indicaban justamente este problema de sobrecarga) y lo tenían bajo control.
Por otro lado, en el
viaje del Apolo 14, también hubo un problema, esta vez relacionado con una señal de abortar que no debía de estar activa. En este caso fue
Don Eyles, uno de los miembros del equipo de
Margaret quien lo solucionó realizando un “
bypass” o engañando al sistema. Tienes toda la historia al
detalle en este enlace que publicamos.
En la imagen de la
Figura 3 se puede apreciar la porción de código que activaba la alarma
1202 del
Apolo 11 (el
código fuente al completo está en GitHub). Una explicación a fondo de esta alarma y su funcionamiento
la puedes encontrar en este enlace.
El gusano de Morris, el primer ataque a la red Internet
El 2 de noviembre de
1988, un joven estadounidense de
23 años, llamados
Robert Tappan Morris, creó el
primer malware de tipo gusano (programado en
Lenguaje C) que provocó, según él, por accidente, el mayor ataque a la red
Internet de la época. El
10% de los ordenadores conectados, unos
6.000 la mayoría servidores, provocando el mayor
ataque tipo DoS de la historia (hasta ese momento).
El programa explotaba un agujero de seguridad en el modo debug del clásico programa de
Unix llamado
sendmail (el cual se ejecuta en el sistema operativo a la espera de recibir conexiones para recibir emails) y “
bug” en el
daemon del comando/protocolo
finger,
fingerd (encargado de gestionar dichas peticiones). Antes de infectar otro ordenador, el gusano comprobaba si estaba presente. En caso afirmativo, el gusano lo volvía a infectar una de cada siete veces (esto lo hacía por si acaso había otro gusano
Morris modificado en ejecución y así sustituirlo).
Esto provocó que muchos usuarios se infectaran demasiadas veces por el malware, llegando a colapsar la máquina, dejando de funcionar. Hoy día
Robert Morris es profesor de Informática en el
MIT. En este enlace puedes ver
el código fuente completo y en este otro un
análisis en profundidad del mismo.
El virus de una sola línea (bomba fork)
La siguiente línea de código, en
Bash, era capaz de bloquear o colgar un ordenador en versiones antiguas de
Unix y muy posiblemente en algunos actuales con
GNU/Linux, así que ten cuidado en ejecutarlo:
:(){ :|:& };:
bomb(){
bomb | bomb &
}
bomb
Figura 5: Bomba fork en Bash en una sóla línea Bash y abajo en formato más legible
Una
bomba fork es un tipo de ataque cuyo objetivo es provocar una denegación de servicio, creando otros procesos (en concreto, a llamadas del sistema o
system calls) de forma recursiva, colapsando la memoria del ordenador. Lo que hace especial este ataque, además de su extrema sencillez, es que demuestra la gran debilidad de los complejos informáticos actuales.
La
bomba fork de una sola línea es una obra maestra de la
programación ofuscada, aquí tienes una brevísima descripción de su funcionamiento:
1. “:()” significa que está definiendo una función llamada “:”
2. “{:|: &}” significa ejecutar la función “:” y enviar su salida a la función ”:” de nuevo y ejecutarla en segundo plano.
3. Dentro de la sección del punto 2 ocurre lo siguiente:
• “:” carga otra copia de la función “:” en memoria
• “|” y hace un “pipe” de su salida hacia …
• “:” otra copia de la función “:” la cual se tiene que cargar en memoria
• Por lo tanto, “:|:” carga dos copias de ':' cada vez que se llama a “:”
• “&” mata a las funciones, si la primera “:” es destruida, todas las funciones que ya se han iniciada no serán eliminadas.
• “}” fin desde el “:” inicial
4. “;” separador de los comandos
5. “:” ejecuta la función por primera vez
El código del cifrado RSA el Perl que se prohibió exportar … hasta en camisetas
El
Gobierno de los Estados Unidos, durante un periodo de tiempo, aplicó un tratamiento casi de armamento militar a cualquier tecnología relacionada con el cifrado de información. Hasta ese momento, toda esta tecnología que rodeaba a cualquier dispositivo era costoso de implementar y programar. Hasta que apareció el
algoritmo RSA de cifrado (el que es uno de los bloques fundamentales de la criptografía actual)
Este algoritmo se podía escribir en cuatro simples líneas de
Perl y cualquier empresa, o particular podía, desde ese momento, y de manera sencilla utilizar sistemas de cifrado de alta seguridad en cualquiera de sus programas, lo que permitía añadir capas de seguridad a todas las partes de los sistemas de seguridad.
En ese momento no se podía exportar fuera del país este tipo de código por Internet, pero claro, ahora era lo suficiente pequeño como para poder meterlo, por ejemplo, en una camiseta. Y eso fue exactamente lo que pasó, la gente comenzó a imprimirlo en camisetas (las originales se han convertido en objetos de coleccionistas, si lográis encontrarla) y esta forma poder exportarlo y venderlo por todo el globo. En la camiseta aparece el siguiente texto:
“WARNING: This shirt is classified as a munition and may not be exported from the United States, or shown to a foreign national”
El problema es que estas camisetas también se prohibieron, e incluso hoy día es posible que te paren en alguna aduana estadounidense si la llevas puesta (aunque estas restricciones están técnicamente retiradas). Eso sí, siempre te lo puedes
tatuar donde quieras…
Este no fue el único caso, también podemos encontrar otro como el de
DeCSS (cifrado de los DVD), el cual también se imprimió en una camiseta
y fue incluso a juicio.
Y muchos más...
Hay muchos más programas interesantes relacionados con la ciberseguridad (que os contaremos siempre que os haya gustado este artículo) de los cuales, además de lo curioso y su valor histórico, podemos aprender mucho de ellos. Desde errores de programación trágicos (como el caso de
Therac-25, que provocó la primera muerte “
por código”) hasta malware clásico como por ejemplo
Conficker, el gusano que infectó millones de ordenadores, entre muchos otros. Pero amigos, esas son otras
Microhistorias … ;)
Happy Hacking Hackers!!!
Autores:
Fran Ramírez,
(@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps", también de "Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades. Puedes contactar con Fran Ramirez en MyPublicInbox.
Rafael Troncoso (@tuxotron) es Senior Software Engineer en SAP Concur, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" además del blog CyberHades. Puedes contactar con Rafael Troncoso en MyPublicInbox.