Foi recentemente descoberta uma nova vulnerabilidade no CMS WordPress. Múltiplos plugins do WordPress são vulneráveis a Cross Site Scripting (XSS), devido à má utilização das funções add_query_arg() e remove_query_arg(). Trata-se de funções populares utilizadas pelos programadores para modificar e adicionar query strings para URLs no interior do WordPress.
Do que se trata esta vulnerabilidade?
A Documentação Oficial do WordPress (Codex) para estas funções não é muito clara e enganou muitos programadores de plugins para utiliza-las de forma insegura. Os programadores assumiram que estas funções permitiam ao utilizador escapar a entrada de dados para elas, quando isso não acontece. Este detalhe simples causou que muitos dos plugins mais populares ficassem vulneráveis ao XSS.
Cross-site scripting (XSS) trata-se de um tipo de vulnerabilidade do sistema de segurança, que se pode encontrar normalmente em aplicações web. Permite a ativação de ataques maliciosos ao injetar client-side script dentro das páginas web visualizadas por outros utilizadores. Os atacantes podem utilizar um script de exploração de vulnerabilidade cross-site para escapar aos controlos de acesso que utilizam a mesma política de origem.
Através de um ataque do tipo XSS, o atacante injeta códigos Javascript num campo de texto de uma página web já existente, e este Javascript é apresentado a outros visitantes, pelo facto de persistir na página.
Exemplo de ataque XSS: Imaginem que o atacante insere num fórum de um website alvo de ataque, um texto que contem código em Javascript. Este Javascript poderia, simular a página de login do website, capturar os dados de acesso e enviá-los para um repositório que os armazene. Quando o texto do fórum for apresentado a outros visitantes, um website atacado pelo XSS exibirá o referido código em Javascript digitado anteriormente nos browsers de todos os outros visitantes, provocando uma ponte para o ataque.
O invasor envia um script para o servidor: malicious.js… = SYN onde o servidor recebe o script e interpreta uma nova página inserindo o código como resposta da requisição ao atacante = SYN/ACK. Por fim, o atacante recebe a resposta em seu browser = ACK .
Lista de plugins afetados:
Até ao momento foram descobertas vulnerabilidades XSS nos seguintes plugins do WordPress:
- Jetpack
- WordPress SEO
- Google Analytics by Yoast
- All In one SEO
- Gravity Forms
- Multiple Plugins from Easy Digital Downloads
- UpdraftPlus
- WPECommerce
- WPTouch
Existem provavelmente mais alguns plugins adicionais alvos da vulnerabilidade XSS que não estão listados.
Quais foram as medidas implementadas?
Este problema foi identificado pela primeira vez por Joost, o fundador da empresa Yoast num dos seus plugins.
A Yoast em conjunto com a empresa Sucuri, investigaram o problema e descobriram que provavelmente o problema está presente em mais plugins do que pensavam inicialmente. Em conjunto com alguns amigos verificaram nos últimos dias o repositório da WordPress, numa tentativa de encontrar e alertar o maior número possível de programadores de plugins de forma a advertir e ajudá-los a corrigir o problema.
Embora esta vulnerabilidade tenha sido inicialmente descoberta na semana passada, derivado aos diferentes graus de gravidade e, mais importante, o elevado volume de plugins afetados, foi coordenado um lançamento de segurança conjunta com todos os programadores envolvidos e com a equipe de segurança do núcleo WordPress. Segundo a empresa Sucuri, foi um excelente trabalho de equipa, e uma experiência agradável de ver tantos programadores unidos e trabalhando juntos para o bem comum.
É possível avançar que felizmente todos os plugins foram corrigidos, e atualmente as atualizações deveram estar disponíveis para todos os utilizadores.
Se tiver ativo as atualizações automáticas, o seu website já deve estar corrigido, especialmente nos casos mais graves.
O que fazer para evitar esta vulnerabilidade?
Se você utilizar um destes plugins no seu website WordPress, certifique-se que os atualiza agora! Dirija ao dashboard wp-admin e atualize todos os plugins desatualizados.
Caso tenha ativado as atualizações automáticas do WordPress, o seu website já deve estar corrigido, principalmente nos casos com maior gravidade.
A investigação pelas empresas de segurança online irá prosseguir com o objetivo de localizar mais plugins vulneráveis. Neste sentido, esteja atento aos updates das novas versões dos plugins assim que estiverem disponíveis.
A PTWS fornece o serviço WS Security One que permite a diminuição de incidentes em websites através de monitorização, report e scans automáticos, removendo a infeção com Malware, e da lista negra, e repondo a segurança do seu website.
O plano WS Security One da PTWS inclui a remoção de:
- Cross Site Scripting (XSS)
- Obfuscated Javascrip Injections
- Hidden & Malicious iFrames
- Embebbed Trojans
- Phishing Attempts
- Malicious Redirects
- Backdoors (ex. C99, R57, Webshells)
- Stupid, Pointless, Annoying Messages (SPAM)
- Defacement
- Anomalies
- SQL Injection
- IP Cloaking
- Social Engineering Attempts
- Drive-by-Downloads
Não consigo visualizar o pedido de update… o que fazer?
Se não conseguir visualizar o pedido de atualização, navegue para a página web wpadmin/updatecore.php no Dashboard → Atualizações. Irá limpar a cache para todas as atualizações e deverá mostrar as atualizações para os plugins.
Indo para esta página também irá certificar-se também que todas as atualizações automáticas são efetuadas alguns segundos mais tarde. Certifique-se de verificar a sua página de plugins após um minuto para ver se todos os plugins necessários ainda estão ativos.
A vulnerabilidade está contida?
A equipa analisou somente os principais 300/400 plugins, um número bastante distante da totalidade de plugins existentes no universo WordPress.
Neste sentido, existem provavelmente plugins com a vulnerabilidade XSS. Se é programador, verifique o seu código de forma a verificar a utilização das seguintes duas funções:
- add_query_arg
- remove_query_arg
Certifique-se de que está utilizando funções de escape antes de as utilizar. É recomendado a utilização das seguintes funções em conjunto com as funções referidas anteriormente:
- esc_url()
- esc_url_raw()
Principalmente, o programador não deve presumir que add_query_arg e remove_query_arg vai escapar a introdução de dados do utilizador. A equipa da WordPress fornece mais orientações sobre a sua forma de utilização. Pode consultar mais informações aqui.
Lembramos que todos os softwares originam bugs, e alguns desses bugs conduzem inevitavelmente a vulnerabilidades de segurança. Tal é a vida que vivemos.
Este facto aplica-se a plugins, temas, servidores web, CMS’s, e basicamente qualquer coisa que é escrita por pessoas e com base em código. Por mais que os programadores tentem minimizar e implementar princípios de codificação seguros, os erros iram inevitavelmente acontecer.
Para prevenir, e tal como acontece com a vulnerabilidade reportada neste artigo, é aconselhado a todos os webmasters a realização das atualizações do CMS e dos plugins assim que disponíveis e o mais rapidamente possível.
O que posso fazer para reduzir o risco global de ameaças?
Deixamos algumas dicas e truques para ajudar a reduzir o risco global de ameaças, ajudando a melhorar a sua postura de segurança individual:
- Patch: Mantenha os plugins dos seus websites atualizados.
-
Restrição: Controle de acesso restritivo.
- Restrinja o diretório wp-admin para apenas endereços IP listados na white list.
- Atribua acesso de administrador para usuários que realmente necessitam
- Não efetue login como admin a menos que esteja a efetuar realmente trabalho administrativo.
- Estes são alguns exemplos de políticas restritivas de controlo de acesso que podem minimizar o impacto das vulnerabilidades em seu website.
- Monitorar: Monitorize os logs do seu website. Eles podem dar pistas para o que está a acontecer no seu website.
- Reduza o âmbito de aplicação: Utilize apenas plugins (ou temas) que o seu website realmente necessita para funcionar.
-
Detectar: A prevenção pode falhar, e por isso recomendamos o serviço WS Security One que permite a limpeza do Malware, Spam e Pishing, monitorização integrada do website, alerta via e-mail e twitter, scan manual do website, e remoção da blacklist. Pode consultar mais informações no website da PTWS
- Defesa em Profundidade: Se você tem um Intrusion Prevention System (IPS) ou uma Web Application Firewall (WAF), estas ferramentas podem ajudar a bloquear as formas mais comuns de exploits de XSS.
- Estes princípios são geralmente aplicados a maioria das redes seguras (ou em qualquer negócio que precisa ser compatível com PCI), mas muitos proprietários de website não pensam nestas medidas para o seu próprio website / ambiente.