Gisteren ontdekten we een nieuwe client-side JavaScript-aanval gericht op +500 websites, waaronder overheden en universiteiten. De geïnjecteerde scripts creëren verborgen links in het Document Object Model (DOM), die verwijzen naar externe websites, een programmeerinterface voor webdocumenten.
Op dit moment heeft geen enkele threat feed deze aanval gedetecteerd.
We denken dat dit een black hat Search Engine Optimization (SEO) campagne is. De geïnjecteerde scripts creëren verborgen links die verwijzen naar externe websites. Deze links zijn gestyled om onzichtbaar te zijn voor gebruikers met behulp van CSS:
style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"


De kwaadaardige scripts worden gehost op scriptapi[.]dev. We vonden meerdere varianten van hetzelfde script, gehost op hetzelfde domein:
- 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
Onze domeindirectory identificeerde het kwaadaardige domein op 20 januari 2025.

Het mechanisme van het script:
- Ophalen van de script tag: Met behulp van document.currentScript identificeert het kwaadaardige script zijn locatie in de DOM.
- Injecteren van verborgen links: Het gebruikt de insertAdjacentHTML('beforebegin', linksHTML) methode om de links vóór de script tag in de DOM in te voegen.
Een screenshot van een getroffen website, waarop meerdere domeinen zichtbaar verborgen zijn:

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);
Het doel van deze aanval
Deze onzichtbare links worden geïndexeerd door zoekmachines. Deze zoekmachines detecteren de links op gerenommeerde websites en kennen er SEO-waarde aan toe. Deze links zijn verborgen, zodat ze de gebruikerservaring niet verstoren of gemakkelijk worden gedetecteerd door de website-eigenaren.
Benaderingen zoals deze worden vaak black hat SEO-technieken genoemd.
We vonden meer dan 500 websites die getroffen zijn door deze campagne, waaronder grote overheids- en universiteitsdomeinen. Getroffen sites gebruikten een breed scala aan frameworks, wat wijst op de brede reikwijdte van de aanval:
- WordPress 6.7.1
- MS ASP.NET
- vBulletin
- PHP CodeIgniter
- 1C-Bitrix
De meeste van deze websites zijn hier openbaar:
https://publicwww.com/websites/scriptapi.dev/ https://urlscan.io/search/#scriptapi.dev
Bredere implicaties
Deze aanval benadrukt het groeiende risico van supply chain-aanvallen in webontwikkeling. Third-party scripts zijn vaak een zwakke plek vanwege hun directe toegang tot de DOM. Hierdoor kunnen ze vrijwel elke actie uitvoeren in de browser van de gebruiker, het eindpunt van de web supply chain.
Mitigatie en bescherming
Als eerste stap, update uw WordPress-plugins, evalueer hun gebruik en verwijder ongebruikte plugins. Vind de malware en verwijder deze. Aanvallers laten meestal een backdoor achter. Vind en verwijder deze.
cside kan client-side aanvallen zoals deze detecteren, waarschuwen en blokkeren dankzij onze geavanceerde detectie-engine en proxy.
Als u geen cside-klant bent, zijn hier andere stappen die u kunt nemen:
- Implementeer een Content Security Policy (CSP): Beperk de opname van third-party scripts tot vertrouwde domeinen.
- Gebruik Subresource Integrity (SRI): Valideer de integriteit van extern gehoste scripts door hashes te vergelijken.
- Monitor DOM-wijzigingen: Gebruik tools of scripts om ongeautoriseerde DOM-wijzigingen te detecteren, vooral de injectie van verborgen elementen.
- Controleer regelmatig third-party scripts: Bekijk periodiek afhankelijkheden en zorg ervoor dat er geen ongeautoriseerde wijzigingen zijn aangebracht.
- Gebruik Web Application Firewalls (WAF): Bescherm uw website tegen verdacht verkeer en ongeautoriseerde script-opnames.
Start vandaag gratis of neem contact met ons op om risico's te beperken









