FlawOpen

flawopen.com/Incidents/bluemoon-chrome-v8-windows-alpc-september-2026

● BlueMoon · CVE-2026-85046 · September 2026 · Hoch
Sicherheitsforschung · FlawOpen

BlueMoon: Drei Schwachstellen überwanden die Grenzen von Chrome und Windows

Proofpoint berichtete über gezielte BlueMoon-Kampagnen, die CVE-2026-85046 (V8-Typverwechslung), CVE-2026-87491 (V8-Sandbox-Ausbruch) und CVE-2026-85880 (lokale Rechteausweitung im Windows-Kernel) verketteten. Google und Microsoft bestätigten Ausnutzung vor den jeweiligen Korrekturen; Chromium-Browser und Windows müssen getrennt aktualisiert werden.[1], [2], [3], [4]

💡 Einfache Erklärung (ELI5)

Stellen Sie sich eine Sortiererin vor, die prüft, ob alle Kisten Bücher enthalten, dann aber zulässt, dass ein Besucher den Inhalt vor der Sortierung nach alten Etiketten austauscht. Der erste Fehler öffnet einen verschlossenen Bereich; ein weiterer dessen Gitter und ein dritter verändert die Zutrittskarten. Jedes Schloss braucht eine eigene Reparatur.[1]

Kernkonzepte & Begriffe

V8 / type confusion
V8 führt JavaScript aus. Bei CVE-2026-85046 wurden Optimierungsannahmen von Array.prototype.sort ungültig, als fill() die Elementart änderte.[1], [2]
V8 sandbox / WebAssembly
Die V8-Sandbox trennt vom Motor verwalteten Speicher im Renderer ab. CVE-2026-87491 überschritt sie durch beschädigte WebAssembly-Metadaten; sie ist nicht die Prozess-Sandbox des Renderers.[1], [3]
ALPC / WNF / privilege
ALPC und WNF sind Windows-Kernelmechanismen bei CVE-2026-85880. Die beschriebene Kette ermöglichte SeDebugPrivilege, eine Berechtigung zum Debuggen von Prozessen.[1], [4]

Framework-Zuordnungen

BlueMoon-Kettenstufen und Update-Entscheidungen

Stufe / CVE / GrenzeBelegte Angaben der QuellenAbwehrmaßnahme
V8-JIT-Typverwechslung — CVE-2026-85046Proofpoint beschreibt eine Comparator-Mutation von Array.prototype.sort über fill(), die eine Annahme zum Elementtyp ungültig macht. Google meldete einen Exploit in freier Wildbahn.Installieren Sie Chrome/Chromium 152.0.7977.82/.83 (Windows/Mac) oder .82 (Linux) oder neuer; starten Sie den Browser neu. Googles Release vom 3. September enthält die Korrektur.
V8-Sandbox-Ausbruch — CVE-2026-87491Proofpoint berichtet über beschädigte WebAssembly-Metadaten, die die V8-Speichersandbox überwinden; diese ist von der Renderer-Prozesssandbox getrennt. Google meldete einen Exploit in freier Wildbahn.Installieren Sie Chrome/Chromium 153.0.8010.36/.37 (Windows/Mac) oder .36 (Linux) oder neuer; starten Sie den Browser neu. Googles Release vom 8. September enthält die Korrektur.
Windows-Kernel-LPE — CVE-2026-85880Proofpoint beschreibt einen ALPC/WNF-Pfad zu SeDebugPrivilege und nennt die älteren vom Kit angegriffenen Windows-Builds. Microsoft bestätigt Ausnutzung vor den Updates vom 8. September. Die Kit-Zielliste ist kein vollständiger Bestand betroffener Versionen.Installieren Sie aktuelle unterstützte Windows-Sicherheitsupdates, einschließlich des Updates vom 8. September 2026 oder neuer; nutzen Sie MSRC für das OS-spezifische Paket und führen Sie erforderliche Neustarts aus. Windows getrennt von Chrome patchen.

Vorfall-Zeitstrahl

2026-08-28

Proofpoint beobachtete BlueMoon erstmals.[1]

2026-09-03

Chrome Stable behob CVE-2026-85046 in 152.0.7977.82/.83 für Windows und Mac sowie .82 für Linux.[2]

2026-09-08

Chrome Stable behob CVE-2026-87491 in 153.0.8010.36/.37 für Windows und Mac sowie .36 für Linux; Microsoft behob CVE-2026-85880 im September. Microsoft bestätigte eine Ausnutzung von CVE-2026-85880 vor den Windows-Sicherheitsupdates vom 8. September.[3], [4], [5]

Schritt-für-Schritt Angriffsablauf

Schritt 1

Beobachtete Zustellung

Proofpoint beobachtete gezielte Spearphishing-Kampagnen mit einem Link zum Exploit-Kit. Die Browser-Stufen setzten voraus, dass das Opfer den Link in einem verwundbaren Chromium-Browser öffnet.[1]

Schritt 2

V8-Typverwechslung — CVE-2026-85046

Proofpoint beschreibt einen optimierten Array.prototype.sort-Pfad, dessen Typannahme ungültig werden konnte, wenn der Comparator das Array mit fill() änderte. Die daraus entstehende Typverwechslung war die erste Schwachstelle im Renderer; Google meldete einen Exploit in freier Wildbahn.[1], [2]

Schritt 3

V8-Sandbox-Ausbruch — CVE-2026-87491

Proofpoint berichtet über die Beschädigung von WebAssembly-Modulmetadaten, um die V8-Speichersandbox zu überwinden. Diese Grenze ist von der Chrome-Renderer-Prozesssandbox getrennt; Google meldete ebenfalls einen Exploit in freier Wildbahn.[1], [3]

Schritt 4

Windows-Kernel-LPE — CVE-2026-85880

Proofpoint beschreibt einen ALPC/WNF-Kernelpfad, über den SeDebugPrivilege im Renderer auf bestimmten älteren Windows-Builds aktiviert wurde. Microsoft bestätigte unabhängig eine Ausnutzung vor den Sicherheitsupdates vom 8. September 2026.[1], [4]

Schritt 5

Ausbruch aus dem Renderer-Prozess

Mit den Browser-Stufen und einem unterstützten Windows-Ziel konnte die berichtete Kette über die lokale Rechteausweitung aus dem Renderer in den übergeordneten Browserprozess gelangen. Das Python-Beispiel zeigt nur die veraltete Annahme, nicht die Exploit-Kette.[1], [4]

Quellcode: Verwundbar vs. Sicher

Sicheres Python-Lehrbeispiel für ungültige Annahmen, kein V8-Code, Exploit oder Herstellerpatch. Ein harmloser Rückruf kann Ganzzahlen nach der Prüfung durch Text ersetzen. Die Korrektur prüft nach dem Rückruf eine begrenzte Kopie und verarbeitet sie ohne weitere Rückrufe. Im fehlerhaften Fall wirft Python eine Ausnahme; native Speicherfehler werden nicht simuliert. Nur vertrauenswürdige, begrenzte synchrone Rückrufe verwenden.

VERWUNDBARE IMPLEMENTIERUNG
def numeric_total(values, callback):
    if type(values) is not list or len(values) > 1024:
        raise ValueError("Invalid batch")
    if any(type(x) is not int for x in values):
        raise ValueError("Expected integers")
    callback(values)
    # Der Callback könnte die Typannahme ungültig gemacht haben.
    return sum(values)
GEHÄRTETER SICHERHEITS-PATCH
def numeric_total(values, callback):
    if type(values) is not list or len(values) > 1024:
        raise ValueError("Invalid batch")
    callback(values)
    if len(values) > 1024:
        raise ValueError("Invalid batch")
    snapshot = tuple(values)
    if any(type(x) is not int or abs(x) > 1_000_000
           for x in snapshot):
        raise ValueError("Expected bounded integers")
    # Den geprüften Snapshot ohne weiteren Callback verwenden.
    return sum(snapshot)

Checkliste für Engineering & Systemsicherheit

Quellen