Calamares: Error de 29 aƱos encontrado en Squid Proxy Solo del modelo de IA que fue desterrado poco despuƩs

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.