Skip to main content
Blog
Blog Attacks

Sitios web gubernamentales y universitarios atacados en ataque del lado del cliente de ScriptAPI[.]dev

Ayer descubrimos otro ataque de JavaScript del lado del cliente dirigido a más de 500 sitios web, incluyendo gobiernos y universidades. Los scripts inyectados crean enlaces ocultos en el Modelo de Objetos del Documento (DOM), apuntando a sitios web externos, una interfaz de programación para documentos web.

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

Ayer descubrimos otro ataque de JavaScript del lado del cliente dirigido a más de 500 sitios web, incluyendo gobiernos y universidades. Los scripts inyectados crean enlaces ocultos en el Modelo de Objetos del Documento (DOM), apuntando a sitios web externos, una interfaz de programación para documentos web.

Hasta ahora, ningún feed de amenazas ha detectado este ataque.

Creemos que esta es una campaña de Optimización para Motores de Búsqueda (SEO) de sombrero negro. Los scripts inyectados crean enlaces ocultos, apuntando a sitios web externos. Estos enlaces están estilizados para ser invisibles a los usuarios usando CSS:

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

Enlaces de spam SEO ocultos inyectados en el sitio gubernamental de tráfico de Bahamas

Enlaces de spam SEO ocultos inyectados en el sitio de la universidad SZABIST

Los scripts maliciosos están alojados en scriptapi[.]dev. Encontramos múltiples variantes del mismo script, alojadas en el mismo dominio:

  • 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

Nuestro directorio de dominios identificó el dominio malicioso el 20 de enero de 2025.

Entrada del directorio de dominios de cside para el malicioso scriptapi.dev

El mecanismo del script:

  1. Recuperar la etiqueta del script: Usando document.currentScript, el script malicioso identifica su ubicación en el DOM.
  2. Inyectar enlaces ocultos: Utiliza el método insertAdjacentHTML('beforebegin', linksHTML) para insertar los enlaces antes de la etiqueta del script en el DOM.

Una captura de pantalla tomada de un sitio web afectado, mostrando múltiples dominios siendo ocultados visiblemente:

Fragmento de código de la inyección de scriptapi.dev que oculta enlaces de spam en el 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);

El objetivo de este ataque

Estos enlaces invisibles son indexados por los motores de búsqueda. Estos motores de búsqueda detectan los enlaces en sitios web de buena reputación y les atribuyen valor SEO. Estos enlaces están ocultos, por lo que no interrumpen la experiencia del usuario ni son fácilmente detectados por los propietarios del sitio web.

Enfoques como estos a menudo se llaman técnicas de SEO de sombrero negro.

Encontramos más de 500 sitios web afectados por esta campaña, incluyendo importantes dominios gubernamentales y universitarios. Los sitios afectados utilizaban una amplia gama de frameworks, lo que indica el amplio alcance del ataque:

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

La mayoría de estos sitios web son públicos aquí:

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

Implicaciones más amplias

Este ataque resalta el creciente riesgo de ataques a la cadena de suministro en el desarrollo web. Los scripts de terceros a menudo son un punto de debilidad debido a su acceso directo al DOM. Esto les permite realizar prácticamente cualquier acción en el navegador del usuario, el punto final de la cadena de suministro web.

Mitigación y protección

Como primer paso, actualiza tus plugins de WordPress, evalúa su uso y elimina los que no uses. Encuentra el malware y elimínalo. Los atacantes dejan una puerta trasera la mayoría de las veces. Encuéntrala y elimínala.

cside puede detectar, alertar y bloquear ataques del lado del cliente como estos debido a nuestro motor de detección avanzado y proxy.

Si no eres cliente de cside, aquí hay otros pasos que puedes tomar:

  1. Implementar una Política de Seguridad de Contenido (CSP): Restringe la inclusión de scripts de terceros a dominios confiables.
  2. Usar Integridad de Subrecursos (SRI): Valida la integridad de los scripts alojados externamente comparando hashes.
  3. Monitorear cambios en el DOM: Usa herramientas o scripts para detectar modificaciones no autorizadas del DOM, especialmente la inyección de elementos ocultos.
  4. Auditar regularmente los scripts de terceros: Revisa periódicamente las dependencias y asegúrate de que no se hayan realizado cambios no autorizados.
  5. Usar Firewalls de Aplicaciones Web (WAF): Protege tu sitio web del tráfico sospechoso y las inclusiones de scripts no autorizadas.

Comienza gratis hoy o contáctanos para mitigar riesgos

Himanshu Anand
Software Engineer

I'm a software engineer and security analyst.

FAQ

Frequently Asked Questions

Un script inyectado desde scriptapi.dev añadía enlaces ocultos estilizados con CSS en páginas de gobiernos y universidades para manipular el posicionamiento — una campaña de SEO black-hat ejecutada en el cliente sobre dominios .gov y .edu de confianza.

Los escáneres estáticos no ven inyecciones en tiempo de ejecución. La monitorización del lado del cliente como cside observa el DOM y avisa de nuevas fuentes de script o bloques de enlaces ocultos en cuanto aparecen en la página.

Monitoriza y Asegura tus Scripts de Terceros

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

Comienza gratis, o prueba Business con una prueba de 14 días.

Interfaz del panel de cside mostrando monitorización de scripts y análisis de seguridad
Related Articles
Reservar una demo