Hackeando la realidad

La idea de este post viene de lejos. De tan lejos como el estreno del Episodio III de la saga de Star Wars, allá por el 2005.

Dedicado al mundo de la informática, uno de los apartados más excitantes es el dedicado a la seguridad informática y sus diferentes variantes (desde el hacking hasta el cracking, pasando por la ingeniería social). No pretendo detallar estos conceptos a los profanos, simplemente explicaré un punto muy concreto.

En un ordenador, sea cual sea, en cada momento se están ejecutando decenas, cientos, miles de tareas simultáneamente. Estas tareas se llaman "procesos", programas en ejecución haciendo lo que se les ha pedido que hagan y devolviendo la respuesta a quien los lanzó (ya sea un usuario del ordenador, u otro proceso). Estos procesos se ejecutan dentro de un contexto, en particular, de seguridad.

Es decir, si un usuario de un ordenador intenta abrir una carpeta en la que no tiene permisos, el proceso que se encarga de abrir el contenido y mostrárselo, "hereda" los permisos del usuario en cuestión. Así, el sistema operativo, garante de que los procesos hagan lo que tiene que hacer y controlar que no se salgan de su contexto, cuando el proceso intente acceder a la carpeta con los permisos del usuario limitado, le dirá: perdona majo, pero no tienes permisos para acceder a esta carpeta. Y le dará un error, y el proceso de apertura de la carpeta, se lo dará al usuario: mira una cosita, que con tus permisos me dicen que acceder ahí tararí.

¿Pero y si lo intenta un usuario que sí tiene permisos? Pues EL MISMO PROGRAMA (sí, sí, como si fuera un mayordomo al que pedirle cosas, una y otra vez) de apertura de carpetas lo intentará con los nuevos permisos, y el sistema operativo, esta vez sí, dirá que perfecto, en esta discoteca puedes acceder, que tienes pase VIP, y se mostrará el contenido al usuario.

Es decir, un proceso puede o no hacer lo que se le pide que haga en función de (entre otras cosas), quién ha lanzado dicho proceso.

Siguiendo con el símil, a la discoteca más molona de la ciudad no puedes entrar en zapatillas, salvo si eres CR7... Queda claro, ¿no?

Ok. Sigamos. Hay una excepción. Como siempre.

¿Qué pasa si aparece un tipo en la puerta de la discoteca pegando tiros con una pistola? ¿Creéis que el portero no te dejaría entrar en zapatillas aunque no seas CR7? Venga, va, pensemos que sí. Que el tipo ve que se trata de un estado excepcional, donde importa más la vida de una persona (aunque lleve zapatillas...) que la norma general que no le dejaría pasar.

Esto mismo pasa con un programa en ejecución. El sistema operativo (el portero), sabe decidir si hay casos excepcionales o no. ¿Qué casos? Aquellos en los que a pesar de los permisos, el programa genera un problema que el sistema operativo considera que "debe intervenir" por ser lo "suficientemente grave" como para hacerlo. Problemas los hay de muchas clases, mis favoritos son el NullPointerExcepction (por supuesto...), el StackOverflow (que ha dado el nombre a la famosa stackoverflow.com) y el Kernel Panic.

En todos esos casos, donde el programa comete un error, el sistema operativo toma el control. ¿Y adivináis qué permisos tiene el sistema operativo? dicho de otra manera. ¿Qué capacidad de acción tiene el portero de la discoteca si se le dice que la norma de las zapatillas ya no aplica? Toda. Exacto. Toda. El sistema operativo es todopoderoso. Hasta para destruirse a sí mismo si hace falta. El sistema operativo, como el portero en momentos de crisis, es, literalmente, dios (decide si te matan o entras con zapatillas).

- Y, ¿qué? - preguntaréis.
- No os falta razón - diré.

Una técnica habitual de hacking trata de aprovechar esta situación. Imaginad que quiero entrar a su garito con zapatillas (que no me miren mal al pasar), y para ello, me las ingenio para hacer creer al portero que estamos en una crisis, que viene alguien con una pistola pegango tiros. El portero me deja entrar: objetivo conseguido. Es decir, he generado un estado de excepción, para aprovecharme de que el portero puede hacer lo que quiera en esos momentos, instándole a tomar una decisión que me beneficia (he entrado con zapatillas!).

Con el ordenador es lo mismo. Puedo hacer un programa que prepare un estado de excepción tal, que cuando el sistema operativo tome el control para resolverlo, haga lo que yo quiera (y no puedo normalmente, entrar con zapatillas) aprovechándome de su omnipotencia.

Mola, ¿no? Imagina las posibilidades. Escríbeme un par de ceros en la próxima nómina, envíame por email ese informe clasificado de alto secreto, envía tropas al sudeste de la casa de tu ex, lanza la bomba atómica... ah! y luego bórrate entero a ti mismo, claro.

- Vale, vale, menudo rollo. Creo que lo he pillado. Y esto con Star Wars, ¿qué? - preguntaréis de nuevo.
- Gracias pequeño padawan, excelente pregunta. - diré a mi vez.

Si recordáis la película, el Episodio III es aquél en el que Anakin Skywalker da paso a Darth Vader. Probablemente sea la más oscura de todas (salvo, tal vez, el nuevo Episodio VII...) y es la favorita de Aysha (mi hija). Con todo lo que el final del proceso de conversión implica, casi pasa desapercibido un hacking en toda regla a lo ya descrito en este post con el portero de discoteca.

El senador Palpatine, una vez elevado a Canciller de la República, aprovecha un estado de excepción generado deliberadamente, la guerra, para declararse a sí mismo Emperador, y apropiarse de una serie de poderes sin control del Senado en aras de una mejor gestión de dicha crisis.

Es decir, pasándolo a limpio. A sabiendas de que un estado de excepción (viene alguien pegando tiros en la discoteca, un error de programación deliberado en un ordenador, una guerra) va a modificar las reglas del juego, en particular la del control del poder y encontrarse en una situación de omnipotencia dedicada a una situación muy concreta (solventar la crisis), se pone a sí mismo en tal situación para, una vez en ella, hacer lo que se le ponga en las pelotas.

Hacking de libro.

- Y si tenías esto en la cabeza desde hace tanto, ¿por qué lo escribes ahora? - volveréis a preguntar.
- Porque lo de Turquía se le parece mucho, mucho, mucho - diré yo - y por tanto es más necesario que nunca escribirlo.