Weer een dag, weer een spraakmakende client-side JavaScript-aanval. Vanochtend lazen we dat Cisco het volgende slachtoffer is van kwaadaardige code die wordt geladen via een third-party script.
De Cisco Merchant-website draait op het Magento Enterprise-framework, dat veel wordt gebruikt door eCommerce-websites. Magento biedt een robuust en schaalbaar platform, maar zoals elk systeem is het kwetsbaar voor exploitatie als beveiligingspatches en updates niet tijdig worden toegepast. De exacte versie van Magento die ten tijde van de aanval in gebruik was, was Magento 2.4 (Enterprise).

Aanvallen gericht op de Magento-frameworks hebben in de loop der tijd hun eigen bijnaam gekregen: Magecart-aanvallen.
De aanvallers gebruiken een third-party script dat kwaadaardige code invoegt, vaak via een domein, om creditcard- en persoonlijke informatie te stelen. E-commerce sites zijn vaak een doelwit bij deze aanvallen.
Voor meer gedetailleerde informatie over kwetsbaarheden gerelateerd aan Magento, bekijk deze links:
Het kwaadaardige script gedecodeerd
Tijdens onze analyse ontdekten we het volgende geïnjecteerde script op de website:

Dit script, gehost op het domein
rextension[.]net/za/, dat is gekoppeld aan een IP-adres in Rusland (82.202.163.229), bleek aanvullende geobfusceerde code op te halen. Het domein was onlangs geregistreerd op 30 augustus 2024, waardoor het slechts 7 dagen oud was ten tijde van onze analyse op 6 september 2024.


Waarom dit belangrijk is
- De recente registratie van het domein is een waarschuwingssignaal, omdat het kan wijzen op een vluchtige operatie die is ontworpen voor snelle exploitatie voordat deze wordt verlaten.
- Geobfusceerde scripts zoals deze zijn moeilijk te detecteren zonder gespecialiseerde monitoring, waardoor ze bijzonder gevaarlijk zijn voor zowel website-eigenaren als hun klanten.
Hoe cside deze aanval had kunnen stoppen
Als de Cisco merchant-website cside had gehad, zou onze detectie-engine deze aanval hebben onderschept. Een van onze systemen controleert op nieuw geregistreerde domeinen, en bij het testen heeft onze engine dit opgepikt en de gebruiker gewaarschuwd voor deze anomalie. Het script zelf werd geblokkeerd en kon niet worden geladen in de browser van de testgebruiker, waardoor deze aanval werd gestopt voordat deze kon plaatsvinden. Hier is te zien wanneer dit domein werd geregistreerd (veilige link).
Meld je gratis aan en bescherm je site in enkele seconden.
Het script stap voor stap deobfusceren
Het opgehaalde script was sterk geobfusceerd, waardoor het moeilijk te analyseren was. Hieronder is slechts een deel van de geobfusceerde code:

Het bovenstaande script is meerlaags geobfusceerde JavaScript, die in een debugger werd geladen.
Obfuscatie is een methode die wordt gebruikt om code moeilijk te begrijpen te maken, meestal als middel om de functionaliteit te verbergen of gevoelige gegevens te beschermen. Voor analisten, ontwikkelaars of beveiligingsonderzoekers is het echter essentieel en legaal om de onderliggende functionaliteit te begrijpen.
We plaatsten een breakpoint bij:

En voerden het script uit en, na een paar decoderingen, kregen we twee tussentijdse gedecodeerde JavaScripts.
Het eerste niveau van obfuscatie is een functie die een argument neemt (gedecodeerd vlak voor het script) en dit transformeert met behulp van verschillende JavaScript-methoden, zoals stringmanipulatie en tekencodering.

Een nadere blik zal:

De uiteindelijke gedecodeerde versie:
Dit fragment bevestigt dat het script zich richt op betaalkaartvelden, maar het is nog steeds gedeeltelijk geobfusceerd, met functies zoals _0xDCAD en _0xDBA3. Deze functies manipuleren de inhoud verder, en na meer lagen van decodering komt het uiteindelijke script tevoorschijn.


Belangrijke aspecten van het script
- Obfuscatie: Het script is sterk geobfusceerd, met functies zoals _0xDCAD, _0xDBB6, _0xDBC9 om meerdere niveaus van codering en obfuscatie te creëren. Dit is typisch voor malware of scripts die hun werkelijke functionaliteit proberen te verbergen.
- Invoerverzameling: Het script verzamelt informatie van HTML-invoerelementen die worden geïdentificeerd door CSS-selectors zoals #authnetcim-cc-number, #authnetcim-cc-exp-month, #authnetcim-cc-exp-year en #authnetcim-cc-cid. Dit zijn doorgaans velden waar gebruikers gevoelige betalingsinformatie zouden invoeren.
- Gegevensverwerking:- De verzamelde gegevens (creditcardnummer, vervaldatum, CVV, enz.) worden verzameld in het ffewq-object.
- Het script versleutelt deze informatie vervolgens met behulp van AES-versleuteling (via functies zoals encrypt, decrypt, round, enz.).
- Eenmaal versleuteld, worden de gegevens naar een server verzonden met behulp van jQuery.ajax()-aanroepen (te zien in de jQuery[_0xDB90[51]]-sectie).
- Versleuteling: Het script gebruikt AES (Advanced Encryption Standard) voor het beveiligen van de gegevens voordat deze worden verzonden. Dit omvat verschillende functies die AES-versleutelingslogica afhandelen (addRoundKey, mixColumns, encrypt, enz.), die standaardcomponenten zijn in een AES-versleutelingsproces.
- Periodieke uitvoering: Het script is ontworpen om met regelmatige tussenpozen te draaien (setInterval(_0xDBA3, 100);) om de verzamelde gegevens continu te controleren of te verzenden.
Houd er rekening mee dat het cside-dashboard dit proces voor u uitvoert, waarbij scripts worden gedeobfusceerd om ze gemakkelijker te lezen en te analyseren.

Wat er gebeurde bij deze aanval
Een van de mogelijke kwetsbaarheden die bij deze aanval kan zijn uitgebuit, staat bekend als CosmicSting. Dit is een bekende exploit in het Magento-platform die is gedocumenteerd en onderzocht. U kunt er meer over lezen in detail op SanSec Research over CosmicSting.
Client-side aanvallen zoals deze kunnen verwoestend zijn voor zowel bedrijven als klanten, wat het belang benadrukt van constante waakzaamheid en de implementatie van geavanceerde beveiligingsmaatregelen. Bedrijven moeten ervoor zorgen dat ze patches toepassen, controleren op verdachte activiteit en geavanceerde tools gebruiken zoals die worden aangeboden door cside om risico's te beperken.




