Skip to main content
Blog
Blog Attacks

Sites web gouvernementaux et universitaires ciblés dans une attaque côté client ScriptAPI[.]dev

Hier, nous avons découvert une autre attaque JavaScript côté client ciblant plus de 500 sites web, dont des gouvernements et des universités. Les scripts injectés créent des liens cachés dans le Document Object Model (DOM), pointant vers des sites web externes, une interface de programmation pour les documents web.

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

Hier, nous avons découvert une autre attaque JavaScript côté client ciblant plus de 500 sites web, dont des gouvernements et des universités. Les scripts injectés créent des liens cachés dans le Document Object Model (DOM), pointant vers des sites web externes, une interface de programmation pour les documents web.

À ce jour, aucun flux de menaces n'a détecté cette attaque.

Nous pensons qu'il s'agit d'une campagne d'optimisation pour les moteurs de recherche (SEO) black hat. Les scripts injectés créent des liens cachés, pointant vers des sites web externes. Ces liens sont stylisés pour être invisibles aux utilisateurs en utilisant du CSS :

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

Liens de spam SEO cachés injectés sur le site gouvernemental de la circulation des Bahamas

Liens de spam SEO cachés injectés sur le site de l'université SZABIST

Les scripts malveillants sont hébergés sur scriptapi[.]dev. Nous avons trouvé plusieurs variantes du même script, hébergées sur le même domaine :

  • 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

Notre répertoire de domaines a identifié le domaine malveillant le 20 janvier 2025.

Entrée du répertoire de domaines cside pour le domaine malveillant scriptapi.dev

Le mécanisme du script :

  1. Récupérer la balise script : En utilisant document.currentScript, le script malveillant identifie son emplacement dans le DOM.
  2. Injecter des liens cachés : Il utilise la méthode insertAdjacentHTML('beforebegin', linksHTML) pour insérer les liens avant la balise script dans le DOM.

Une capture d'écran prise sur un site web affecté, montrant plusieurs domaines visiblement cachés :

Extrait de code de l'injection scriptapi.dev cachant des liens de spam dans le 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);

L'objectif de cette attaque

Ces liens invisibles sont indexés par les moteurs de recherche. Ces moteurs de recherche détectent les liens sur des sites web réputés et leur attribuent une valeur SEO. Ces liens sont cachés, ils ne perturbent donc pas l'expérience utilisateur et ne sont pas facilement détectés par les propriétaires de sites web.

Des approches comme celles-ci sont souvent appelées techniques SEO black hat.

Nous avons trouvé plus de 500 sites web affectés par cette campagne, y compris des domaines gouvernementaux et universitaires majeurs. Les sites affectés utilisaient une large gamme de frameworks, indiquant la portée étendue de l'attaque :

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

La plupart de ces sites web sont publics ici :

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

Implications plus larges

Cette attaque met en évidence le risque croissant des attaques de la chaîne d'approvisionnement dans le développement web. Les scripts tiers sont souvent un point de faiblesse en raison de leur accès direct au DOM. Cela leur permet d'effectuer pratiquement n'importe quelle action dans le navigateur de l'utilisateur, le point final de la chaîne d'approvisionnement web.

Atténuation et protection

Comme première étape, mettez à jour vos plugins WordPress, évaluez leur utilisation et supprimez ceux qui ne sont pas utilisés. Trouvez le malware et supprimez-le. Les attaquants laissent une porte dérobée la plupart du temps. Trouvez-la et supprimez-la.

cside peut repérer, alerter et bloquer les attaques côté client comme celles-ci grâce à notre moteur de détection avancé et notre proxy.

Si vous n'êtes pas client cside, voici d'autres mesures que vous pouvez prendre :

  1. Implémenter une politique de sécurité du contenu (CSP) : Restreindre l'inclusion de scripts tiers aux domaines de confiance.
  2. Utiliser l'intégrité des sous-ressources (SRI) : Valider l'intégrité des scripts hébergés en externe en comparant les hachages.
  3. Surveiller les modifications du DOM : Utiliser des outils ou des scripts pour détecter les modifications non autorisées du DOM, en particulier l'injection d'éléments cachés.
  4. Auditer régulièrement les scripts tiers : Examiner périodiquement les dépendances et s'assurer qu'aucune modification non autorisée n'a été apportée.
  5. Utiliser des pare-feu d'applications web (WAF) : Protéger votre site web contre le trafic suspect et les inclusions de scripts non autorisées.

Commencez gratuitement aujourd'hui ou contactez-nous pour atténuer les risques

Himanshu Anand
Software Engineer

I'm a software engineer and security analyst.

FAQ

Frequently Asked Questions

Un script injecté depuis scriptapi.dev ajoutait sur les pages d'institutions publiques et d'universités des liens cachés stylés en CSS pour manipuler le référencement — une campagne de SEO black-hat exécutée côté client sur des domaines .gov et .edu de confiance.

Les scanners statiques ne voient pas les injections d'exécution. Une surveillance côté client comme cside observe le DOM et signale toute nouvelle source de script ou bloc de liens cachés dès qu'il apparaît sur la page.

Surveillez et sécurisez vos scripts tiers

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

Commencez gratuitement, ou essayez Business avec un essai de 14 jours.

cside Interface du tableau de bord affichant la surveillance des scripts et les analyses de sécurité
Related Articles
Réserver une démonstration