Los ciberataques masivos comenzaron el 21 de agosto; el panorama completo de lo ocurrido se conoció apenas ahora.
En el ecosistema de telefonía IP se detectó y empezó a explotarse activamente una vulnerabilidad en FreePBX — la comunidad notó comprometimientos masivos ya el 21 de agosto de 2025, y luego en el foro empezaron a aparecer los mismos síntomas y huellas ajenas. Los investigadores de watchTowr Labs confirmaron, que se trata de un ataque remoto sin autenticación, relacionado con el módulo comercial Endpoint y un error en el manejo del autoload de clases.
Al problema se le asignó el identificador CVE-2025-57819. FreePBX es una interfaz web para Asterisk, que utilizan desde entusiastas domésticos hasta proveedores de servicios y sistemas corporativos, por lo que las consecuencias afectan no solo a los paneles internos, sino también al acceso a las llamadas, al correo de voz y a las grabaciones de conversaciones.
La primera señal de alarma, el 25 de agosto, fueron las caídas masivas de la interfaz con un error de PHP sobre la falta de la clase Symfony. Al día siguiente, uno de los administradores mostró el archivo file.clean.sh que apareció de forma repentina en el servidor. El script recorría los registros en "/var/log/*", limpiaba selectivamente líneas donde podían quedar menciones a web shells y nombres de servicio, y luego se eliminaba a sí mismo. Esa limpieza de registros es un signo típico de postexplotación, cuando los atacantes borran huellas y complican el análisis del incidente.
watchTowr desplegó un sensor de FreePBX completamente rastreable y comparó el comportamiento antes y después de las correcciones. Se descubrió que la entrada directa al código vulnerable está dentro del módulo Endpoint, y que la combinación de la ruta /admin/ajax.php y el mecanismo de autoload de clases desempeña un papel decisivo. En el código fuente de FreePBX existe una comprobación class_exists sobre el valor del parámetro module, y con la configuración estándar de autoload de PHP esta llamada pasa la cadena al autoloader personalizado fpbx_framework_autoloader.
Si se proporciona un módulo del tipo "FreePBX\modules\endpoint\ajax", el autoloader construye la ruta "/admin/modules/endpoint/ajax.php" e incluye simplemente el archivo correspondiente — y ello antes de la comprobación de sesión. Así se ejecuta código del módulo sin iniciar sesión, y a continuación entra en juego un fallo de validación en Endpoint: una inyección SQL en los parámetros del handler ajax permite manipular la base de datos de FreePBX.
En la práctica, los atacantes primero creaban un administrador oculto "ampuser" — esto se confirma con las solicitudes de honeypot capturadas, donde en el parámetro brand se inyectaba una operación INSERT en la tabla ampusers. Después, para pasar del acceso a la base de datos a la ejecución de comandos, añadían una entrada en la tabla cron_jobs con la programación estándar "* * * * *", indicando la carga útil en el campo command — de ese modo el código se ejecutaba cada minuto en nombre de las utilidades del sistema de FreePBX. watchTowr reprodujo esta cadena en laboratorio y, para comprobar los rastros, publicó un generador de artefactos de detección que intenta sucesivamente escribir una web shell vía cron o añadir un nuevo usuario.
Los desarrolladores de FreePBX respondieron rápidamente y recomendaron cerrar temporalmente la interfaz administrativa por listas de IP o por firewall, así como instalar actualizaciones fuera de calendario para el módulo Endpoint. Para FreePBX 16/17 se propuso el comando "fwconsole ma downloadinstall endpoint --edge", para PBXAct 16 — "--tag 16.0.88.19", para PBXAct 17 — "--tag 17.0.2.31".
En la descripción del incidente, el equipo de FreePBX indicó por separado que desde el 21 de agosto de 2025 un tercero comenzó a dirigirse a sistemas de las versiones 16 y 17 accesibles desde internet sin la filtración adecuada, y tras el acceso inicial la cadena de pasos otorgaba privilegios hasta root. WatchTowr subraya que la corrección del módulo cierra la inyección SQL, pero la causa raíz relacionada con el autoload en el núcleo aún requiere reconsideración, ya que la conexión preautenticación de archivos ".php" individuales dentro de "admin/modules" sigue siendo una vía accesible.
Además, el equipo recordó que en primavera ya había informado a FreePBX sobre una inyección de comandos postautenticación CVE-2025-55211, cuya publicación se retrasó más allá de la ventana de divulgación estándar. En conjunto esto dibuja un panorama desfavorable: complementos comerciales protegidos por ionCube se combinan con la vulnerable combinación de enrutamiento y autoload, y los atacantes convierten rápidamente el acceso al panel en espionaje de la telefonía y en instalación persistente en la infraestructura.
A la defensa le quedan medidas básicas: segmentación y filtrado del acceso a la administración, instalación rápida de parches de módulos, control de integridad de los directorios web "/admin/modules" y auditoría de la base de datos en busca de entradas inesperadas en ampusers y cron_jobs, así como la búsqueda de rastros del trabajo de .clean.sh en los registros del sistema.