Capítulo 1. Historia de la seguridad del software
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Antes de profundizar en las técnicas de seguridad ofensivas y defensivas reales, es importante comprender al menos un poco la larga e interesante historia de la seguridad del software. Un breve repaso de los principales acontecimientos en materia de seguridad de los últimos cien años debería bastar para que comprendas la tecnología fundamental que subyace a las aplicaciones web actuales. Además, te mostrará la relación continua entre el desarrollo de mecanismos de seguridad y la improvisación de los hackers con visión de futuro que buscan oportunidades para romper o eludir esos mecanismos.
Los orígenes del pirateo informático
En las dos últimas décadas, los hackers han ganado más publicidad y notoriedad que nunca. Como resultado, es fácil para cualquier persona sin la formación adecuada asumir que la piratería informática es un concepto estrechamente ligado a Internet y que la mayoría de los piratas informáticos surgieron en los últimos 20 años.
Pero eso es sólo una verdad parcial. Aunque el número de hackers en todo el mundo se ha disparado definitivamente con el auge de la World Wide Web, los hackers han existido desde mediados del siglo XX, posiblemente incluso antes, dependiendo de lo que definas como "hacking". Muchos expertos debaten sobre la década que marca el verdadero origen de los hackers modernos, porque algunos acontecimientos significativos de principios del siglo XX mostraron un gran parecido con el hacking que se ve en el mundo actual.
Por ejemplo, en las décadas de 1910 y 1920 se produjeron incidentes aislados específicos que probablemente se calificarían de piratería informática, la mayoría de los cuales consistían en manipular emisores y receptores de código Morse, o interferir en la transmisión de ondas de radio. Sin embargo, aunque estos sucesos ocurrieron, no fueron habituales, y es difícil precisar las operaciones a gran escala que se interrumpieron como consecuencia del abuso de estas tecnologías.
También es importante señalar que no soy historiador. Soy un profesional de la seguridad con experiencia en la búsqueda de soluciones a problemas profundos de arquitectura y seguridad a nivel de código en el software empresarial. Antes de esto, pasé muchos años como ingeniero de software escribiendo aplicaciones web en varios lenguajes y marcos de trabajo. Hoy sigo escribiendo software en forma de automatización de la seguridad, además de contribuir a varios proyectos en mi tiempo libre como hobby. Esto significa que no estoy aquí para discutir detalles concretos ni debatir historias de origen alternativas. En su lugar, esta sección se ha recopilado basándose en muchos años de investigación independiente, haciendo hincapié en las lecciones que podemos extraer de estos acontecimientos y aplicarlas hoy.
Dado que este capítulo no pretende ser una visión general exhaustiva, sino una referencia de acontecimientos históricos críticos, comenzamos nuestra cronología a principios de la década de 1930. Ahora, sin más interrupción, vamos a examinar una serie de acontecimientos históricos que ayudaron a dar forma a la relación actual entre hackers e ingenieros.
La máquina Enigma, circa 1930
La máquina Enigma utilizaba rotores mecánicos accionados eléctricamente para cifrar y descifrar mensajes de texto enviados por ondas de radio (ver Figura 1-1). El dispositivo era de origen alemán y se convertiría en un importante avance tecnológico durante la Segunda Guerra Mundial.
El dispositivo parecía una gran máquina de escribir mecánica cuadrada o rectangular. Al pulsar cada tecla, los rotores se movían y grababan un carácter aparentemente aleatorio que se transmitía a todas las máquinas Enigma cercanas. Sin embargo, estos caracteres no eran aleatorios, sino que estaban definidos por la rotación del rotor y una serie de opciones de configuración que podían modificarse en cualquier momento en el dispositivo. Cualquier máquina Enigma con una configuración específica podía leer o "desencriptar" los mensajes enviados desde otra máquina con una configuración idéntica. Esto hizo que la máquina Enigma fuera extremadamente valiosa para enviar mensajes cruciales evitando su interceptación.
Aunque es difícil determinar un único inventor del mecanismo de encriptación giratorio utilizado por la máquina, la tecnología fue popularizada por una empresa de dos personas llamada Chiffriermaschinen AG, con sede en Alemania. En la década de 1920, Chiffriermaschinen AG viajó por toda Alemania demostrando la tecnología, lo que llevó al ejército alemán a adoptarla en 1928 para asegurar los mensajes militares secretos en tránsito.
La capacidad de evitar la interceptación de mensajes a larga distancia fue un avance radical que nunca antes había sido posible. En el mundo del software actual, la interceptación de mensajes sigue siendo una técnica popular que los piratas informáticos intentan emplear, a menudo denominada ataque de intermediario. El software actual utiliza técnicas similares (pero mucho más potentes) a las que utilizaba la máquina Enigma hace cien años para protegerse de tales ataques.
Aunque la máquina Enigma era una tecnología increíblemente impresionante para su época, no carecía de defectos. Dado que el único criterio para la interceptación y el descifrado era una máquina Enigma con una configuración idéntica a la del remitente, un único registro de configuración de comprometido (o clave privada, en términos actuales) podía inutilizar toda una red de máquinas Enigma.
Para combatirlo, los grupos que enviaban mensajes a través de la máquina Enigma cambiaban regularmente sus ajustes de configuración. Reconfigurar las máquinas Enigma era un proceso que llevaba mucho tiempo. En primer lugar, los registros de configuración tenían que intercambiarse en persona, ya que aún no existían formas seguras de compartirlos a distancia. Compartir los registros de configuración entre una red de dos máquinas y dos operadores podría no ser doloroso. Pero una red mayor, digamos 20 máquinas, requería varios mensajeros para entregar los registros de configuración, lo que aumentaba la probabilidad de que un registro de configuración fuera interceptado y robado, o incluso filtrado o vendido.
El segundo problema de compartir los registros de configuración era que se necesitaban ajustes manuales en la propia máquina para que ésta pudiera leer, cifrar y descifrar los nuevos mensajes enviados desde otras máquinas Enigma. Esto significaba que un miembro del personal especializado y formado tenía que estar presente en caso de que fuera necesaria una actualización de la configuración. Todo esto ocurrió en una época anterior al software, por lo que estos ajustes de configuración requerían manipular el hardware y ajustar la disposición física y el cableado del panel de conexiones. El ajustador necesitaba conocimientos de electrónica, lo que era muy raro a principios del siglo XX.
Como consecuencia de lo difícil y largo que era actualizar estas máquinas, las actualizaciones solían producirse mensualmente -diariamente en el caso de las líneas de comunicación de misión crítica-. Si se interceptaba o filtraba una clave, todas las transmisiones del resto del mes podían ser interceptadas por un actor malicioso -el equivalente a un hacker en la actualidad-.
El tipo de cifrado que utilizaban estas máquinas Enigma se conoce ahora como algoritmo de clave simétrica, que es un tipo especial de cifrado que permite cifrar y descifrar un mensaje utilizando una única clave criptográfica. Esta familia de cifrado se sigue utilizando hoy en día en software para asegurar los datos en tránsito (entre emisor y receptor), pero con muchas mejoras respecto al modelo clásico que ganó popularidad con la máquina Enigma.
En el software, las claves pueden hacerse mucho más complejas. Los algoritmos modernos de generación de claves producen claves tan complejas que intentar todas las combinaciones posibles(fuerza bruta o ataque de fuerza bruta) con el hardware moderno más rápido posible podría llevar fácilmente más de un millón de años. Además, a diferencia de las máquinas Enigma del pasado, las claves de software pueden cambiar rápidamente.
Según el caso de uso, las claves pueden regenerarse en cada sesión de usuario (por inicio de sesión), en cada solicitud de red o en un intervalo programado. Cuando se utiliza este tipo de encriptación en software, una clave filtrada podría exponerte a una sola petición de red en el caso de la regeneración por petición, o en el peor de los casos, a unas horas en el caso de la regeneración por inicio de sesión (por sesión).
Si rastreas el linaje de la criptografía moderna muy atrás, acabarás llegando a la Segunda Guerra Mundial, en la década de 1930. Se puede afirmar que la máquina Enigma fue un hito importante en la seguridad de las comunicaciones a distancia. De esto podemos concluir que la máquina Enigma fue un avance esencial en lo que más tarde se convertiría en el campo de la seguridad del software.
La máquina Enigma fue también un importante desarrollo tecnológico para los que con el tiempo serían conocidos como "hackers". La adopción de las máquinas Enigma por las Potencias del Eje durante la Segunda Guerra Mundial dio lugar a una presión extrema para que los Aliados desarrollaran técnicas de ruptura de la encriptación. El propio general Dwight D. Eisenhower afirmó que hacerlo sería esencial para la victoria contra los nazis.
En septiembre de 1932, un matemático polaco llamado Marian Rejewski recibió una máquina Enigma robada. Al mismo tiempo, un espía francés llamado Hans-Thilo Schmidt pudo proporcionarle configuraciones válidas para septiembre y octubre de 1932. Esto permitió a Marian interceptar mensajes a partir de los cuales pudo empezar a analizar el misterio del cifrado de la máquina Enigma.
Marian intentaba determinar cómo funcionaba la máquina, tanto mecánica como matemáticamente. Quería comprender cómo una configuración específica del hardware de la máquina podía dar lugar a la salida de un mensaje cifrado totalmente distinto.
El intento de descifrado de Marian se basó en una serie de teorías sobre qué configuración de la máquina daría lugar a un resultado concreto. Mediante el análisis de patrones en los mensajes cifrados y la elaboración de teorías basadas en la mecánica de la máquina, Marian y dos compañeros de trabajo, Jerzy Różycki y Henryk Zygalski, acabaron aplicando ingeniería inversa al sistema. Gracias al profundo conocimiento de la mecánica del rotor Enigma y de la configuración de la placa que el equipo había desarrollado, pudieron hacer conjeturas sobre qué configuraciones darían lugar a qué patrones de cifrado. Entonces podían reconfigurar una tarjeta con una precisión razonable y, tras varios intentos, empezar a leer el tráfico de radio cifrado. En 1933, el equipo interceptaba y descifraba diariamente el tráfico de la máquina Enigma.
Al igual que los hackers de hoy en día, Marian y su equipo interceptaban y aplicaban ingeniería inversa a esquemas de encriptación para acceder a datos valiosos generados por una fuente distinta de ellos mismos. Por estas razones, yo consideraría a Marian Rejewski y al equipo que le ayudaba como algunos de los primeros hackers del mundo.
En los años siguientes, Alemania aumentaría continuamente la complejidad del cifrado de su máquina Enigma. Esto se hizo aumentando gradualmente el número de rotores necesarios para cifrar un carácter. Con el tiempo, la complejidad de la ingeniería inversa de una configuración se volvería demasiado difícil de romper para el equipo de Marian en un plazo razonable. Este desarrollo también fue importante, porque proporcionó una visión de la relación en constante evolución entre los piratas informáticos y los que intentan impedir la piratería.
Esta relación continúa hoy en día, ya que los hackers creativos iteran y mejoran continuamente sus técnicas para irrumpir en los sistemas de software. Y en la otra cara de la moneda, los ingenieros inteligentes desarrollan continuamente nuevas técnicas para defenderse de los hackers más innovadores.
Descifrado automatizado del código Enigma, circa 1940
Alan Turing fue un matemático inglés conocido sobre todo por el desarrollo de un test conocido hoy como "test de Turing". El test de Turing se desarrolló para calificar las conversaciones generadas por máquinas en función de la dificultad para diferenciar esas conversaciones de las conversaciones de seres humanos reales. Esta prueba se considera a menudo una de las filosofías fundacionales en el campo de la inteligencia artificial (IA).
Aunque Alan Turing es más conocido por su trabajo en IA, también fue pionero en criptografía y automatización. De hecho, antes y durante la Segunda Guerra Mundial, la investigación de Alan se centró principalmente en la criptografía y no en la IA. A partir de septiembre de 1938, Alan trabajó a tiempo parcial en la Government Code and Cypher School (GC&CS). La GC&CS era una agencia de investigación e inteligencia financiada por el ejército británico, situada en Bletchley Park, Inglaterra.
La investigación de Alan se centró principalmente en el análisis de las máquinas Enigma. En Bletchley Park, Alan investigó la criptografía de las máquinas Enigma junto a su mentor de entonces, Dilly Knox, que por aquel entonces era un criptógrafo experimentado.
Al igual que los matemáticos polacos que les precedieron, Alan y Dilly querían encontrar la forma de descifrar el cifrado (ahora mucho más potente) de las máquinas Enigma alemanas. Gracias a su colaboración con la Oficina Polaca de Cifrado, ambos tuvieron acceso a toda la investigación que el equipo de Marian había realizado casi una década antes. Esto significaba que ya tenían un profundo conocimiento de la máquina. Comprendían la relación entre los rotores y el cableado, y conocían la relación entre la configuración del dispositivo y el cifrado que se obtendría(Figura 1-2).
El equipo de Marian pudo encontrar patrones en el cifrado que les permitían hacer conjeturas sobre la configuración de una máquina. Pero esto no era escalable ahora que el número de rotores de la máquina se había multiplicado hasta por diez. En el tiempo necesario para probar todas las combinaciones potenciales, ya se habría emitido una nueva configuración. Por eso, Alan y Dilly buscaban otro tipo de solución; una solución que pudiera ampliarse y que pudiera utilizarse para descifrar nuevos tipos de cifrado. Querían una solución de uso general, en lugar de una altamente especializada.
Presentamos la "Bomba"
Una bomba era un dispositivo mecánico accionado eléctricamente que intentaba invertir automáticamente la posición de los rotores mecánicos de una máquina Enigma basándose en el análisis mecánico de los mensajes enviados desde dichas máquinas (ver Figura 1-3).
Las primeras bombas fueron construidas por los polacos, en un intento de automatizar el trabajo de Marian. Por desgracia, estos dispositivos estaban diseñados para determinar la configuración de máquinas Enigma con un hardware muy específico. En concreto, eran ineficaces contra máquinas con más de tres rotores. Como la bomba polaca no podía hacer frente al desarrollo de máquinas Enigma más complejas, los criptógrafos polacos acabaron volviendo a utilizar métodos manuales para intentar descifrar los mensajes alemanes de guerra.
Alan Turing creía que las máquinas originales fallaban porque no estaban escritas de forma general. Para desarrollar una máquina que pudiera descifrar cualquier configuración Enigma (independientemente del número de rotores), partió de una simple suposición: para diseñar correctamente un algoritmo que descifrara un mensaje cifrado, primero hay que conocer una palabra o frase que exista dentro de ese mensaje y su posición.
Afortunadamente para Alan, el ejército alemán tenía unas normas de comunicación muy estrictas. Cada día se enviaba un mensaje a través de ondas de radio Enigma encriptadas que contenía un informe meteorológico regional detallado. De este modo, los militares alemanes se aseguraban de que todas las unidades conocieran las condiciones meteorológicas sin compartirlas públicamente con nadie que las escuchara por radio. Los alemanes no sabían que el equipo de Alan sería capaz de aplicar ingeniería inversa al propósito y la posición de estos informes.
Conocer las entradas (datos meteorológicos) que se enviaban a través de una máquina Enigma correctamente configurada facilitaba mucho la determinación algorítmica de las salidas. Alan utilizó estos nuevos conocimientos para determinar una configuración de la bomba que pudiera funcionar independientemente del número de rotores en que se basaba la máquina Enigma que intentaba descifrar.
Alan solicitó un presupuesto para construir una bomba que detectara con precisión los requisitos de configuración necesarios para interceptar y leer mensajes cifrados de las máquinas Enigma alemanas. Una vez aprobado el presupuesto, Alan construyó una bomba compuesta por 108 tambores que podían girar a una velocidad de 120 RPM. Esta máquina podía pasar por casi 20.000 configuraciones posibles de máquinas Enigma en sólo 20 minutos. Esto significaba que cualquier nueva configuración podía verse comprometida rápidamente. La encriptación Enigma ya no era un medio seguro de comunicación.
Hoy en día La estrategia de ingeniería inversa de Alan se conoce como ataque de texto plano conocido o KPA. Es un algoritmo que se hace mucho más eficiente si se le proporcionan previamente datos de entrada/salida. Los hackers modernos utilizan técnicas similares para romper la encriptación de los datos almacenados o utilizados en el software. La máquina que construyó Alan marcó un punto importante en la historia, ya que fue una de las primeras herramientas de pirateo automatizadas que se construyeron.
Teléfono "Phreaking", circa 1950
Tras el surgimiento de la máquina Enigma en la década de 1930 y la batalla criptográfica que se produjo entre las principales potencias mundiales, la introducción del teléfono es el siguiente acontecimiento importante en nuestra línea cronológica. El teléfono permitió a la gente corriente comunicarse entre sí a grandes distancias y a gran velocidad. A medida que las redes telefónicas crecían, necesitaban automatización para funcionar a gran escala.
A finales de los años 50, empresas de telecomunicaciones como AT&T empezaron a implantar nuevos teléfonos que podían ser encaminados automáticamente a un número de destino basándose en las señales de audio emitidas por la unidad telefónica. Al pulsar una tecla del teclado del teléfono se emitía una frecuencia de audio específica que se transmitía por la línea y era interpretada por una máquina en un centro de conmutación. Una máquina de conmutación traducía estos sonidos en números y encaminaba la llamada al receptor adecuado.
Este sistema se conocía como marcación por tonos, y fue un avance esencial sin el que las redes telefónicas a escala no podían funcionar. La marcación por tonos redujo drásticamente los gastos generales de funcionamiento de una red telefónica, puesto que ésta ya no necesitaba un operador para conectar manualmente cada llamada. En lugar de eso, un operador que supervisara una red por si había problemas podía gestionar cientos de llamadas en el mismo tiempo que antes tardaba una llamada.
En poco tiempo, pequeños grupos de personas empezaron a darse cuenta de que cualquier sistema construido sobre la interpretación de tonos de audio podía manipularse fácilmente. El simple hecho de aprender a reproducir frecuencias de audio idénticas junto al receptor telefónico podía interferir en la funcionalidad prevista del aparato. Los aficionados que experimentaron con la manipulación de esta tecnología acabaron conociéndose como phreakers, unprimer tipo de hacker especializado en romper o manipular redes telefónicas. No se conoce el verdadero origen del término phreaking, aunque tiene varios posibles orígenes generalmente aceptados. Lo más frecuente es pensar que deriva de dos palabras, "freaking" y "phone".
Hay una derivación alternativa sugerida que creo que tiene más sentido. Creo que el término phreaking se originó a partir de "audiofrecuencia" en respuesta a los lenguajes de señalización de audio que utilizaban los teléfonos de la época. Creo que esta explicación tiene más sentido porque el origen del término está muy cerca cronológicamente del lanzamiento del sistema original de marcación por tonos de AT&T. Antes de la marcación por tonos, era mucho más difícil manipular las llamadas telefónicas porque cada llamada requería que un operador conectara las dos líneas.
Podemos rastrear el phreaking hasta varios acontecimientos, pero el caso más notorio de phreaking temprano fue el descubrimiento y la utilización del tono de 2600 Hz. AT&T utilizaba internamente una frecuencia de audio de 2600 Hz para señalar que una llamada había finalizado. Era esencialmente un "comando de administración" integrado en el sistema original de marcación por tonos. Emitir un tono de 2600 Hz impedía que un sistema de conmutación de telecomunicaciones se diera cuenta de que una llamada seguía abierta (registraba la llamada como finalizada, aunque seguía en curso). Esto permitía realizar costosas llamadas internacionales sin que se registrara o enviara una factura a la persona que llamaba.
El descubrimiento del tono de 2600 Hz suele atribuirse a dos hechos. En primer lugar, se sabía que un joven llamado Joe Engressia tenía un tono silbante de 2600 Hz y, al parecer, presumía ante sus amigos silbando un tono que podía impedir que los teléfonos marcaran. Algunos consideran a Joe uno de los phreakers telefónicos originales, aunque su descubrimiento se produjo por accidente.
Más tarde, un amigo de Joe Engressia llamado John Draper descubrió que los silbatos de juguete incluidos en las cajas de cereales Cap'n Crunch imitaban un tono de 2600 Hz. El uso cuidadoso del silbato también podía generar llamadas telefónicas gratuitas de larga distancia utilizando la misma técnica. El conocimiento de estas técnicas se extendió por todo el mundo occidental, y finalmente condujo a la generación de hardware que podía igualar frecuencias de audio específicas con sólo pulsar un botón.
El primero de estos dispositivos de hardware fue conocido como caja azul. Las cajas azules reproducían una señal casi perfecta de 2600 Hz, lo que permitía a cualquiera que poseyera una aprovechar el fallo de llamada gratuita inherente a los sistemas de conmutación de telecomunicaciones. Las cajas azules fueron sólo el principio del hardware de phreaking automatizado, ya que generaciones posteriores de phreakers seguirían manipulando teléfonos públicos, impedirían que los ciclos de facturación se iniciaran sin utilizar una señal de 2600 Hz, emularían señales de comunicación militares e incluso falsificarían el identificador de llamadas.
De esto se deduce que los arquitectos de las primeras redes telefónicas sólo tenían en cuenta a las personas normales y sus objetivos de comunicación. En el mundo del software actual, esto se conoce como diseño "en el mejor de los casos". Diseñar basándose en esto fue un fallo fatal, pero se convertiría en una importante lección que sigue siendo relevante hoy en día: considera siempre primero el peor escenario posible cuando diseñes sistemas complejos.
Con el tiempo, el conocimiento de las debilidades inherentes a los sistemas de marcación por tonos se hizo más conocido, lo que hizo que se asignaran presupuestos para desarrollar contramedidas que protegieran los beneficios de las telecomunicaciones y la integridad de las llamadas contra los phreakers.
Tecnología antifractura, circa 1960
En los años 60, los teléfonos estaban equipados con una nueva tecnología conocida como señalización multifrecuencia de doble tono (DTMF). DTMF era un lenguaje de señalización basado en audio desarrollado por Bell Systems y patentado bajo la marca comercial más conocida, "Tonos Táctiles". El DTMF estaba intrínsecamente ligado a la disposición de la marcación telefónica que conocemos hoy, que consta de tres columnas y cuatro filas de números. Cada tecla de un teléfono DTMF emitía dos frecuencias de audio muy específicas, frente a una única frecuencia como los sistemas de marcación por tonos originales.
Esta tabla representa los "tonos táctiles" o sonidos (en hercios) que emitían los teléfonos antiguos al pulsar una tecla:
1 |
2 |
3 |
(697 Hz) |
4 |
5 |
6 |
(770 Hz) |
7 |
8 |
9 |
(852 Hz) |
* |
0 |
# |
(941 Hz) |
(1209 Hz) |
(1336 Hz) |
(1477 Hz) |
El desarrollo de la DTMF se debió en gran medida al hecho de que los phreakers se aprovechaban de los sistemas de marcación por tonos por lo fáciles que eran de aplicar ingeniería inversa a esos sistemas. Bell Systems creía que, como el sistema DTMF utilizaba dos tonos muy distintos al mismo tiempo, sería mucho más difícil que un actor malicioso se aprovechara de él.
Los tonos DTMF no podían ser reproducidos fácilmente por una voz humana o un silbido, lo que significaba que la tecnología era significativamente más segura que su predecesora. El DTMF fue un excelente ejemplo de desarrollo de seguridad introducido con éxito para combatir a los phreakers, los piratas informáticos de la época.
La mecánica de generación de los tonos DTMF es bastante sencilla. Detrás de cada tecla hay un interruptor que envía una señal a un altavoz interno para que emita dos frecuencias: una frecuencia basada en la fila de la tecla y otra basada en la columna. De ahí el uso del término tono dual.
La DTMF fue adoptada como norma por la Unión Internacional de Telecomunicaciones (UIT) y más tarde pasaría a utilizarse en la televisión por cable (para especificar las pausas publicitarias), además de en los teléfonos.
El DTMF es un avance tecnológico importante porque demuestra que los sistemas pueden diseñarse para que sea más difícil abusar de ellos si se planifica adecuadamente. Ten en cuenta que, con el tiempo, estos tonos DTMF también se duplicarían, pero el esfuerzo necesario sería mucho mayor. Con el tiempo, los centros de conmutación pasarían a utilizar entradas digitales (frente a analógicas), lo que eliminaría casi por completo el phreaking.
Los orígenes del pirateo informático, hacia 1980
En 1976, Apple lanzó el ordenador personal Apple 1. Este ordenador no se configuraba al sacarlo de la caja y requería que el comprador proporcionara una serie de componentes y los conectara a la placa base. Sólo se construyeron y vendieron unos cientos de estos aparatos.
En 1982, Commodore International lanzó su dispositivo competidor. Se trataba del Commodore 64, un ordenador personal que se configuraba completamente nada más sacarlo de la caja. Venía con su propio teclado, admitía audio e incluso podía utilizarse con pantallas multicolor.
El Commodore 64 llegaría a vender casi 500.000 unidades al mes hasta principios de la década de 1990. A partir de ese momento, la tendencia de ventas de ordenadores personales aumentaría continuamente año tras año durante varias décadas. Los ordenadores pronto se convirtieron en una herramienta habitual tanto en los hogares como en las empresas, y se hicieron cargo de tareas repetitivas comunes, como la gestión de las finanzas, los recursos humanos, la contabilidad y las ventas.
En 1983, Fred Cohen, informático estadounidense, creó , el primer virus informático. El virus que escribió era capaz de hacer copias de sí mismo y se propagaba fácilmente de un ordenador personal a otro a través de un disquete. Consiguió almacenar el virus dentro de un programa legítimo, ocultándolo a cualquiera que no tuviera acceso al código fuente. Más tarde, Fred Cohen se dio a conocer como pionero de la seguridad del software, demostrando que detectar virus a partir de software válido con algoritmos era casi imposible.
A pocos años después, en 1988, otro informático estadounidense llamado Robert Morris fue la primera persona en implementar un virus que infectaba ordenadores fuera de un laboratorio de investigación. El virus se conoció como el Gusano Morris, siendo "gusano" una nueva expresión utilizada para describir un virus informático autorreplicante. El Gusano Morris se propagó a unos 15.000 ordenadores conectados a la red en el primer día de su lanzamiento.
Por primera vez en la historia, el gobierno de EEUU intervino para estudiar una normativa oficial contra la piratería informática. La Oficina de Rendición de Cuentas del Gobierno de EEUU (GAO) estimó los daños causados por este virus en 10.000.000 $. Robert recibió tres años de libertad condicional, cuatrocientas horas de servicios comunitarios y una multa de 10.050 dólares. Esto le convertiría en el primer hacker condenado en Estados Unidos.
Hoy en día, la mayoría de los piratas informáticos no crean virus que infecten sistemas operativos, sino que atacan a los navegadores web. Los navegadores modernos proporcionan un sandboxing extremadamente robusto que dificulta que un sitio web ejecute código ejecutable fuera del navegador (contra el sistema operativo anfitrión) sin el permiso explícito del usuario.
Aunque hoy en día los hackers se dirigen principalmente a los usuarios y a los datos a los que se puede acceder a través del navegador web, existen muchas similitudes con los hackers que tenían como objetivo el SO. La escalabilidad (saltar de un usuario a otro) y el camuflaje (ocultar código malicioso dentro de un programa legítimo) son técnicas empleadas por los ataques contra los navegadores web.
Hoy en día, los ataques suelen escalar mediante la distribución a través del correo electrónico, las redes sociales o la mensajería instantánea. Algunos hackers incluso crean redes legítimas de sitios web reales para promocionar un único sitio web malicioso.
A menudo, el código malicioso se oculta tras una interfaz de aspecto legítimo. Los ataques de suplantación de identidad (robo de credenciales) se producen en sitios web que parecen idénticos a sitios de redes sociales o bancarios. Los plug-ins de los navegadores se descubren con frecuencia robando datos, y a veces los hackers incluso encuentran formas de ejecutar su propio código en sitios web que no son de su propiedad.
El auge de la World Wide Web, circa 2000
La World Wide Web (WWW) surgió en los años 90, pero su popularidad empezó a explotar a finales de los 90 y principios de los 2000.
En los años 90, la web se utilizaba casi exclusivamente como medio para compartir documentos escritos en HTML. Los sitios web no prestaban atención a la experiencia del usuario, y muy pocos permitían al usuario enviar ninguna entrada al servidor para modificar el flujo del sitio web. La Figura 1-4 muestra un sitio web Apple.com de 1997 con datos puramente informativos.
Los primeros años de la década de 2000 marcaron una nueva era para Internet, porque los sitios web empezaron a almacenar datos enviados por los usuarios y a modificar la funcionalidad del sitio basándose en las aportaciones de los usuarios. Este fue un desarrollo clave, que más tarde se conoció como Web 2.0 en. Los sitios Web 2.0 permitían a los usuarios colaborar entre sí enviando sus aportaciones a través de Protocolo de Transporte de Hipertexto (HTTP) a un servidor Web, que almacenaba las aportaciones y las compartía con otros usuarios que las solicitaran.
Esta nueva ideología en la construcción de sitios web dio origen a los medios sociales tal y como los conocemos hoy. La Web 2.0 permitió crear blogs, wikis, sitios para compartir medios y mucho más.
Este cambio radical en la ideología de la web hizo que ésta pasara de ser una plataforma para compartir documentos a una plataforma de distribución de aplicaciones. La Figura 1-5 muestra un escaparate de Apple.com de 2007 en el que puedes comprar cosas. Observa el enlace a la cuenta en la esquina superior derecha, que sugiere que el sitio web tenía soporte para cuentas de usuario y persistencia de datos. El enlace a la cuenta existía en iteraciones anteriores del sitio web de Apple en la década de 2000, pero en 2007 se promocionó a la parte superior derecha de la UX en lugar de un enlace en la parte inferior. Puede que antes fuera experimental o estuviera infrautilizado.
Este enorme cambio en la dirección del diseño de la arquitectura de los sitios web también cambió la forma en que los hackers atacaban las aplicaciones web. Para entonces, ya se habían realizado serios esfuerzos para asegurar los servidores y las redes, los dos principales vectores de ataque para los hackers de la última década. Con el auge de los sitios web similares a aplicaciones, el usuario se convirtió en un objetivo perfecto para los hackers.
Era una configuración perfecta. Los usuarios pronto tendrían acceso a funciones de misión crítica a través de la web. Las comunicaciones militares, las transferencias bancarias, etc., acabarían realizándose a través de aplicaciones web (un sitio web que funciona como una aplicación de escritorio). Por desgracia, en aquella época había muy pocos controles de seguridad para proteger a los usuarios de los ataques dirigidos contra ellos. Además, la educación relativa a la piratería informática o a los mecanismos sobre los que funcionaba Internet era escasa. Pocos de los primeros usuarios de Internet en la década de 2000 podían siquiera empezar a comprender la tecnología subyacente que funcionaba para ellos.
En a principios de la década de 2000, los primeros ataques de denegación de servicio (DoS) ampliamente publicitados cerraron Yahoo!, Amazon, eBay y otros sitios populares. En 2002, el plug-in ActiveX de Microsoft para navegadores acabó con una vulnerabilidad que permitía invocar cargas y descargas remotas de archivos desde un sitio web con intenciones maliciosas. A mediados de la década de 2000, los hackers utilizaban regularmente sitios web de "phishing" para robar credenciales. En aquel momento no existían controles para proteger a los usuarios contra estos sitios web.
Las vulnerabilidades Cross-Site Scripting (XSS), que permitían que el código de un hacker se ejecutara en la sesión del navegador de un usuario dentro de un sitio web legítimo, proliferaron por toda la web durante esta época, ya que los proveedores de navegadores aún no habían creado defensas para este tipo de ataques. Muchos de los intentos de pirateo de la década de 2000 se debieron a que la tecnología que impulsaba la Web estaba diseñada para un único usuario (el propietario del sitio Web). Estas tecnologías se derrumbarían cuando se utilizaran para construir un sistema que permitiera compartir datos entre muchos usuarios.
Hackers en la Era Moderna, Circa 2015+
El punto de al hablar de la piratería en épocas anteriores era construir una base desde la que poder comenzar nuestro viaje en este libro.
Al analizar el desarrollo y el criptoanálisis de las máquinas Enigma en la década de 1930, nos hicimos una idea de la importancia de la seguridad y de lo lejos que llegarán otros para romper esa seguridad.
En los años 40, vimos un primer caso de uso de la automatización de la seguridad. Este caso concreto estaba motivado por la batalla continua entre atacantes y defensores. En este caso, la tecnología de la máquina Enigma había mejorado tanto que ya no podía romperse de forma fiable mediante técnicas de criptoanálisis manual. Alan Turing recurrió a la automatización para vencer las mejoras de seguridad.
Los años 50 y 60 nos mostraron que los hackers y los manitas tienen mucho en común. También aprendimos que la tecnología diseñada sin tener en cuenta a los usuarios con intenciones maliciosas conducirá a que esa tecnología acabe siendo vulnerada. Siempre debemos tener en cuenta el peor de los casos cuando diseñamos una tecnología que se va a implantar a gran escala y en una amplia base de usuarios.
En la década de 1980, el ordenador personal empezó a popularizarse. Por esta época, empezamos a ver surgir a los hackers que hoy reconocemos. Estos hackers se aprovecharon de los poderes que permitía el software, camuflando virus dentro de aplicaciones legítimas y utilizando las redes para propagar sus virus rápidamente.
Por último, la introducción y rápida adopción de la World Wide Web llevó al desarrollo de Web 2.0, que cambió nuestra forma de pensar sobre Internet. En lugar de ser un medio para compartir documentos, Internet se convirtió en un medio para compartir aplicaciones. Como resultado, surgieron nuevos tipos de exploits que se aprovechan del usuario en lugar de la red o el servidor. Se trata de un cambio fundamental que sigue siendo cierto hoy en día, ya que la mayoría de los hackers actuales han pasado a atacar aplicaciones web a través de navegadores, en lugar de software de escritorio y sistemas operativos.
Avancemos hasta 2019, el año en que empecé a escribir este libro. En el momento de escribir esto, hay miles de sitios web en la red respaldados por empresas de millones y miles de millones de dólares. De hecho, muchas empresas obtienen todos sus ingresos de sus sitios web. Algunos ejemplos con los que probablemente estés familiarizado son Google, Facebook, Yahoo!, Reddit, Twitter, etc.
YouTube permite a los usuarios interactuar entre sí y con la propia aplicación (ver Figura 1-6). Se admiten comentarios, subidas de vídeos y subidas de imágenes. Todas estas subidas tienen permisos variables que permiten al que las realiza determinar a quién debe ser visible el contenido. Gran parte de los datos alojados persisten permanentemente y a través de las sesiones, y varias funciones tienen cambios reflejados entre usuarios casi en tiempo real (mediante notificaciones). Además, un número significativo de funciones críticas se descargan en el cliente (navegador) en lugar de residir en el servidor.
Algunas empresas tradicionales de software de escritorio intentan ahora trasladar su línea de productos a la web, a lo que hoy se conoce como la nube, que no es más que una compleja red de servidores. Ejemplos de ello son Adobe con Creative Cloud, una oferta de suscripción que proporciona Photoshop y otras herramientas de Adobe a través de la web, y Microsoft Office, que proporciona Word y Excel, pero ahora como aplicación web.
Debido a la cantidad de dinero que hay aparcado en las aplicaciones web, lo que está en juego es lo más alto que ha estado nunca. Esto significa que las aplicaciones actuales en la web están maduras para ser explotadas, y las recompensas por explotarlas están por las nubes.
Ésta es realmente una de las mejores épocas tanto para los hackers como para los ingenieros que hacen hincapié en la seguridad. El trabajo para ambos está muy solicitado, y a ambos lados de la ley.
Los navegadores son ahora mucho más avanzados que hace 10 años. Junto con este avance han aparecido multitud de nuevas funciones de seguridad. Los protocolos de red que utilizamos para acceder a Internet también han avanzado.
Los navegadores actuales ofrecen un aislamiento muy robusto entre sitios web con orígenes diferentes, siguiendo una especificación de seguridad conocida como Política del Mismo Origen (SOP ). Esto significa que no se puede acceder al sitio web A desde el sitio web B, aunque ambos estén abiertos a la vez o uno esté incrustado como iframe dentro del otro.
Los navegadores también aceptan una nueva configuración de seguridad conocida como Política de Seguridad de Contenidos (CSP). La CSP permite al desarrollador de un sitio web especificar varios niveles de seguridad, como si los scripts deben poder ejecutarse inline (en el HTML). Esto permite a los desarrolladores web proteger aún más sus aplicaciones contra las amenazas más comunes.
HTTP, el principal protocolo para enviar tráfico web, también ha mejorado desde el punto de vista de la seguridad. HTTP ha adoptado protocolos como SSL y TLS que imponen un cifrado estricto para cualquier dato que viaje por la red. Esto hace que los ataques de intermediario sean muy difíciles de realizar con éxito.
Como resultado de estos avances en la seguridad de los navegadores, muchos de los hackers con más éxito hoy en día se dirigen en realidad a la lógica escrita por los desarrolladores que se ejecuta en sus aplicaciones web. En lugar de dirigirse al propio navegador, es mucho más fácil vulnerar con éxito un sitio web aprovechando los fallos del código de la aplicación. Afortunadamente para los piratas informáticos, las aplicaciones web actuales son mucho más grandes y complejas que las del pasado.
A menudo hoy en día, una aplicación web conocida puede tener cientos de dependencias de código abierto, integraciones con otros sitios web y múltiples bases de datos de varios tipos, y ser servida desde más de un servidor web en más de una ubicación. Éstos son los tipos de aplicaciones web que explotarás con más éxito, y en los que nos centraremos a lo largo de este libro.
En resumen, las aplicaciones web actuales son mucho más grandes y complejas que sus predecesoras. Como hacker, ahora puedes centrarte en entrar en las aplicaciones web explotando los fallos lógicos del código de la aplicación. A menudo, estos fallos son el resultado de un efecto secundario de la interacción avanzada con el usuario que ofrece la aplicación web.
Los hackers de la década pasada centraban gran parte de su tiempo en irrumpir en servidores, redes y navegadores. El hacker moderno dedica la mayor parte de su tiempo a irrumpir en aplicaciones web explotando vulnerabilidades presentes en el código.
Resumen
Los orígenes de la seguridad del software y los orígenes de los hackers que intentan eludir esa seguridad se remontan al menos a unos cien años atrás. El software actual se basa en las lecciones aprendidas de la tecnología del pasado, al igual que la seguridad de ese software.
Los hackers del pasado se dirigían a las aplicaciones de forma diferente a como lo hacen hoy. A medida que una parte de la pila de aplicaciones se hace cada vez más segura, los hackers pasan a tener como objetivo nuevas tecnologías emergentes. Estas nuevas tecnologías a menudo no tienen el mismo nivel de controles de seguridad incorporados, y sólo mediante ensayo y error son capaces los ingenieros de diseñar e implantar los controles de seguridad adecuados.
Del mismo modo que los sitios web sencillos del pasado estaban plagados de agujeros de seguridad (en particular, a nivel del servidor y de la red), las aplicaciones web modernas aportan una nueva superficie para los atacantes, que se está explotando activamente. Este breve contexto histórico es importante porque pone de relieve que las preocupaciones actuales por la seguridad de las aplicaciones web son sólo una etapa de un proceso cíclico. Las aplicaciones web del futuro serán más seguras, y los hackers probablemente pasarán a una nueva superficie de ataque (tal vez RTC o web sockets, por ejemplo).
Consejo
Cada nueva tecnología viene con su propia superficie de ataque y vulnerabilidades únicas. Una forma de convertirte en un excelente hacker es estar siempre al día de las últimas nuevas tecnologías, que a menudo tendrán agujeros de seguridad que aún no se han publicado o encontrado en la web.
Mientras tanto, este libro te mostrará cómo irrumpir en las aplicaciones web modernas y protegerlas. Pero las técnicas modernas de seguridad ofensiva y defensiva son sólo una faceta del aprendizaje que deberías obtener de este libro. En última instancia, ser capaz de encontrar tus propias soluciones a los problemas de seguridad es la habilidad más valiosa que puedes tener como profesional de la seguridad. Si de los próximos capítulos puedes extraer habilidades de pensamiento crítico y de resolución de problemas relacionados con la seguridad, podrás situarte por encima de tus compañeros cuando se descubran exploits nuevos o inusuales, o cuando se interpongan en tu camino mecanismos de seguridad nunca antes vistos.
Get Seguridad de las aplicaciones web now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.