FrankenPHP 1.12.5: dos fugas de seguridad corregidas
En pocas palabras: FrankenPHP 1.12.5 es un security release que corrige dos vulnerabilidades ya divulgadas: la welcome page de las imágenes Docker exponía variables de entorno y en worker mode se filtraba el session ID entre requests. Actualizá ya, sobre todo si usás las imágenes Docker oficiales.
FrankenPHP 1.12.5 es un security release que corrige dos vulnerabilidades ya divulgadas: una fuga de información en la página de bienvenida por defecto de las imágenes Docker y una filtración de session ID entre requests en modo worker. El equipo de FrankenPHP recomienda actualizar a todos los usuarios, y con urgencia si corrés las imágenes Docker oficiales o la extensión de sesiones como módulo compartido.
En 30 segundos
- Dos vulnerabilidades divulgadas: fuga de datos en la welcome page de Docker y filtración de session ID en worker mode.
- Riesgo Docker: imágenes derivadas sin su propio index.php exponían variables de entorno (o sea, tus secretos).
- Fix concreto: las imágenes ya no sirven
/app/public/index.phppor defecto. - Bonus: incluye varios crash y hang fixes en worker mode y en la capa CGI.
- Acción: actualizá ya, sobre todo si usás las imágenes oficiales o la extensión de sesiones como módulo compartido.
FrankenPHP es un servidor de aplicaciones PHP moderno escrito en Go y construido sobre el servidor web Caddy. Corre PHP como parte del propio servidor (no como proceso aparte tipo PHP-FPM), soporta modo worker para mantener la app en memoria entre requests y viene empaquetado como binario único o como imagen Docker oficial. La versión 1.12.5 es una release de seguridad, no de features.
¿Por qué salió FrankenPHP 1.12.5 y quién tiene que actualizar?
FrankenPHP 1.12.5 salió como respuesta directa a dos vulnerabilidades ya divulgadas. Según el anuncio oficial en los releases de GitHub, “todos los usuarios deberían actualizar, especialmente cualquiera que corra las imágenes Docker oficiales o la extensión de sesiones como módulo compartido”. Traducido: si estás en producción con Docker, esto no es opcional.
El release no trae funcionalidades nuevas. Es puro parche de seguridad más una tanda de correcciones de estabilidad. Eso ya te dice el tono: no es una actualización para probar cosas lindas, es para tapar agujeros. Cubrimos ese tema en detalle en pipelines de CI/CD para deployments seguros.
Ojo con un detalle temporal: FrankenPHP 1.12.6 (que salió luego) corrigió un crash adicional en HTTP/2 relacionado con frankenphp_finish_request(). Si vas a tocar la versión de todas formas, mirá si te conviene saltar directo a la 1.12.6 para llevarte los dos paquetes de fixes de una.
¿Cuáles son las dos vulnerabilidades de FrankenPHP 1.12.5?
FrankenPHP 1.12.5 corrige una fuga de información en la página de bienvenida por defecto de Docker y una filtración de session ID entre requests en modo worker. Las release notes las describen como “dos vulnerabilidades divulgadas” y no publican números de CVE en el texto del anuncio, así que acá no te voy a tirar un identificador que no está confirmado. Lo que sí está claro es qué hace cada una.
| Vulnerabilidad | Dónde | Qué expone | A quién afecta |
|---|---|---|---|
| Information leak en welcome page | Imágenes Docker por defecto | Variables de entorno, directivas, versiones | Imágenes derivadas sin su propio index.php |
| Cross-request session ID leak | Modo worker | Session ID de un request a otro | Apps con sesiones en worker mode |

Son dos problemas distintos con un factor común: los dos filtran datos que no tendrían que salir nunca del proceso. Te puede servir nuestra cobertura de automatizar deployments con Jenkins.
¿Por qué la página de bienvenida de Docker filtra variables de entorno?
Ponele que armás tu imagen a partir de la oficial de FrankenPHP y te olvidás de copiar tu propio index.php. Antes de la 1.12.5, esa imagen servía por defecto /app/public/index.php, la página de bienvenida. El problema es que esa página mostraba información del entorno: variables de entorno (que muchas veces guardan secretos como credenciales de base de datos o tokens), directivas de configuración y versiones.
¿Y qué tiene de grave mostrar una página de bienvenida? Que en un entorno mal configurado esa página quedaba accesible en producción, filtrando exactamente lo que no querés que un atacante vea. El fix es directo: en 1.12.5 las imágenes Docker ya no sirven /app/public/index.php por defecto.
- El disparador: heredar de la imagen oficial sin reemplazar el index.
- El dato expuesto: secretos que suelen vivir en variables de entorno.
- El contexto peor: entornos compartidos o expuestos a internet sin un WAF adelante.
¿Cómo afecta el session ID leak en modo worker?
El modo worker mantiene el proceso PHP vivo entre requests para no pagar el costo de arrancar la app cada vez. Eso es lo que le da velocidad a FrankenPHP. El tema es que, si el estado no se limpia bien entre un request y el siguiente, algo de un usuario puede quedar colgado para el próximo. Eso es lo que pasaba con el session ID. Lo explicamos a fondo en soportar múltiples idiomas en FrankenPHP.
La release lo describe como “cross-request session ID leak in worker mode”. En criollo: el identificador de sesión de un request podía filtrarse hacia otro. En una app multi-inquilino o con datos sensibles, un session ID que se cruza es un potencial secuestro de sesión. Por eso el aviso puntual para quien usa la extensión de sesiones como módulo compartido.
¿Quién está en riesgo? Matriz de impacto
No todos corren el mismo peligro. Estas son las prioridades según cómo tengas montado FrankenPHP.
| Perfil | Vulnerabilidad relevante | Prioridad |
|---|---|---|
| Imágenes Docker oficiales / derivadas sin index propio | Welcome page leak | Urgente |
| Extensión de sesiones como módulo compartido | Session ID leak | Urgente |
| App con sesiones en worker mode | Session ID leak | Alta |
| Binario único, sin worker ni Docker oficial | Ninguna directa (pero llevate los crash fixes) | Media |
¿Cómo actualizo FrankenPHP a 1.12.5 en Docker?
Actualizar es cambiar la versión en tu Dockerfile, reconstruir la imagen y verificar. Si tenés tu app corriendo en un VPS o servidor cloud, este es el momento de aprovechar y pasar el deploy por un entorno de staging antes de tocar producción. Para hosting y servidores en Argentina, donweb.com te sirve para montar el entorno de pruebas sin complicarte.
- Fijá la versión en el FROM: apuntá tu imagen base a la 1.12.5 (o directamente a la 1.12.6 si querés el crash fix de HTTP/2).
- Reconstruí: corré tu build habitual para regenerar la imagen con el binario nuevo.
- Probá en staging: levantá el contenedor y verificá que la app arranca y que las sesiones se comportan bien.
- Verificá la versión: chequeá que el binario reporte 1.12.5 antes de dar por cerrado.
- Recién ahí, producción: promové el cambio cuando staging esté verde.
¿Qué otros fixes trae FrankenPHP 1.12.5 seguridad Docker?
Además de las dos vulnerabilidades, FrankenPHP 1.12.5 incluye “una tanda de crash y hang fixes en worker mode y en la capa CGI”, según las release notes. No están detallados uno por uno en el anuncio, pero el mensaje es claro: la estabilidad mejora como beneficio secundario de actualizar. Relacionado: ejecutar aplicaciones sin dependencias externas.
¿Vale actualizar solo por estos crash fixes, aunque no uses Docker? Sí. Un proceso que se cuelga en producción te arruina la noche igual que un leak. Llevarte las dos cosas en una sola bump de versión es la jugada obvia.
Errores comunes al actualizar
- Asumir que estás a salvo porque tu app funciona: el welcome page leak aparece justo cuando falta tu index, no cuando la app anda. Un deploy que “funciona” puede estar exponiendo la página por defecto en otra ruta.
- Actualizar producción directo: saltarte staging con un release que toca el manejo de sesiones es pedir problemas. Probá el comportamiento de sesión antes.
- Olvidarte del Dockerfile custom: si tenés una imagen derivada, revisá que no estés copiando o dependiendo del index de bienvenida viejo.
Checklist de seguridad después de actualizar
- Auditá tu Dockerfile: confirmá que tu imagen sirve tu propio index y no la página de bienvenida.
- Revisá /app/public: asegurate de que no queden archivos con secretos ni un index.php de ejemplo expuesto.
- Testeá las sesiones en worker mode: probá que un usuario no vea el estado de otro entre requests.
- Mirá los logs: vigilá crashes y hangs para confirmar que los fixes de estabilidad hicieron efecto.
- Verificá la versión activa: que el binario en producción reporte 1.12.5 o superior.
Qué está confirmado y qué no
- Confirmado: 1.12.5 es una security release que corrige dos vulnerabilidades divulgadas (welcome page leak y cross-request session ID leak).
- Confirmado: las imágenes Docker ya no sirven
/app/public/index.phppor defecto. - Confirmado: incluye crash y hang fixes en worker mode y CGI.
- No confirmado en el anuncio: los números de CVE de cada vulnerabilidad no aparecen en el texto del release.
- No detallado: el listado exhaustivo de cada crash fix individual.
Preguntas Frecuentes
¿Qué es FrankenPHP?
FrankenPHP es un servidor de aplicaciones PHP moderno escrito en Go y construido sobre Caddy. Corre PHP dentro del propio servidor web y ofrece un modo worker que mantiene la app en memoria entre requests para ganar velocidad. Se distribuye como binario único o como imagen Docker oficial.
¿Necesito actualizar FrankenPHP urgentemente?
Sí, si corrés las imágenes Docker oficiales o usás la extensión de sesiones como módulo compartido. El equipo de FrankenPHP recomienda que todos los usuarios actualicen a 1.12.5, y marca esos dos perfiles como prioritarios por las vulnerabilidades divulgadas.
¿Qué información filtra la página de bienvenida de Docker?
Filtra variables de entorno (que suelen contener secretos como credenciales), directivas de configuración y versiones. El problema aparecía en imágenes derivadas de la oficial que no reemplazaban su propio index.php, dejando expuesta la página por defecto.
¿Qué es el cross-request session ID leak en worker mode?
Es una filtración por la que el identificador de sesión de un request podía cruzarse hacia otro request en modo worker. Como el modo worker reutiliza el proceso PHP entre peticiones, un estado mal limpiado exponía el session ID a un usuario distinto, con riesgo de secuestro de sesión.
¿FrankenPHP es gratis?
Sí, FrankenPHP es open source y de uso gratuito, alojado en el repositorio oficial de PHP en GitHub. No hay costo de licencia para usarlo en producción, ni en su forma de binario ni en las imágenes Docker.
Conclusión
FrankenPHP 1.12.5 no es un release para saltear. Tapa dos fugas concretas (variables de entorno vía la welcome page de Docker y session IDs que se cruzan en worker mode) más un lote de crash fixes que mejoran la estabilidad. Si estás en Docker oficial o usás sesiones como módulo compartido, actualizá hoy. Lo demás es rutina: bumpeás la versión, probás en staging, verificás sesiones y logs, y recién ahí vas a producción. Y si vas a tocar de todas formas, mirá la 1.12.6 para llevarte también el fix de HTTP/2.






