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 5 min read
new-client-side-attack-image-cover

En bref : injection SEO black hat de liens caches sur domaines .gov et .edu

  • Pas du vol de paiement : Tout le monde presente les attaques client-side comme du vol de paiement. Celle-ci a arme la confiance des gouvernements et universites pour du ranking de recherche a la place, ce qui est pire, car personne en securite ne traite un incident qui ne penalise que la position Google d'un concurrent turc des paris.
  • 500+ sites touchés : Plus de 500 sites portaient l'injection scriptapi[.]dev via insertAdjacentHTML pour cacher des liens spam paris et adultes en CSS inline, et aucun threat feed sur VirusTotal n'a marque le domaine. Notre annuaire de domaines a repere scriptapi[.]dev le 20 janvier 2025 avant tout editeur.
  • Auditez votre CMS maintenant : Si votre CMS melange WordPress, ASP.NET, vBulletin, CodeIgniter ou 1C-Bitrix et vous n'avez pas audite le JS tiers sur des pages a forte autorite, faites-le cette semaine. Les moteurs de recherche indexent ce que contient le DOM, pas ce que dit votre template CMS.

Peu de temps ? Découvrez le blocage Magecart et skimmer dans le navigateur de cside. Elle couvre tout ce qui suit en un seul déploiement.

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 moteur d'analyse.

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.

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

Envie de passer tout ça en revue avec un ingénieur ?

Trente minutes, sur votre propre site. Pas de slides.

Nous vous montrerons :

Quels scripts tiers s'exécutent actuellement sur votre site
Où vous en êtes sur les exigences PCI DSS 6.4.3 et 11.6.1
Quelle part de votre trafic provient de bots et d'agents IA

Vous préférez simplement poser une question ?

Recherche de créneaux…

Humains uniquement. On le saurait.

Un problème pour réserver ? Ouvrir le calendrier dans un nouvel onglet

Quel problème cherchez-vous à résoudre ?

Dites-le-nous en une ligne et nous reviendrons vers vous avec quelque chose d'utile, pas un discours générique.

Nous aidons souvent sur :

Voir quels scripts tiers s'exécutent sur votre site
Les preuves pour PCI DSS 6.4.3 et 11.6.1
Les bots, les agents IA et le vol de comptes

Vous préférez réserver un créneau ? Choisir un créneau