CVE-2017-9248
Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.
Apply updates per vendor instructions.
Resumen
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.
Detalle 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.
Cómo se explota
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.
Versiones
Cómo protegerse
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.
Cómo 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).