← Alle berichten

Mark of the Web omzeild: wat CVE-2026-96951 betekent en hoe je ernaar zoekt

15 oktober 2026 Kwetsbaarheden 6 min lezen

De Patch Tuesday van oktober 2026 is door het aantal CVE’s de grootste ooit. Bronnen noemen tussen de 1.407 en 1.413 kwetsbaarheden, afhankelijk van de telmethode. Bij zo’n lijst is het verleidelijk om te blijven hangen in de totalen. Voor de meeste organisaties is één regel veel belangrijker: CVE-2026-96951, een kwetsbaarheid in de Windows Shell die al actief wordt misbruikt.

Wat is er bekend

Dit komt uit de bronnen onderaan, niet uit eigen onderzoek:

  • CVE-2026-96951 is een security feature bypass in de Windows Shell, CVSS 8.8 (SecurityWeek).
  • Het gaat om het omzeilen van Mark of the Web (MotW). Een schadelijk bestand start dan zonder de waarschuwing die Windows normaal toont.
  • De gebruiker moet iets doen, bijvoorbeeld een bestand openen dat per e-mail of chat is binnengekomen.
  • Microsoft markeert de kwetsbaarheid als actief misbruikt. Concrete aanvallen zijn niet openbaar beschreven.
  • CISA heeft de CVE in de Known Exploited Vulnerabilities-catalogus gezet, met 16 oktober als deadline voor Amerikaanse federale instanties.
  • Er zijn twee andere zero-days die publiek bekend waren vóór de patch, maar niet worden misbruikt: een WDAC-bypass (CVE-2026-108398) en een denial-of-service in MessagePack-CSharp (CVE-2026-92707) (BleepingComputer).

Over het exacte mechanisme is in de bronnen die ik heb gelezen weinig te vinden. Een secundaire bron beschrijft dat het bestand de Zone.Identifier-markering kwijtraakt, zodat Windows het als lokaal bestand behandelt. Dat is een logische uitleg, maar ik behandel het hieronder als aanname. Controleer het zelf in de advisory van Microsoft (de Security Update Guide laadt alleen met JavaScript, dus ik kon die niet automatisch uitlezen).

Waarom MotW zo’n belangrijke laag is

Wanneer je een bestand downloadt of als bijlage opslaat, voegt Windows op NTFS een alternate data stream toe: Zone.Identifier. Daarin staat onder andere een ZoneId. Waarde 3 betekent Internet, waarde 4 Restricted sites (Microsoft Learn).

Op die ene markering leunen veel beschermingen tegelijk:

  • Office blokkeert standaard macro’s in bestanden uit het internet.
  • Protected View opent het document in een afgeschermde modus.
  • SmartScreen beoordeelt de reputatie van gedownloade uitvoerbare bestanden.
  • Diverse EDR-detecties en ASR-regels gebruiken de herkomst van een bestand.

Is de markering weg of wordt hij genegeerd, dan vallen die lagen gelijktijdig weg. Dat maakt een MotW-bypass in de kill chain niet een aanval op zich, maar wel een versterker. Phishing met een bijlage die anders bij de eerste klik zou stranden, komt dan een stap verder. Mijn interpretatie: de waarde zit in de combinatie met macro’s, snelkoppelingen en scripts, niet in het bestand zelf.

Wat je nu moet doen

  1. Patch CVE-2026-96951 met voorrang. Het is actief misbruikt en de aanvalsroute (een bijlage) is voor elke organisatie bereikbaar. Dat gaat boven de rest van de lijst.
  2. Gebruik de risk cohorts van Microsoft als hulpmiddel, niet als prioriteit. Microsoft deelt de CVE’s dit keer in 15 clusters in per subsysteem, bijvoorbeeld Office-documenten en mailclients. Microsoft zegt zelf dat dit een startpunt is en niet bepaalt welke fouten het gevaarlijkst zijn. Het cluster zegt dus waar je je aandacht naartoe stuurt, niet waar de dreiging het hoogst is.
  3. Kijk of de lagen eromheen echt aan staan. Bij een bypass die één laag uitschakelt, beperken de andere lagen de schade. Daarom hieronder wat je kunt controleren.

Controleren of de lagen eromheen werken

Macro’s uit het internet blokkeren is een policy voor Microsoft 365 Apps for enterprise (“Block macros from running in Office files from the Internet”). Controleer of die per toepassing is afgedwongen, en niet alleen de standaard is.

ASR-regels zijn een tweede laag. Zet ze eerst in audit-modus om te zien wat er zou gebeuren:

# Voorbeeld: audit-modus voor drie ASR-regels (0 = uit, 1 = blokkeren, 2 = audit)
$regels = @(
  'D4F940AB-401B-4EFC-AADC-AD5F3C50688A', # Office-apps mogen geen child processes starten
  '5BEB7EFE-FD9A-4556-801D-275E5FFC04CC', # Geobfusceerde scripts blokkeren
  '01443614-CD74-433A-B99E-2ECDC07BFC25'  # Onbekende uitvoerbare bestanden blokkeren (prevalentie/leeftijd)
)
foreach ($id in $regels) {
  Add-MpPreference -AttackSurfaceReductionRules_Ids $id -AttackSurfaceReductionRules_Actions AuditMode
}

# Controle op welke regels nu actief zijn
Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids, AttackSurfaceReductionRules_Actions

Via Intune of Group Policy zet je dit uiteraard centraal, niet per machine.

Op zoek naar bestanden zonder herkomst

Er is geen betrouwbare handtekening die zegt “dit bestand is via CVE-2026-96951 binnengekomen”. Wat je wel kunt doen: zoeken naar bestanden die via browser of mailclient zijn binnengekomen, maar die zich gedragen alsof ze lokaal zijn. Op een enkele machine controleer je het met:

# Bestaat er een Zone.Identifier-stream, en wat staat erin?
Get-Item .\factuur.docm -Stream Zone.Identifier -ErrorAction SilentlyContinue
Get-Content .\factuur.docm -Stream Zone.Identifier -ErrorAction SilentlyContinue

# Downloads met risicovolle extensies zonder herkomstmarkering
$ext = '.lnk','.js','.hta','.iso','.docm','.xlsm'
Get-ChildItem $env:USERPROFILE\Downloads -File |
  Where-Object { $ext -contains $_.Extension.ToLower() } |
  Where-Object { -not (Get-Item $_.FullName -Stream Zone.Identifier -ErrorAction SilentlyContinue) } |
  Select-Object Name, CreationTime

Let op: een ontbrekende markering is op zichzelf niet verdacht. Microsoft beschrijft dat bestanden die via de OneDrive-synchronisatie of via “Openen in desktop-app” binnenkomen geen MotW hebben, en FAT32-schijven kennen geen alternate data streams. Verwacht dus ruis.

In Microsoft Defender for Endpoint kun je op schaal zoeken. Onderstaande query is een startpunt dat ik niet tegen deze specifieke aanval heb getest. Hij zoekt bestanden die door een browser of mailclient zijn aangemaakt, zonder bekende herkomst-URL, en die daarna als proces zijn gestart:

let risico = dynamic([".lnk", ".js", ".hta", ".iso", ".docm", ".xlsm", ".exe"]);
DeviceFileEvents
| where Timestamp > ago(7d)
| where ActionType == "FileCreated"
| where InitiatingProcessFileName in~ ("msedge.exe", "chrome.exe", "firefox.exe", "outlook.exe", "olk.exe")
| where FileName has_any (risico)
| where isempty(FileOriginUrl)
| join kind=inner (
    DeviceProcessEvents
    | where Timestamp > ago(7d)
    | project DeviceId, ProcessTime = Timestamp, FolderPath, ProcessCommandLine, AccountName
  ) on DeviceId, FolderPath
| where ProcessTime between (Timestamp .. (Timestamp + 30m))
| project Timestamp, DeviceName, FileName, FolderPath, InitiatingProcessFileName, ProcessCommandLine, AccountName

Reken op valspositieven en pas de lijst met extensies en processen aan op wat in jouw omgeving normaal is. Een bruikbare eerste stap is een baseline: draai hem eerst over de afgelopen weken en kijk wat er zonder aanval uitkomt.

Praktische conclusie

Het record aan CVE’s zegt vooral dat prioriteren steeds belangrijker wordt, niet dat alles tegelijk gepatcht moet worden. In deze maand is de volgorde duidelijk: eerst de actief misbruikte kwetsbaarheid, dan de kritieke fouten in AD DS en op internetgerichte diensten, en pas daarna de rest van de cyclus. Wie MotW-bescherming als enige verdediging tegen bijlagen heeft, doet er goed aan om vandaag nog te controleren welke lagen daarachter zitten.

Bronnen