Ataques XSS: a próxima onda
8 de junho de 2017
0 minutos de leituraA ameaça do XSS perdeu força? Já se passaram mais de 10 anos desde que o Cross-Site Scripting (XSS) ganhou destaque. A conscientização aumentou e as defesas ficaram muito mais sofisticadas. Mas os dados recentes contam outra história:
Os ataques XSS cresceram 39% no primeiro trimestre de 2017, o maior aumento desde o quarto trimestre de 2015
As vulnerabilidades XSS devem crescer 166% em 2017, o maior aumento desde 2012
A prevalência de XSS permanece consistentemente alta — desde 2012, cerca de 50% de todas as vulnerabilidades em sites são XSS
Recentemente, analisamos as 10 principais vulnerabilidades de segurança da OWASP à luz das 50 maiores violações de dados de 2016. Em comparação com as histórias impactantes de grandes violações de dados, os ataques XSS parecem ter um impacto muito menor. Na prática, porém, é provável que afetem muito mais usuários e sites. Em vez de vazar dados de uma só vez, eles comprometem os usuários um a um — uma “morte por mil cortes”.
Neste artigo, apresentamos os dados mais recentes sobre ataques, vulnerabilidades e prevalência de XSS, que indicam que estamos em meio a uma “próxima onda” de XSS. Por fim, analisamos os motivos por trás da persistência e do novo crescimento do XSS.
Uma introdução rápida ao XSS
Os ataques XSS (Cross-Site Scripting) (veja a definição oficial da OWASP) acontecem quando um invasor engana o navegador de um usuário para executar código JavaScript malicioso no contexto do domínio de uma vítima. Esses scripts podem roubar os cookies de sessão do usuário para o domínio, extrair ou modificar seu conteúdo e executar ou alterar ações em nome do usuário — ações normalmente bloqueadas pela política de mesma origem do navegador.
As vulnerabilidades XSS permitem esses ataques ao reproduzir o script do invasor na página e executá-lo no contexto do domínio da vítima. Por exemplo, um invasor pode publicar um comentário com um script malicioso em um artigo, explorando uma vulnerabilidade XSS. Assim, o script compromete todos que visitarem a página.

O exemplo acima descreve uma vulnerabilidade de “XSS persistente”. Outro tipo comum é o “XSS refletido”, no qual o site devolve uma parte da solicitação. O invasor precisa convencer o usuário a clicar em um link malicioso — por exemplo, por meio de um e-mail de phishing ou de JavaScript malicioso em outra página — para acionar o ataque XSS.
Por fim, os ataques de “XSS baseado em DOM” acontecem inteiramente no navegador, quando o JavaScript do lado do cliente reproduz na página uma parte da URL. O XSS baseado em DOM é notoriamente difícil de detectar, pois o servidor nunca tem a chance de observar o ataque.
Ataques XSS aumentam há um ano; cresceram 39% no primeiro trimestre
O Relatório de segurança do estado da Internet da Akamai, publicado trimestralmente, mostra que os ataques XSS diminuíram no início de 2016, mas voltaram a crescer e aumentaram drasticamente no primeiro trimestre deste ano. Segundo a Akamai, os ataques XSS já representam 10% de todos os ataques a aplicações web.

Antes de 2015, o relatório da Akamai não informava o número de ataques XSS, o que dificulta ampliar essa linha do tempo para anos anteriores. No entanto, dados do Relatório de ataques a aplicações web da Imperva, um estudo de 297.954 ataques bloqueados pelas soluções WAF da Imperva, ajudam a esclarecer os ataques XSS nos anos precedentes.
A Imperva informa que, em 2013, 2014 e 2015, a aplicação web média do conjunto de dados foi atacada por XSS 8, 12 e 21 vezes, respectivamente. Isso representa um aumento de 110% nos ataques entre 2014 e 2015.

Embora sejam dois conjuntos de dados e metodologias bem diferentes, podemos caracterizar 2015 como uma “onda” de ataques XSS. E os dados de 2017 sugerem que agora estamos em meio à “próxima onda”.
Vulnerabilidades XSS devem crescer 166% em 2017
O Banco de dados nacional de vulnerabilidades, compilado pelo NIST, registra vulnerabilidades em produtos de software por CVE, gravidade e vários outros critérios.
O número total de vulnerabilidades XSS apresenta uma tendência irregular nos últimos anos. 2014 se destaca, com 1.028 vulnerabilidades, 66% a mais que em 2013. 2016 foi um ano de baixa, com apenas 472 vulnerabilidades, 34% a menos que em 2015.

Em 2017, porém, há uma forte tendência de alta — nos primeiros cinco meses e meio do ano (até a data de publicação deste artigo), foram relatadas 508 vulnerabilidades, mais do que em todo o ano de 2016. Projetando esse número para o ano inteiro, estima-se que 1.354 vulnerabilidades sejam relatadas em 2017, um crescimento sem precedentes de 166%.
Isso é mais uma evidência de uma “próxima onda” de XSS, impulsionada pelo crescimento incomum no número de sistemas de software identificados como vulneráveis.
Vale observar que esses dados não incluem ataques XSS baseados em DOM, que ocorrem no lado do cliente e são quase impossíveis de detectar. Pela nossa experiência, esses ataques estão se tornando mais comuns à medida que os aplicativos de página única ganham popularidade e os sites oferecem mais funcionalidades do lado do cliente.
Por exemplo, recentemente estudamos bibliotecas JavaScript do lado do cliente e descobrimos que 77% dos sites usam pelo menos uma biblioteca JavaScript vulnerável. Muitas dessas vulnerabilidades são XSS e seriam difíceis de detectar com ferramentas tradicionais de monitoramento.
Vulnerabilidades XSS de grande repercussão ainda acontecem
Historicamente, vulnerabilidades e ataques de Cross-Site Scripting foram relatados em organizações como MySpace (2005), American Express (2008), no site da campanha eleitoral de Barack Obama (2008), na McAfee, na Semantec e na Kaspersky (2009), no Facebook (2011), na CIA e no FBI (2011) e no Ebay (2012).
Mas esses casos “espetaculares” ainda acontecem. Em 2016, usuários do eBay e do Yahoo voltaram a ser expostos a ataques XSS. Em julho de 2016, a Cisco anunciou uma vulnerabilidade XSS em sua popular plataforma Webex, que foi corrigida rapidamente.
Em 2017, até o mês de maio, o banco de dados do NIST registrou vulnerabilidades XSS em determinadas versões dos seguintes sistemas de software de ponta:
IBM Rational Team Concert — CVE-2016-6037
Trend Micro OfficeScan — CVE-2017-8801
A linguagem de programação ColdFusion — 2017-3008
Cisco Prime Infrastructure — 2017-6611
IBM Financial Transaction Manager for ACH Services — 2017-1160
Atlassian JIRA — 2016-4318
Esta é apenas uma amostra anedótica — muitas outras das 508 vulnerabilidades relatadas nos últimos meses poderiam ser consideradas vulnerabilidades de “grande repercussão”. É possível que muitas tenham sido exploradas por invasores, mas esses dados não estavam disponíveis quando este artigo foi escrito.
A prevalência de XSS permanece alta desde 2012
Outro estudo, o Relatório de estatísticas da WhiteHat Security, acompanhou a prevalência de XSS entre 2012 e 2015, analisando dados de varredura e correção do serviço WhiteHat Sentinel. A métrica usada foi a porcentagem de todas as vulnerabilidades encontradas nos sites participantes que eram XSS.

Esses dados contradizem a ideia de que o XSS está diminuindo ou desaparecendo. Uma década inteira após o ataque XSS “Sami is My Hero” no MySpace chocar o mundo, quase 50% das vulnerabilidades detectadas em sites em 2015 ainda eram XSS, sem mudança significativa em relação aos anos anteriores.
O estudo da WhiteHat também destaca a relevância do XSS em comparação com outras vulnerabilidades. De forma consistente, o XSS está entre as três principais vulnerabilidades detectadas em sites, com uma grande diferença na porcentagem de prevalência entre as três primeiras e as demais.
Estes são os números de 2015: o XSS ficou em terceiro lugar, com 48% de todas as vulnerabilidades, em comparação com a seguinte, Content Spoofing, com apenas 25%.

O Relatório de estatísticas de vulnerabilidades da EdgeScan corrobora esses dados com números muito semelhantes, obtidos por uma metodologia parecida. Segundo a EdgeScan, o XSS representou consistentemente mais de 50% de todas as vulnerabilidades entre 2013 e 2015.
Nossa análise: o XSS é um problema crescente e cada vez mais grave
Os dados mostram que o XSS continua sendo um problema sério e provavelmente está entrando em uma nova onda, tanto em prevalência de vulnerabilidades quanto no número de ataques:
A proporção de ataques XSS entre todos os ataques a aplicações web subiu de 7% para 10% no primeiro trimestre de 2017.
Nos últimos quatro anos (ou mais), vulnerabilidades XSS estiveram presentes em cerca de 50% dos sites.
Segundo o banco de dados de vulnerabilidades do NIST, a previsão é que as vulnerabilidades XSS cresçam 166% neste ano: de 508 produtos e sistemas vulneráveis em 2016 para 1.354 vulnerabilidades ao longo de 2017.
É importante lembrar que essa prevalência tem outro fator multiplicador: uma única vulnerabilidade XSS compromete todo o domínio em que ocorre. Assim, uma página remota e pouco acessada, que usa JavaScript antigo e é suscetível a XSS baseado em DOM, expõe e coloca em risco todos os dados e ações dos usuários no domínio em que está hospedada.
Na Snyk, protegemos milhares de aplicações web contra XSS e outras vulnerabilidades presentes nos pacotes de código aberto que elas utilizam. Com base na nossa experiência, podemos apontar cinco motivos pelos quais o XSS não vai desaparecer, como muitos especialistas esperavam, e pode se tornar um problema de segurança ainda mais difícil em 2017:
A transferência de dados cada vez mais importantes e a realização de ações pela web tornam os ataques XSS muito mais atraentes para os invasores.
Os aplicativos de página única aumentam a quantidade de lógica do lado do cliente e o processamento de entradas do usuário. Isso os torna mais propensos a vulnerabilidades de XSS baseado em DOM, que, como mencionamos, são muito difíceis de detectar pelos responsáveis pelos sites.
A maior persistência e o armazenamento em cache de JavaScript em aplicações web modernas, projetados para permitir o acesso offline e aplicações web progressivas, possibilitam que invasores mantenham JavaScript malicioso no navegador da vítima, continuando a comprometê-la muito depois da correção da vulnerabilidade.
As telas de celular ocultam informações do navegador, por exemplo, ao truncar URLs e strings de consulta. Isso dificulta que as pessoas percebam algo incomum ao navegar pelo celular.
O uso crescente de bibliotecas de código aberto, presentes na maioria dos sites e ainda mais adotadas por frameworks como React e Angular, amplia o alcance das vulnerabilidades XSS nessas bibliotecas. A maioria dos sites não gerencia suas dependências e, por isso, continua desprotegida e sem saber do problema, mesmo muito tempo depois da correção da biblioteca.
Desenvolvedores de aplicações, responsáveis por sites e profissionais de segurança devem ficar atentos: os ataques XSS são um grande sinal de alerta em 2017 e merecem atenção cuidadosa. Mais do que nunca, as aplicações devem ser desenvolvidas, testadas, analisadas e atualizadas considerando as falhas XSS, para reduzir os riscos para as organizações e os danos a clientes e usuários.
Adorado por desenvolvedores. Confiável para a segurança.
As ferramentas da Snyk, pensadas para desenvolvedores, oferecem segurança integrada e automatizada para atender às suas necessidades de governança e conformidade.