← Todas as verificações
SegurançaSeveridade típica: Alto

Scanner de bibliotecas vulneráveis

Deteta versões vulneráveis ou sem suporte de jQuery, AngularJS e Bootstrap com CVEs de XSS conhecidos.

O que verifica

Este scanner identifica as versões de bibliotecas de front-end habituais como jQuery, AngularJS e Bootstrap que o teu site carrega. Marca as que são versões vulneráveis ou sem suporte e com falhas de XSS conhecidas e documentadas.

Porque importa

Usar uma biblioteca com vulnerabilidades públicas é uma porta aberta bem conhecida: os atacantes procuram justamente essas versões porque a falha já está publicada. Um XSS através de uma biblioteca antiga pode permitir roubar sessões ou injetar conteúdo no teu site.

Como se corrige

Atualiza essas bibliotecas para uma versão suportada e sem vulnerabilidades conhecidas, verificando primeiro que não parte nada. Se uma biblioteca já não recebe manutenção, como o AngularJS, pondera migrar para uma alternativa moderna que a tenha.

Como funciona esta verificação

O Scanaris reúne o HTML da tua página principal e descarrega até quinze dos seus scripts: todos os que são servidos a partir do teu próprio domínio e, dos externos, os que levam "jquery" no caminho. Nesse texto procura os cabeçalhos de versão que as bibliotecas incluem no início do ficheiro. Três casos abrem achado, todos de severidade média. jQuery anterior a 3.5.0: vulnerabilidades XSS conhecidas (CVE-2020-11022 e CVE-2020-11023) na forma como processa HTML. AngularJS, qualquer versão 1.x: a framework chegou ao fim de vida em janeiro de 2022 e não recebe correções de segurança. Bootstrap 3.x anterior a 3.4.1 ou 4.x anterior a 4.3.1: XSS através de atributos data- em tooltips e popovers (CVE-2019-8331). Só marca quando encontra o número de versão escrito; se o ficheiro está minificado sem cabeçalho, não adivinha.

Porque importa

Uma vulnerabilidade de XSS numa biblioteca que todo o teu site carrega é uma porta aberta em todas as páginas ao mesmo tempo: um atacante que consiga meter texto onde a biblioteca o interpreta como HTML (um comentário, um nome de perfil, um parâmetro de URL) executa JavaScript com a sessão de quem o vê. Para estas três bibliotecas as falhas são públicas há anos, com exemplos de exploração publicados, e as ferramentas automáticas testam-nas de série. O caso do AngularJS é diferente mas pior a longo prazo: não é que tenha uma falha concreta, é que a próxima que aparecer nunca vai ser corrigida.

Porque acontece

Porque funcionam. Um jQuery 1.12 de 2016 continua a fazer o que fazia e ninguém lhe toca com medo de partir algo. Os temas e plugins de WordPress são o caso típico: o núcleo do WordPress traz o jQuery 3.7 desde a versão 5.6, mas um tema antigo pode carregar a sua própria cópia. Também aparece em templates HTML comprados, em painéis de administração herdados e em projetos onde a IA copiou um exemplo com um URL de CDN de há anos.

Como corrigir

  • jQuery: atualiza para o último 3.x (o 3.7 é o ramo atual). Muda o URL da CDN ou o ficheiro local, e carrega o jquery-migrate durante uns dias para que te avise na consola das chamadas antigas que há que adaptar. Testa os formulários, os menus e qualquer plugin de jQuery que uses.
  • Bootstrap: se estás em 3.x, passa para 3.4.1, que é compatível; se estás em 4.x, para 4.6.2. São versões de manutenção sem mudanças de design. Saltar para 5.x é uma migração maior porque elimina o jQuery e renomeia classes; planeia-a à parte.
  • AngularJS: não há versão segura para a qual subir. As opções são migrar (para Angular moderno, Vue ou React, por partes se a app for grande), contratar suporte alargado comercial entretanto, ou isolar a app: sem dados sensíveis, atrás de autenticação e com uma CSP estrita.
  • WordPress: atualiza o tema e os plugins; se um deles continuar a carregar um jQuery velho, troca-o. Não desatives o jQuery do núcleo para "poupar": é a versão boa.
  • Em geral: instala as bibliotecas com npm em vez de copiar URL de CDN, e ativa os alertas de dependências do GitHub ou o npm audit para saberes da próxima.

Confirma que está corrigido

curl -s https://teudominio.com | grep -oE 'src="[^"]*(jquery|bootstrap|angular)[^"]*"'
curl -s URL_DO_SCRIPT | head -c 400 | grep -oE '(jQuery|Bootstrap|AngularJS)[^0-9]{0,30}v?[0-9]+\.[0-9]+\.[0-9]+'

O primeiro diz-te que ficheiros o teu site carrega; o segundo, com o URL de cada um, a versão que declaram. Esperado: jQuery 3.5.0 ou superior, Bootstrap 3.4.1, 4.3.1 ou superior, e nenhum AngularJS.

Perguntas frequentes

Só se detetam estas três bibliotecas?

De momento, sim: são as que concentram a maioria das vulnerabilidades exploradas no front-end de sites reais. Para o resto das tuas dependências, o npm audit ou os alertas do GitHub cobrem o que uma análise externa não consegue ver.

Uso jQuery 1.12 mas não insiro HTML de utilizadores. Estou a salvo?

Enquanto ninguém passar texto não confiável por .html(), .append() ou semelhantes, a falha concreta não dispara. Mas é difícil garanti-lo em todo o site e em todos os plugins, e a atualização para 3.x costuma custar uma tarde. Entretanto, uma CSP estrita limita o dano; revê-a CSP fraca.

E se a biblioteca vier de uma CDN?

Então, além de a atualizares, fixa a versão e adiciona integrity para que ninguém a possa trocar por baixo; explica-o integridade de sub-recursos.

Verifica-o no teu site

Analisa o teu site grátis e vê se esta e outras 44 verificações passam, com um fix prompt por cada problema.

Analisar o meu site grátis

Verificações relacionadas