Ayer tuve sobre el Prohibición de fĆ”bulas y mitos Tan pronto como la tinta estaba seca, surge una historia que la completa con cierta ironĆa.
El mismo modelo que Washington acababa de sacar de la red estaba recientemente ocupado rastreando una falla de seguridad de casi 30 aƱos en uno de los programas proxy mƔs utilizados del mundo.
Publicado con un guiƱo en calif.io - Conoce Calamares sangrados.
¿Qué es Calamar de todos modos?
Squid es un proxy web ampliamente utilizado que se puede encontrar principalmente en redes corporativas, escuelas y dondequiera que se filtre, almacene en caché o supervise el trÔfico. Cualquiera que alguna vez se haya sentado en la oficina o en el Wi-Fi de un aeropuerto y haya notado que ciertas pÔginas estÔn bloqueadas, a menudo hay calamares detrÔs. Esta cosa es una institución.
Y como es a veces el caso de las instituciones: Debajo de la superficie bien cuidada a veces duerme el código que viene de otro momento.
El error: Un viaje atrƔs en el tiempo hasta 1997
El nĆŗcleo de Squidbleed se encuentra en el analizador FTP de Squid, sĆ, FTP, el protocolo que la mayorĆa de los navegadores modernos eliminaron de su repertorio hace aƱos. Sin embargo, Squid todavĆa soporta FTP por defecto.
El problema: FTP no tiene un formato estandarizado legible por mÔquina para los listados de archivos. Cada servidor de alguna manera entrega esto como un bloque de texto, y Squid tiene que analizar este revoltijo. Un compromiso de 18 de enero de 1997 (Para los lectores mÔs jóvenes: ”es mÔs antiguo que Google!) ha incorporado un tratamiento especial para los servidores FTP de NetWare, que se establecen entre la marca de tiempo y el nombre de archivo cuatro en lugar de un espacio.
La solución entonces: Un bucle que omite los espacios en blanco hasta que comienza el nombre del archivo.
El problema con esto: strchr() una función de biblioteca estÔndar C devuelve un hit incluso si se utiliza el terminador nulo \0 Estoy buscando. Esto significa: Si ningún nombre de archivo sigue después de la marca de tiempo, el puntero simplemente continúa mÔs allÔ del final del búfer. Y asà sucesivamente. Y asà sucesivamente. Hasta que encuentre datos que ya no forman parte de la lista FTP.
Lo que sucede a continuación es el problema del mismo nombre: El proxy lee datos de pila extranjeros y los envĆa de vuelta al atacante como un supuesto nombre de archivo.
¿Demasiado complejo? También es mÔs fÔcil:
Vale, imagĆnate que eres un bibliotecario en una biblioteca enorme. Tu trabajo es conseguir libros para tus visitantes. Alguien entra y dice: «”Por favor, toma el libro del estante 7!Ā» AsĆ que ve, hazlo, listo. Este es Calamar: Un intermediario que trae cosas para los demĆ”s.
El cuadro de notas
En esta biblioteca tambiĆ©n hay un viejo cuadro de notas para servidores FTP. FTP es un sistema tan antiguo para transferir archivos. ImagĆnatelo como un archivador muy, muy viejo de los aƱos 80, que ya nadie usa, pero que todavĆa estĆ” en la esquina porque nadie lo ha limpiado. Cuando alguien pregunta «¿quĆ© hay en este archivador?Ā», Calamar va y lee las etiquetas de las carpetas y las escribe en una nota.
El problema con la nota
Ahora viene el error. Squid lee la etiqueta de una carpeta, por ejemplo, Ā«Fecha: 16 de enero, nombre del archivo: ā¦Ā» y, a continuación, busca el nombre del archivo. Utiliza un pequeƱo ayudante llamado strchr, que dice: Ā«ContinĆŗa hasta que encuentres algo que no sea un espacioĀ».
Pero, ¿qué sucede si no hay un nombre de archivo después de la fecha? El sentido común dice: «Entonces deja de mirar». strchr Pero no lo creas. Sigue buscando. MÔs allÔ de la nota. MÔs allÔ de la cartera. MÔs allÔ del archivador. Sigue leyendo lo que estÔ mal.
¿Qué hay de malo en eso?
En la analogĆa de la biblioteca: Junto a ella estĆ”n las notas de otros visitantes. Documentos en los que dice: "El usuario Max inició sesión con la contraseƱa XY hoy" o "El usuario Lisa acaba de ingresar su nĆŗmero de tarjeta de crĆ©dito". Squid lee todo esto porque strchr no dejó de buscar y luego lo devolvió como un Ā«nombre de archivoĀ» a la persona que lo pidió.
¿Qué puede conseguir un atacante con él?
Squid recicla los bĆŗferes de almacenamiento interno. Un bĆŗfer de 4KB que solo contenĆa la solicitud HTTP de otro usuario del mismo proxy puede reutilizarse para la lista FTP poco despuĆ©s sin eliminar el contenido antiguo. La sobrelectura luego lee exactamente estos restos y los envĆa al atacante.
En lenguaje sencillo: Cabeceras de autorización, contraseƱas, claves API. Cualquier otro usuario del mismo proxy simplemente envĆa a travĆ©s de la lĆnea. Oops (en inglĆ©s).
Las limitaciones son reales: Solo HTTP no cifrado se ve afectado (HTTPS se ejecuta como un túnel CONNECT opaco a través del proxy), y el atacante necesita un servidor FTP al que el proxy pueda llegar. Sin embargo, el puerto TCP 21 estÔ incluido en el ACL estÔndar de Squid. No se requiere esfuerzo de configuración, siempre y cuando pueda ejecutar un servidor FTP en algún lugar.
¿Quién encontró esto?
Aquà estÔ la parte que particularmente me molesta como alguien que escribió sobre la bandera de Fable ayer. El equipo de investigación de seguridad de Calif.io tiene Vista previa de Claude Mythos (es decir, el modelo que fue prohibido por Washington poco después) ya fue enviado al código fuente de Squid en abril. Con la instrucción de examinar el código de mÔquina de estado FTP con mÔs detalle.
El modelo encontró el error casi de inmediato y lo justificó con referencia al estĆ”ndar C11: strchr(w _space, '\0') Devuelve un puntero no NULL por especificación porque el terminador nulo es parte de la cadena. Un detalle que nadie parece haber notado en casi 30 aƱos de revisión de código, reescrituras y auditorĆas.
Por cierto, la solución es muy simple, dos comprobaciones cero adicionales antes de la strchr-convocatoria:
- while (strchr(w _space, *copyFrom)) + while (*copyFrom && strchr(w _space, *copyFrom)))
Un dĆa de trabajo para los mantenedores. Casi tres dĆ©cadas en la oscuridad.
QuƩ hacer ahora
QuiĆ©n dirige Calamar: Desactivar FTP, A menos que lo necesites activamente. Chrome abandonó el soporte FTP hace aƱos, y Firefox tambiĆ©n lo hizo. Aquellos que no envĆan trĆ”fico FTP legĆtimo a travĆ©s de su proxy (sospechan cautelosamente que 2026 serĆ” el mĆ”s) simplemente pueden desactivar la función y eliminar toda la superficie de ataque.
Adenda: Para todos los demĆ”s: Calamar 7,6 (Publicado el 8 de junio de 2026) y Calamar 8 Ya contiene el parche. (Gracias Golem.de por informar). El aviso oficial fue publicado el 24 de junio.. Aquellos que todavĆa estĆ”n en versiones anteriores deben actualizar.
La verdadera conclusión
Squidbleed técnicamente no es un RCE que rompe el mundo, ni un milagro de clic cero. Es un montón sobrecargado de impacto situacional. Pero es sintomÔtico de algo que sucede regularmente en el mundo de código abierto: El código que ha estado funcionando durante décadas, ya no es realmente entendido por nadie, y en el que las propiedades sutiles de C se pudren silenciosamente.
Que un modelo de IA de todas las personas ha encontrado este error, a saber, el modelo, que el gobierno de los Estados Unidos poco después clasificó como demasiado peligroso Tiene una cierta calidad. La capacidad de encontrar fallas de seguridad es aparentemente exactamente lo que preocupaba a Washington. Ya sea que este sea un argumento a favor o en contra de la prohibición, se lo dejo a usted.
La respuesta se encuentra en algĆŗn lugar entre las lĆneas de ayer.