Me paso a BSD :P

Mira, ya sabemos qué condiciones se tienen que dar para que yo escriba en mi blog:

  1. Tiene que pasar algo
  2. Tengo que tener ganas de comentarlo
  3. Me tiene que sobrar tiempo para escribir el post
  4. El motor del blog tiene que ser mínimamente usable

Fácil! xD

Los que me conocéis sabréis que hace tiempo que uso GNU/Linux. Hace un cuarto de siglo estaba en BULMA, y Microsoft era, más o menos, el demonio :D

Ahora Linux no necesita a nadie que lo defienda o que lo promocione, en todos los servidores de todas las empresas el que no usa Windows, usa GNU/Linux. Y se usa mucho GNU/Linux. Hala, ya ha quedado claro que me sé lo de GNU/Linux. A partir de aquí diré Linux.

Entonces lo de BSD a qué viene? Bueno, por una parte uso todos los días Linux para trabajar y en el tiempo libre apetece un cambio O:) Pero por otra parte, Linux en estas últimas décadas se ha comercializado y complicado mucho. Vamos por partes, con un ejemplo de cada cosa.

Las respuestas a las últimas preguntas son intrínsecamente jodidas en el open source, pero tampoco hay que perder de vista que en el código cerrado hay todavía menos ojos mirando y un ataque de esta categoría habría pasado desapercibido en muchos sitios. Lo que sí se puede hacer es simplificar (vigilar mil líneas de código es más fácil que vigilar un millón) y auditar y ser paranoico. Eso es prácticamente la descripción del proyecto OpenBSD! :D

Voy a hacer un resumen de la historia de la backdoor de liblzma-systemd-ssh para Linux porque es divertido, aunque está mejor explicado y detallado en el enlace de arriba. Todo empezó hace como dos años cuando el proyecto de la liblzma iba lento aceptando parches porque el responsable tenía problemas de salud mental, según explicó él mismo en un email. Algo totalmente comprensible y respetable, más cuando el responsable del proyecto lo hace por afición, como se hace en tantos otros proyectos open source. Algunas cuentas, en perspectiva probablemente falsas, presionaron para que se le diera “algún tipo de solución”, y eso casualmente vino acompañado del ofrecimiento de un voluntario muy listo, el amigo Jia, que se ha visto que tenía mala intención, y seguramente más que una persona será un grupo de personas pagado por un estado, si es que algún dia se llega a saber.

Pues el amigo Jia estuvo haciendo contribuciones los dos últimos años a un proyecto que por la dichosa complicación de todo que tan poco me gusta se usa en todas partes muchas veces sin saberlo. En particular es una dependencia de systemd, que ya filosóficamente me parece feo, pero cuando tenemos en cuenta lo grande y complicado que es y los problemas de seguridad que amplifica, es para mear y no echar gota. Pues lo usan todas las distribuciones grandes de Linux. De hecho apareció una distribución bastante marginal llamada Devuan que básicamente es Debian sin systemd.

Lo que se ha descubierto es que hace como un mes el amigo Jia generó versiones de la liblzma con cosas feas. En particular en los tarballs (no en git directamente) en unas macros M4 bastante oscuras metió código bastante ofuscado (vamos, que lo hizo con toda la intención) que si se dan varias condiciones (compilación para intel/amd, distribución deb o rpm, glibc en lugar de musl... todo para tener un entorno más controlado) se cogían binarios que sí estaban en GitHub como aparentes ficheros de prueba de lzma, y los inyectaba en la librería.

Como las distribuciones de Linux mayoritarias se han pasado a la secta del systemd, no te ponen el OpenSSH tal cual, bien auditado por la gente muy seria y paranoica de OpenBSD, sino que lo parchean para integrarlo más con systemd. Because reasons. Con lo cual el binario de sshd tiene como dependencias, entre otras, libsystemd y transitivamente liblzma.

Pues el maravilloso código troyaneado de las últimas versiones de liblzma lo sabe, y de una manera bastante ingeniosa cuando se encuentra en esa situación privilegiada intercepta llamadas de RSA que se utilizan durante la autenticación de SSH, con el objeto de... todavía se está analizando, pero seguramente con el objeto de dar un shell o ejecutar código arbitrario. A las órdenes de cualquiera que sepa qué decirle al sshd para que la función falsa de RSA haga cositas.

Esto se detectó cuando las versiones malas llevaban un mes publicadas, se dio cuenta alguien que notó que las conexiones SSH pasaban de tardarle 0.3 segundos a 0.8 segundos o algo así, y encima tenía los conocimientos suficientes como para analizar todo esto, escribir un primer email explicándolo, y en general levantar la liebre. Para que luego digan que los que somos especialitos no valemos para nada.

Al ser tan reciente la versión, no llegó a ninguna distribución estable y solo afectó a testings, unstables, alphas y demás. GitHub ha bloqueado el proyecto afectado, las cuentas afectadas, y ahora todo el mundo se lo mira todo con lupa. A ver qué más sale. Porque insisto, el amigo Jia estuvo DOS AÑOS llevando el proyecto xz, y a saber cuántos más habrá.

Ah, y otro detalle entrañable es que, con un par, el amigo Jia en calidad de responsable de un proyecto tan respetable les coló al proyecto oss-fuzz de Google unas pull requests preciosas “arreglando fallos” en las que en realidad evitaba que se detectaran sus guarradas! Un crack. Unos cracks todos los implicados.

Que son cosas que pueden pasar? Si. Que pasan más si hay un montón de código barroco que hace muchas cosas? Pues también.

Yo tengo unos pocos VPS por el mundo para mis cosas. Pequeños y poco importantes. Pero los tengo para que me den alegrías, no sustos. Los tenía con CentOS, que luego pasé a Rocky Linux, y luego me quedó claro que todo lo de Red Hat no lo iba a tocar ni con un palo nunca más, siempre que pudiera elegir, así que tenía pensado poner Debian, porque Ubuntu Server tampoco me gusta técnicamente la dirección en la que va.

Pero ahora, puestos a cambiar, me he dicho... y si simplifico de verdad? Así que me he pasado a OpenBSD. FreeBSD es más amigable y mayoritario, NetBSD soporta más arquitecturas. OpenBSD está hecho por gente que se ha mudado a Canadá porque no le gustaba la legislación americana sobre criptografía xDDD

No es una locura tan grande como parece, aunque yo siempre he seguido los diferentes BSDs porque me gusta la filosofía UNIX, así que la curva de aprendizaje para mí habrá sido casi cero porque ya lo conocía. Y en cuanto a tamaño de la comunidad, teniendo en cuenta que todas las distribuciones grandes de Linux pecan de lo mismo... las distribuciones de Linux que me parecen técnicamente atractivas resulta que son casi más minoritarias que los BSDs.

Ah, y también me he cambiado de arquitectura de hardware, evidentemente x86_64 / amd64 / x64 o como queráis llamar a Intel / AMD, sigue siendo muy mayoritario y por tanto un objetivo principal. Así que... ARM de 64 bits, que te da más cores por menos dinerito :P

Hala. Ya me he quedado a gusto. O me he cansado. Lo que sea. Hasta aquí llego hoy. A ver con qué os sorprendo la próxima vez que tenga tiempo y ganas, tal vez este mismo 2024, que todavía es Marzo xD

#castellano #BSD #Linux