Home Especiales Tecnogeek Especial Tecnogeek: El backdoor de xz/libzma y cómo fue descubierto

Especial Tecnogeek: El backdoor de xz/libzma y cómo fue descubierto

483
1

Posiblemente casi ninguno de ustedes sepa qué es la librería xz/liblzma, pero este mismo servidor, donde se encuentra alojado Tecnogeek.com la utiliza, prácticamente todo servidor con Linux tiene un servicio de SSH, así que casi toda internet se vio afectada.

¿Qué sucedió?

Hace unos años el único programador que mantenía la librería se vio superado por su trabajo, uno que es más bien solitario, nadie lo ayudaba por más que la librería era utilizada por millones de otros sistemas en el mundo. Una “enfermedad” muy común en los proyectos de código libre: la soledad.

Fue entonces cuando un usuario, posiblemente un agente de un estado interesado en vulnerar todos los sistemas Linux del mundo, se ofreció a “ayudarlo”. Pero no fue tan sencillo, decenas de usuarios falsos se dedicaron a atormentarlo para que aceptara la ayuda externa al punto que lograron quebrarlo.

Este nuevo usuario ayuda en el código y poco a poco agrega porciones de código para otro fin, nada llamativo, por lo que nadie lo notó, pero el objetivo de un trabajo de AÑOS fue crear una puerta de entrada para vulnerar todos los sistemas.

El trabajo de ingeniería social para vulnerar el sistema requirió encontrar un mantenedor de código débil, vulnerado por la vida misma, deprimido o desesperado, una acción típica de un espía (por eso se sospecha de un estado participando), pero no sólo eso, además había que lograr esconderlo de los ojos que podrían llegar a escudriñar el código.

Por ende hicieron algo interesante, el código en git tenía una cosa y el tarball con el código a compilar otra con pequeñas modificaciones que, combinadas con los cambios imperceptibles, habilitaban el backdoor. La idea, obviamente, poder obtener acceso mediante SSH de un sistema comprometido.

Toda la orquesta de usuarios falsos ayudó a presionar para que programadores saturados impulsaran la adopción del código no sólo en versiones nuevas de sistemas operativos sino portándolo a versiones más viejas, así entraba como un update de seguridad. Sistemas RedHat y Debian fueron comprometidos.

Pero ¿Cómo lo encontraron?

Hasta aquí podría pasar desapercibido, nadie lo notaría, debe haber muchos otros backdoors en sistemas similares, desde software libre hasta software cerrado porque ¿Quién puede asegurar que no le hacen algo parecido a un programador de bajo nivel en Apple o Microsoft? No lo sabremos nunca.

Pero he aquí lo “genial” de esta historia, un nerd, muy nerd, Andres Freund notó que el login mediante SSH tardaba 0.5ms más de lo habitual en una versión más vieja.

La mayoría de los developers hubiese acusado a su conexión, su propia PC o alguna casualidad, pero Freund no, estaba testeando performance y necesitaba que los tiempos volvieran a los 0.299s habituales en vez de los “nuevos” 0.807s.

Poco a poco auditó el código hasta que dio con las cosas que no deberían haber estado allí, esto lo hizo descubrir, casi de casualidad, el compromiso más grave de xz/libzma de su historia.

Esto afecta al servidor de sshd cuando se realiza un login pudiendo activar el backdoor en ese momento.

Por suerte el tarball sólo había sido incorporado en versiones de Fedora Rawhide 41 y Debian testing, unstable y experimental, es decir, no llegó todavía a los servidores más comunes, pero estuvo a poco, casi nada, de hacerlo.

Si uno utiliza algunas de esas versiones es altamente probable que tenga instalada una versión vulnerada.

¿Cómo afecta esto al código libre?

Hay varias cuestiones aquí. Muchos utilizan este tipo de eventos como excusas para hablar mal del código libre y abierto, diciendo que gracias a semejante apertura los agentes maliciosos, sea estatales o independientes, pueden intervenir y vulnerar sistemas enteros.

Ahora bien ¿Por qué hay un tipo solo manteniendo un sistema crucial? Más allá del chiste (o verdad directa) de XKCD estamos ante uno de los graves problemas que provoca no el código libre sino la intervención de empresas que sólo aportan código para las partes que les interesan.

dependency

Hay cientos de miles de usuarios que mantienen código de bibliotecas de todo tipo, algunas de ellas cruciales, otras no tan importantes, las empresas que ponen mucho dinero en el desarrollo del kernel u otras herramientas sólo lo hacen para mantener lo que les interesa de forma directa.

Todo aquello que ya existe, no les importa, les sirve así.

Por el lado de los developers están los que hacen esto por amor al arte y los que lo hacen por fama, la mayoría busca proyectos llamativos, vistosos, nadie quiere perder su vida en una biblioteca perdida.

No es para nada imposible ayudar en estos proyectos, un ejemplo es la tz database, la base de datos de todos los husos horarios, originalmente mantenida por sólo dos developers, Paul Eggert y Arthur David Olson.

A partir de 2011 la ICANN tomó la responsabilidad de mantenerla y se actualiza constantemente.

El punto es que sólo dos personas se encargaban de actualizar, para todos los sistemas Linux y derivados, los husos horarios de todos los países del mundo, si uno de ellos se equivocaba tu teléfono hubiese confundido el horario de una agenda y todo un país hubiese quedado desfasado una hora o algo semejante. Así de importante es esa simple biblioteca.

El software libre necesita más dinero por un lado, pero también más apoyo humano para mantener el inmenso mundo de código que es, los proyectos privados, casi en un 100%, se sostienen sobre bibliotecas libres en las que no aportan ni un minuto de esfuerzo ¿Es su responsabilidad? a la larga sí.

Es que si algo falla no se puede culpar a ese tipo que tira código una vez a la semana desde su sótano de forma ad honorem, si falla el problema será de una gran corporación que quedará como lo que es: una máquina de explotar pobres y hacer dinero a cambio de nada. El juicio no afectará a ese tipo sino a toda la empresa, es hora de abrir los ojos.

1 COMMENT

  1. […] Posiblemente casi ninguno de ustedes sepa qué es la librería xz/liblzma, pero este mismo servidor, donde se encuentra alojado Tecnogeek.com la utiliza, prácticamente todo servidor con Linux tiene un servicio de SSH, así que casi toda internet se vio afectada. Hace unos años el único programador que mantenía la librería se vio superado por su trabajo, uno que es más bien solitario, nadie lo ayudaba por más que la librería era utilizada por millones de otros sistemas en el mundo. Una […] El backdoor de xz/libzma y cómo fue descubierto – Tecnogeek […]

LEAVE A REPLY

Please enter your comment!
Please enter your name here