GNU / Linux,  Hacking,  Tech

El hackeo del siglo

Estuvimos cerca, muy cerca, de vivir el hackeo del siglo. De haberlo conseguido, el o los atacantes habrían cambiado la Internet que conocemos. El caso es fascinante. No solo por las implicaciones que pudo tener. También lo es por lo meticulosa y metódica que fue la operación. Una acción diáfana e intrépida solo descubierta por accidente.


Contexto.

El hackeo del sigloEn días pasados se descubrió una vulnerabilidad crítica (10/10) en el componente XZ Utils presente en muchas distribuciones GNU/linux. Esta vulnerabilidad, ahora conocida como CVE-2024-3094, permite al atacante evadir la autenticación en SSH y acceder al sistema afectado. Hasta aquí parece una simple puerta trasera pero es mucho más grave que eso.

La gravedad radica en que el código malicioso afecta sistemas x86_64 basados en el kernel de Linux y la biblioteca Glibc C que incluye sshd con libsystemd para admitir el mecanismo sd_notify. Lo grave de esto, es que afecta a las distribuciones Debian y RedHat, las más usadas del mundo.

De haber conseguido que este backdoor se incluyera en las versiones estables de estas distribuciones, se habría puesto en peligro la computación en la nube, la banca, la industria, los gobiernos e infinidad de servidores dedicados a centenares de propósitos. No tengo dudas de que este habría sido el hackeo del siglo, como tampoco tengo dudas de que lo seguirán intentando.


¿Cómo se hizo?

El hackeo del sigloEl paso a paso de esta fallida operación también es fascinante. Esta historia comienza en el 2021 cuando se crea la cuenta JiaT75 (Jia Tan) en GitHub. Nadie sabe si JiaT75 era una persona, un colectivo o un gobierno. Teniendo en cuenta la envergadura de la misión, supongo que nunca lo sabremos.

Jia Tan se infiltró entre los desarrolladores que mantienen el proyecto XZ Utils y comenzó a colaborar con ellos. Primero, para ganar la confianza, hizo pequeñas contribuciones. Con el tiempo, se involucró en el soporte de ifunc o GNU Indirect Function Support.  En julio de 2023, Jia Tan envió una pull request que es una solicitud que un colaborador hace al propietario de un software para que incorpore algunos cambios propuestos.

Al parecer, Jia Tan contó con ayuda para presionar la inclusión de sus aportes en el proyecto. Otras cuentas, posiblemente cómplices (o de él mismo), se quejaban constantemente de las demoras en las actualizaciones de XZ. Su mantenedor principal, Lasse Collin, cedió a la presión social y convirtió a Jia Tan en co-mantenedor del proyecto.

Uno de los cambios estaba en la librería encargada de hacer el fuzz testing en XZ Utils. Con esto, Jia Tan buscaba modificar el fuzz para que no detectara los cambios maliciosos introducidos —por él mismo— en ifunc. Él mismo auditaba su obra. No sé si admiro más su genialidad técnica o su metodología y su paciencia.

En febrero de 2024, con toda la confianza ganada, Jia Tan consigue que sus aportes sean incluidos. Las versiones 5.6.0 y 5.6.1 son liberadas con el backdoor incorporado y el, o los atacantes, ya puede/n explotar la vulnerabilidad en los sistemas mediante SSH. Tras casi 3 años de paciente hacking había/n alcanzado su objetivo.


El descubrimiento.

El hackeo del sigloSi la historia del que pudo ser el hackeo del siglo es asombrosa, la historia de su descubrimiento no lo es menos. El protagonista de esta parte de la historia es Andres Freund, un ingeniero de software que trabaja para Microsoft. Freund estaba trabajando en PostgreSQL en su equipo Debian (sí, trabaja en Microsoft pero sabe que Windows es mierda) y notó que el acceso SSH era más lento de lo habitual. Lo más curioso de esto es que el retraso era de 500 ms. ¡500 milisegundos! Eso fue suficiente para que Freund sospechara que algo estaba mal y comenzara a halar el hilo.

Una vez descubierto el prodigio, Freund informó a las compañías quienes a su vez se pusieron manos a la obra para corregir el entuerto. Un retraso de medio segundo, y la intuición de un curtido programador, nos salvaron de lo que pudo ser el hackeo del siglo.

Ahora hay muchos tratando de descifrar el enigma de quién o quiénes eran Jia Tan. Creo que una operación tan ambiciosa difícilmente puede ser realizada por un individuo ad hoc. Tras esa paciencia de cazador y esa experticia (unos 6.000 cambios de código) debe haber ingentes recursos económicos. Ese tiempo y esos recursos solo los tienen los gobiernos y, siendo así, dudo que algún día lo sepamos.