Skip to main content
Blog
Blog Attacks

Sites governamentais e universitários alvos de ataque client-side ScriptAPI[.]dev

Ontem descobrimos outro ataque JavaScript client-side visando +500 sites, incluindo governos e universidades. Os scripts injetados criam links ocultos no Document Object Model (DOM), apontando para sites externos, uma interface de programação para documentos web.

Jan 21, 2025 3 min read
new-client-side-attack-image-cover

Ontem descobrimos outro ataque JavaScript client-side visando +500 sites, incluindo governos e universidades. Os scripts injetados criam links ocultos no Document Object Model (DOM), apontando para sites externos, uma interface de programação para documentos web.

Até o momento, nenhum feed de ameaças detectou este ataque.

Acreditamos que esta é uma campanha de Search Engine Optimization (SEO) black hat. Os scripts injetados criam links ocultos, apontando para sites externos. Esses links são estilizados para serem invisíveis aos usuários usando CSS:

style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"

Links de spam de SEO ocultos injetados no site governamental de trânsito das Bahamas

Links de spam de SEO ocultos injetados no site da universidade SZABIST

Os scripts maliciosos estão hospedados em scriptapi[.]dev. Encontramos múltiplas variantes do mesmo script, hospedadas no mesmo domínio:

  • scriptapi[.]dev/api/smacr[.]js
  • scriptapi[.]dev/api/en[.]tlu[.]js
  • scriptapi[.]dev/api/sie[.]tlu[.]js
  • scriptapi[.]dev/api/ppymca[.]js
  • scriptapi[.]dev/api/pbsgc[.]js
  • scriptapi[.]dev/api/adventum[.]js
  • scriptapi[.]dev/api/harvardpress[.]js
  • scriptapi[.]dev/api/krachelart[.]js
  • scriptapi[.]dev/api/malagaadventures[.]js

Nosso diretório de domínios identificou o domínio malicioso em 20 de janeiro de 2025.

Entrada do diretório de domínios da cside para o domínio malicioso scriptapi.dev

O Mecanismo do Script:

  1. Recuperar a tag do script: Usando document.currentScript, o script malicioso identifica sua localização no DOM.
  2. Injetar links ocultos: Ele usa o método insertAdjacentHTML('beforebegin', linksHTML) para inserir os links antes da tag do script no DOM.

Uma captura de tela tirada de um site afetado, mostrando múltiplos domínios sendo visivelmente ocultados:

Trecho de código da injeção do scriptapi.dev que oculta links de spam no DOM

const linksHTML = `
<div style="text-align: center; display: table-column">
<a href="https://fullfilmizle[.]net/" title="full film izle">full film izle</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://myremedyproducts[.]com" title="myremedyproducts[.]com">myremedyproducts[.]com</a>
<a href="https://albalondres[.]com" title="albalondres[.]com">albalondres[.]com</a>
<a href="https://kineticartstucson[.]com" title="kineticartstucson[.]com">kineticartstucson[.]com</a>
<a href="https://stolenbeauty[.]org" title="stolenbeauty[.]org">stolenbeauty[.]org</a>
<a href="https://www.bilgihocasi[.]com" title="www.bilgihocasi[.]com">www.bilgihocasi[.]com</a>
<a href="https://joinoilfield[.]com" title="joinoilfield[.]com">joinoilfield[.]com</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://betswot[.]com" title="starzbet">starzbet</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://alanyasmmm[.]com/" rel="dofollow">alanya escort</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://nevizadecafe[.]com/" title="deneme bonusu">deneme bonusu</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://alansh[.]com" title="tlcasino">tlcasino</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://pmtips[.]net/">crackstreams</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="http://lasip[.]net/" title="antalya escort bayan">antalya escort bayan</a>
<a href="http://www.niceescorts[.]com/" title="antalya escort">antalya escort</a>
<a href="https://www.shushescort[.]com/" title="istanbul escort bayan">istanbul escort bayan</a>
<a href="https://servissirinevler[.]com/" title="şirinevler escort bayan">şirinevler escort bayan</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://www.umraniyeti[p.]net/anadolu-yakasi/kadikoy-escort/">escort kadıköy</a>
<a href="http://www.doescorts[.]com/">www.doescorts[.]com</a>
<a href="http://www.umraniyeescorts[.]com/">ümraniye escort bayanlar</a>
<a href="http://www.maltepeescort[.]com/">escort maltepe</a>
<a href="https://pendikroyal[.]com/">pendik escort</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://www.xxxpornxxx[.]net/video/12776/nunziato-xxx-porn/" title="nunziato xxx porn">nunziato xxx porn</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://www.ipsnews[.]net/">streameast</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://yatirimbonusu[.]com/" title="deneme bonusu veren siteler">deneme bonusu veren siteler</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://justgpu[.]com/" title="deneme bonusu veren siteler">deneme bonusu veren siteler</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://sojienergy[.]com/" title="deneme bonusu veren siteler">deneme bonusu veren siteler</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://romabet.online" target="_blank" title="romabet giriş">romabet giriş</a>
<a href="https://betgargirisyap[.]com" target="_blank" title="betgar giriş">betgar giriş</a>
<a href="https://romabetgiris3[.]com" target="_blank" title="romabet giriş">romabet giriş</a>
<a href="https://roketbetgirisyap[.]com" target="_blank" title="roketbet giriş">roketbet giriş</a>
<a href="https://roketbet[.]net" target="_blank" title="roketbet giriş">roketbet giriş</a>
<a href="https://roketbetgiris[.]com" target="_blank" title="roketbet giriş">roketbet giriş</a>
<a href="https://ligobetbahis[.]com/" target="_blank" title="ligobet giriş">ligobet giriş</a>
<a href="http://ligobet1[.]net" target="_blank" title="ligobet giriş">ligobet giriş</a>
<a href="https://ligobetgiris[.]org/" target="_blank" title="ligobet giriş">ligobet giriş</a>
<a href="https://ligobetgirisi[.]com/" target="_blank" title="ligobet giriş">ligobet giriş</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://denemebonususiteleri[.]net/" title="deneme bonusu veren siteler">deneme bonusu veren siteler</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://princearthurherald[.]com/" title="deneme bonusu veren siteler">deneme bonusu veren siteler</a>
<a href="https://westpasco[.]com/" title="deneme bonusu veren siteler">deneme bonusu veren siteler</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://www.airstreamofchicago[.]com/" title="casino siteleri">casino siteleri</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://chrisspielman[.]com/" title="deneme bonusu" target="_blank">deneme bonusu</a>
<a href="https://www.bestwesterndesignerinn[.]com/" title="deneme bonusu veren siteler" target="_blank">deneme bonusu veren siteler</a>
<a href="https://www.catch25li[.]com/" title="Canlı casino siteleri" target="_blank">Canlı casino siteleri</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="http://1xbetm[.]info/" title="1xbet giriş">1xbet giriş</a>
<a href="https://xslotx[.]com/trx/" title="xslot giriş">xslot giriş</a>
<a href="https://zbahisz[.]com/zb/" title="zbahis">zbahis</a>
<a href="https://betturkeygiris[.]org/tur/" title="betturkey giriş">betturkey giriş</a>
<a href="https://www.trbetr[.]com/" title="trbet">trbet</a>
<a href="https://www.wiibet[.]com/tr10/" title="betist">betist</a>
<a href="https://babilonbeto[.]com/" title="babilonbet">babilonbet</a>
<a href="https://betrollere[.]com/" title="betroller">betroller</a>
<a href="https://bahisbudurtr[.]com/" title="bahisbudur">bahisbudur</a>
<a href="https://www.bahiscom[.]info/tr/" title="bahis[.]com">bahis[.]com</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://siliconvalleywineries[.]com/" title="deneme bonusu veren siteler" target="_blank">deneme bonusu veren siteler</a>
<a href="https://tapoutdrinks[.]com/" title="casino siteleri" target="_blank">casino siteleri</a>
<a href="https://www.qujapan1635[.]com/" title="bahis siteleri" target="_blank">bahis siteleri</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://buy.fans/" title="buy.fans">buy.fans</a>
</div>
<div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">
<a href="https://mobilbahisgir[.]net/" title="mobilbahis">mobilbahis</a>
<a href="https://rokubetgir[.]com/" title="rokubet">rokubet</a>
</div>
`;
const scriptTag = document.currentScript;
scriptTag.insertAdjacentHTML('beforebegin', linksHTML);

O objetivo deste ataque

Esses links invisíveis são indexados por mecanismos de busca. Esses mecanismos de busca detectam os links em sites respeitáveis e atribuem valor de SEO a eles. Esses links estão ocultos, então não interrompem a experiência do usuário nem são facilmente detectados pelos proprietários dos sites.

Abordagens como essas são frequentemente chamadas de técnicas de SEO black hat.

Encontramos mais de 500 sites afetados por esta campanha, incluindo grandes domínios governamentais e universitários. Os sites afetados usavam uma ampla variedade de frameworks, indicando o amplo escopo do ataque:

  • WordPress 6.7.1
  • MS ASP.NET
  • vBulletin
  • PHP CodeIgniter
  • 1C-Bitrix

A maioria desses sites está pública aqui:

https://publicwww.com/websites/scriptapi.dev/ https://urlscan.io/search/#scriptapi.dev

Implicações Mais Amplas

Este ataque destaca o risco crescente de ataques à cadeia de suprimentos no desenvolvimento web. Scripts de terceiros são frequentemente um ponto de fraqueza devido ao seu acesso direto ao DOM. Isso permite que eles executem praticamente qualquer ação no navegador do usuário, o ponto final da cadeia de suprimentos web.

Mitigação e proteção

Como primeiro passo, atualize seus plugins do WordPress, avalie seu uso e remova os não utilizados. Encontre o malware e delete-o. Os atacantes deixam uma backdoor na maioria das vezes. Encontre e remova-a.

O cside pode detectar, alertar e bloquear ataques client-side como esses devido ao nosso mecanismo de detecção avançado e proxy.

Se você não é cliente do cside, aqui estão outras medidas que você pode tomar:

  1. Implementar uma Content Security Policy (CSP): Restrinja a inclusão de scripts de terceiros a domínios confiáveis.
  2. Usar Subresource Integrity (SRI): Valide a integridade de scripts hospedados externamente comparando hashes.
  3. Monitorar Mudanças no DOM: Use ferramentas ou scripts para detectar modificações não autorizadas no DOM, especialmente a injeção de elementos ocultos.
  4. Auditar Regularmente Scripts de Terceiros: Revise periodicamente as dependências e garanta que nenhuma alteração não autorizada tenha sido feita.
  5. Usar Web Application Firewalls (WAF): Proteja seu site contra tráfego suspeito e inclusões de scripts não autorizadas.

Comece gratuitamente hoje ou entre em contato conosco para mitigar riscos

Himanshu Anand
Software Engineer

I'm a software engineer and security analyst.

FAQ

Frequently Asked Questions

Um script injetado a partir de scriptapi.dev adicionava links ocultos estilizados via CSS em páginas de órgãos governamentais e universidades para manipular o ranking de busca — uma campanha de SEO black-hat executada no cliente sobre domínios .gov e .edu de confiança.

Scanners estáticos não enxergam injeções em tempo de execução. Um monitoramento no cliente como o da cside observa o DOM e sinaliza novas fontes de script ou blocos de links ocultos assim que aparecem na página.

Monitore e Proteja Seus Scripts de Terceiros

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Comece grátis, ou experimente o Business com um teste de 14 dias.

Interface do painel cside mostrando monitoramento de scripts e análises de segurança
Related Articles
Agende uma demonstração