Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
detect_CVE-2026-86950 — Uno strumento Python per rilevare file PDF che sfruttano CVE-2026-86950 | Kitploit
Strumenti/GitHubGitHub/decalage2/detect_cve-2026-86950
Analisi StaticaScanner di VulnerabilitàAnalisi delle VulnerabilitàExploitAnalisi MalwarePaper e Ricerca
GitHubdecalage2/detect_cve-2026-86950

detect_CVE-2026-86950

Uno strumento Python per rilevare file PDF che sfruttano CVE-2026-86950

Vedi Repository
621 mese faNon ancora revisionato

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

Rilevatore di exploit PDF CVE-2026-86950

Per maggiori contesto su questo progetto e sulla CVE-2026-86950, consulta https://decalage.info/CVE-2026-86950/

Disclaimer: la maggior parte di questo readme e del codice di rilevamento è stata scritta con l'aiuto di agenti di programmazione AI. Lo strumento è stato testato con successo su migliaia di file PDF legittimi e sul proof-of-concept disponibile pubblicato qui. Tuttavia, questo strumento è nuovo e l'algoritmo di rilevamento è piuttosto complesso, quindi usalo con cautela.

detect_cve_2026_86950.py analizza staticamente i file PDF alla ricerca di font incorporati costruiti per sfruttare la CVE-2026-86950 ("The Great Glyph Grift"), una scrittura fuori dai limiti nel rasterizzatore di glifi con anti-aliasing di Apple CoreGraphics (corretta in iOS / macOS 26.7.1).

Non esegue mai il rendering del font né esegue codice di exploit — analizza il PDF e il programma del font incorporato e cerca la firma strutturale dell'attacco.

La vulnerabilità (perché il rilevamento funziona)

CoreGraphics converte una coordinata di dispositivo in virgola mobile in un intero fixed-point 16.12 con all'incirca:

int32_t aa_double_to_fixed(double px) { return (int32_t)(0.5 + 4096.0 * px); }

Quando 4096 * px supera l'intervallo di int32, il cast è un comportamento indefinito, e due punti di chiamata (aa_moveto vs. aa_lineto) non concordano — uno satura, l'altro tronca. Questa discordanza corrompe il calcolo del bounding-box del glifo in aa_add_edges, così il buffer di copertura in aa_cache_render viene allocato troppo piccolo e il rasterizzatore scrive fuori dai limiti. La patch 26.7.1 aggiunge un clamping esplicito a ±0x3FFFF001.

Il proof-of-concept pubblico costruisce un font TrueType malevolo che forza una coordinata sovradimensionata di questo tipo:

  • una catena profonda di glifi compositi, ciascuno dei quali scala il precedente di ~2× (scala F2Dot14 vicina al suo massimo di ~1.99994);
  • un piccolo glifo foglia con un contorno degenere a 2 punti a una coordinata elevata;
  • così il contorno reale del glifo in cima raggiunge ~16 milioni di unità font (~1000× il quadrato em) mentre il bounding box memorizzato del glifo resta minuscolo;
  • a una dimensione del testo elevata (/Tf 1024), 4096 × device_coord va in overflow su int32.

Cosa controlla il rilevatore

  1. Estrae ogni programma di font outline incorporato con pikepdf — TrueType (/FontFile2) e CFF / OpenType (/FontFile3).
  2. Analizza ogni font con fontTools e misura l'estensione reale delle coordinate di ogni glifo:
    • TrueType: risolve ricorsivamente i componenti compositi (così una catena di scaling annidata viene seguita fino alla sua estensione reale);
    • CFF / Type2: disegna ogni charstring tramite una penna control-bounds (così le coordinate accumulate attraverso molti operatori relativi vengono misurate).
  3. Segnala un font quando vale una di queste condizioni:
    • il contorno reale di un glifo si estende ben oltre il quadrato em (nessun glifo legittimo lo fa — soglia 10× em, quasi certamente oltre 100× em);
    • l'estensione reale rende minuscolo il bounding box dichiarato dal glifo stesso (la "bugia" del bounding-box da cui dipende l'exploit);
    • (solo TrueType) annidamento profondo di compositi combinato con componenti che scalano verso l'alto (>1) — la catena di amplificazione delle coordinate usata dal PoC pubblico.
  4. Combina la coordinata nel caso peggiore con le dimensioni del testo usate nei content stream della pagina (/Tf, Tm) e verifica se 4096 × device_coord supera effettivamente INT32_MAX — cioè se l'overflow in virgola fissa è raggiungibile.

Verdetti: exploit (overflow raggiungibile), suspicious (geometria sovradimensionata ma senza overflow alla dimensione osservata), clean.

Installazione ed esecuzione

# with uv (recommended)
uv venv
uv pip install -r requirements.txt

# or any environment with pikepdf + fonttools
python3 detect_cve_2026_86950.py suspicious.pdf
python3 detect_cve_2026_86950.py -v *.pdf      # per-font details
python3 detect_cve_2026_86950.py --json f.pdf  # machine-readable

Codice di uscita: 0 pulito, 1 exploit/sospetto trovato, 2 errore.

Limitazioni

  • La causa principale della CVE è la conversione a virgola fissa nel rasterizzatore di percorso condiviso aa_* di CoreGraphics, che renderizza sia i contorni TrueType glyf sia quelli CFF/Type2. Il PoC pubblico amplifica le coordinate con glifi compositi TrueType; un font CFF può raggiungere coordinate sovradimensionate direttamente (ad esempio accumulando operatori relativi), quindi vengono analizzati sia /FontFile2 sia /FontFile3. L'euristica della catena composita è specifica per TrueType; per CFF il segnale è il controllo delle coordinate sovradimensionate / della falsificazione del bounding-box.
  • La scansione della dimensione del testo (/Tf, Tm) dei content stream è di tipo best-effort; non valuta completamente lo stato grafico PDF / la CTM. Quando non viene trovata alcuna dimensione, per il controllo di overflow viene assunto un valore predefinito conservativo di 1024. I segnali di geometria sovradimensionata intrinseci al font non dipendono da questo.
  • Questo è un rilevatore strutturale euristico, non un renderer in sandbox: è pensato per intercettare il pattern di exploit noto e i font palesemente malformati, non per dimostrare che un file sia sicuro.
Scarica lo strumento