← voltar
CVE-2017-9248criticalsob ataqueCWE-522

CVE-2017-9248

100Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.

ssvc Actcvss 9.8epss 75%
da publicação à arma197 dias
Publicada no NVD3 de jul.
1ª PoC+197d
CISA KEV+1584d
probabilidade de exploração
75%top 1% das CVEs
exploração observada
simCISA + VulnCheck
17 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumo

Falha de criptografia fraca (CWE-522) no Telerik.Web.UI.dll, componente usado por Telerik UI for ASP.NET AJAX e por Progress Sitefinity, permite recuperar a Telerik.Web.UI.DialogParametersEncryptionKey e, a partir dela, a MachineKey da aplicação ASP.NET. Não exige autenticação nem interação do usuário — basta acesso de rede ao endpoint DialogHandler exposto. Importa porque o vazamento da MachineKey abre caminho para forjar ViewState, fazer upload/download arbitrário de arquivos e XSS, e foi efetivamente usada em campanhas reais (inclusive associada ao malware Blue Mockingbird), o que justifica sua entrada no catálogo KEV da CISA.

Detalhamento técnico

O DialogHandler do Telerik UI (Telerik.Web.UI.DialogHandler.aspx/.ashx) recebe um parâmetro 'dp' que contém dados criptografados usados para configurar diálogos internos (ex.: DocumentManager). A criptografia empregada por essa rotina é fraca — o PoC público implementa a operação como um XOR simples entre o texto e a chave, sem autenticação de integridade adequada. Isso permite montar um oracle de erro: o servidor responde com mensagens de erro HTTP distintas dependendo se um byte de chave testado está correto ou não (a mensagem característica observada é 'Index was outside the bounds of the array').

Com esse oracle, um atacante consegue recuperar a DialogParametersEncryptionKey byte a byte via requisições repetidas ao handler, sem qualquer credencial. Como essa chave frequentemente compartilha material ou está ligada à MachineKey da aplicação (usada para proteger ViewState e outros tokens ASP.NET), sua exposição compromete toda a cadeia criptográfica da aplicação — não apenas o subsistema de diálogos do Telerik.

A falha é estrutural na implementação da criptografia do componente, não um erro de configuração isolado: qualquer instalação que exponha o DialogHandler publicamente e não tenha aplicado o patch está vulnerável, independentemente de outras configurações de segurança do site.

Como é explorada

O vetor é rede pura: um cliente HTTP não autenticado envia requisições GET ao endpoint Telerik.Web.UI.DialogHandler com o parâmetro 'dp' manipulado e observa o texto de erro retornado. A ferramenta pública (dp_crypto.py, de Paul Taylor/Foregenix, publicada no Exploit-DB como EDB-ID 43873) automatiza esse processo: testa cada posição da chave contra o conjunto de caracteres base64 (ou todo o espaço ASCII), fazendo dezenas a centenas de requisições por caractere até reconstruir a chave completa.

Com a chave recuperada, o atacante consegue forjar parâmetros 'dp' válidos para o DialogHandler, o que habilita upload e download arbitrário de arquivos através dos componentes de gerenciamento de documentos do Telerik (ex.: DocumentManager) e abre a porta para XSS. Se a MachineKey também for recuperada ou coincidir, o impacto se estende a forjar ViewState e potencialmente encadear com outras falhas de deserialização do .NET para execução remota de código — essa cadeia (leak de chave + deserialização) é o padrão observado em campanhas reais, incluindo a associada ao malware Blue Mockingbird citada pela própria Telerik.

O único pré-requisito real é que o handler esteja acessível pela rede (o que é o padrão em instalações não endurecidas) — não há necessidade de conta, permissão especial ou configuração não padrão além da exposição do endpoint. É por isso que o CVSS AV:N/PR:N/UI:N reflete corretamente o risco: a barreira de exploração é baixa.

Versões

Afetadas
Telerik UI for ASP.NET AJAX: Telerik.Web.UI.dll em versões anteriores a R2 2017 SP1 (2017.2.621) — a Telerik lista faixas específicas afetadas desde Q1 2011 (2011.1.315) até R2 2017 (2017.2.503), com exploração pública demonstrada testada entre 2012.3.1308 e 2017.1.118. Progress Sitefinity: versões anteriores a 10.0.6412.0.
Corrigidas em
Telerik UI for ASP.NET AJAX R2 2017 SP1 (2017.2.621) ou posterior; Sitefinity 10.0.6412.0 ou posterior. Patches pontuais (SecurityPatch_.zip) existem para faixas entre Q1 2013 (2013.1.220) e R2 2017 (2017.2.503) e entre Q1 2011 (2011.1.315) e Q3 2012 SP2 (2012.3.1308), exceto 2011.1.519, 2011.2.915, 2011.3.1305, 2012.1.411 e 2012.2.912, sem patch disponível. Orientação atual do fornecedor (2021): atualizar para R1 2020 (2020.1.114) ou posterior, pois patches isolados para esta CVE não protegem contra vulnerabilidades de deserialização subsequentes (CVE-2019-18935).

Como se proteger

A correção do fornecedor é atualizar Telerik UI for ASP.NET AJAX para R2 2017 SP1 (versão 2017.2.621) ou posterior, e Sitefinity para 10.0.6412.0 ou posterior. Após a atualização (ou aplicação de patch), é obrigatório gerar novas chaves para Telerik.Web.UI.DialogParametersEncryptionKey e para a MachineKey no web.config — trocar apenas a DLL sem regenerar as chaves deixa o ambiente exposto, pois a chave antiga pode já estar comprometida. A Telerik disponibilizou patches específicos (arquivos SecurityPatch_.zip, obtidos via conta telerik.com) para faixas entre Q1 2013 (2013.1.220) e R2 2017 (2017.2.503), e entre Q1 2011 (2011.1.315) e Q3 2012 SP2 (2012.3.1308); algumas versões (2011.1.519, 2011.2.915, 2011.3.1305, 2012.1.411, 2012.2.912) não têm patch disponível por inviabilidade técnica e exigem upgrade direto.

O fornecedor atualizou a orientação em 2021: devido à CVE-2019-18935 (deserialização via JavaScriptSerializer), patches isolados para CVE-2017-9248 não bastam mais — a recomendação atual é atualizar para R1 2020 (2020.1.114) ou posterior, versão que endereça esse conjunto de vulnerabilidades encadeadas.

Se a atualização não for viável no curto prazo, o paliativo real é bloquear o acesso ao Telerik Dialog Handler (Telerik.Web.UI.DialogHandler.aspx/.ashx) via regra de firewall, regra de redirecionamento de URL, ou removendo o handler do web.config/IIS. O custo é funcional: os diálogos internos do RadEditor e RadSpell deixam de funcionar. Não existe mitigação eficaz via WAF genérico contra o oracle de erro, porque a exploração depende de respostas de erro legítimas da aplicação, não de payloads facilmente assinaturáveis.

Como detectar

Procure em logs de acesso web por requisições GET repetidas e em alto volume ao endpoint Telerik.Web.UI.DialogHandler.aspx ou .ashx com o parâmetro 'dp' variando a cada requisição — esse padrão de dezenas a centenas de chamadas sequenciais é característico da técnica de oracle usada para quebrar a chave byte a byte. Respostas HTTP contendo a mensagem de erro 'Index was outside the bounds of the array.' em volume anômalo, vindas do mesmo IP/user-agent, são um indicador forte de tentativa ativa.

Não há uma assinatura de payload único a procurar, já que o ataque é probabilístico e distribuído em muitas requisições pequenas; ambientes sem log de parâmetros de query completos podem não conseguir reconstruir a tentativa retroativamente. Webshells ou arquivos inesperados no diretório da aplicação após picos desse tráfego indicam exploração bem-sucedida subsequente (upload arbitrário via DocumentManager).

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Telerik.Web.UI.dll in Progress Telerik UI for ASP.NET AJAX before R2 2017 SP1 and Sitefinity before 10.0.6412.0 does not properly protect Telerik.Web.UI.DialogParametersEncryptionKey or the MachineKey, which makes it easier for remote attackers to defeat cryptographic protection mechanisms, leading to a MachineKey leak, arbitrary file uploads or downloads, XSS, or ASP.NET ViewState compromise.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.