Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
detect_CVE-2026-86950 — Ein Python-Tool zur Erkennung von PDF-Dateien, die CVE-2026-86950 ausnutzen | Kitploit
Tools/GitHubGitHub/decalage2/detect_cve-2026-86950
Statische AnalyseSchwachstellenscannerSchwachstellenanalyseExploitationMalware-AnalysePapers & Forschung
GitHubdecalage2/detect_cve-2026-86950

detect_CVE-2026-86950

Ein Python-Tool zur Erkennung von PDF-Dateien, die CVE-2026-86950 ausnutzen

Repository anzeigen
62vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-86950 PDF-Exploit-Detektor

Für mehr Kontext zu diesem Projekt und CVE-2026-86950 siehe https://decalage.info/CVE-2026-86950/

Haftungsausschluss: Der größte Teil dieser Readme und des Erkennungscodes wurde mit Hilfe von KI-Coding-Agenten geschrieben. Das Tool wurde erfolgreich an Tausenden legitimer PDF-Dateien und an dem verfügbaren Proof-of-Concept getestet, der hier veröffentlicht wurde. Allerdings ist dieses Tool neu und der Erkennungsalgorithmus recht komplex, daher sollte es mit Vorsicht verwendet werden.

detect_cve_2026_86950.py durchsucht PDF-Dateien statisch nach eingebetteten Schriften, die darauf ausgelegt sind, CVE-2026-86950 („The Great Glyph Grift") auszunutzen – einen Out-of-Bounds-Write im Anti-Aliasing-Glyphen-Rasterizer von Apple CoreGraphics (behoben in iOS / macOS 26.7.1).

Es rendert niemals die Schrift oder führt Exploit-Code aus – es parst die PDF-Datei und das eingebettete Schriftprogramm und sucht nach der strukturellen Signatur des Angriffs.

Die Schwachstelle (warum die Erkennung funktioniert)

CoreGraphics wandelt eine Gleitkomma-Gerätekoordinate mit ungefähr folgendem Code in eine 16.12-Festkomma-Ganzzahl um:

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

Wenn 4096 * px den Bereich von int32 überschreitet, ist die Umwandlung undefiniertes Verhalten, und zwei Aufrufstellen (aa_moveto vs. aa_lineto) sind sich uneinig — eine sättigt, eine schneidet ab. Diese Uneinigkeit verfälscht die Berechnung der Glyphen-Bounding-Box in aa_add_edges, sodass der Coverage-Puffer in aa_cache_render zu klein allokiert wird und der Rasterizer außerhalb der Grenzen schreibt. Der Patch 26.7.1 fügt explizites Clamping auf ±0x3FFFF001 hinzu.

Der öffentliche Proof-of-Concept erstellt eine bösartige TrueType-Schriftart, die eine solche überdimensionierte Koordinate erzwingt:

  • eine tiefe Kette von zusammengesetzten Glyphen, wobei jede die vorherige um ~2× skaliert (F2Dot14-Skalierung nahe ihrem Maximum von ~1,99994);
  • eine winzige Blattglyphe mit einer degenerierten 2-Punkt-Kontur an einer großen Koordinate;
  • sodass die tatsächliche Kontur der obersten Glyphe ~16 Millionen Schriftart-Einheiten erreicht (~1000× das Em-Quadrat), während die gespeicherte Bounding-Box der Glyphe winzig bleibt;
  • bei einer großen Textgröße (/Tf 1024) läuft 4096 × device_coord über int32 über.

Was der Detektor prüft

  1. Extrahiert jedes eingebettete Outline-Font-Programm mit pikepdf — TrueType (/FontFile2) und CFF / OpenType (/FontFile3).
  2. Parst jede Schriftart mit fontTools und misst die tatsächliche Koordinatenausdehnung jeder Glyphe:
    • TrueType: löst zusammengesetzte Komponenten rekursiv auf (sodass eine verschachtelte Skalierungskette bis zu ihrer tatsächlichen Ausdehnung verfolgt wird);
    • CFF / Type2: zeichnet jeden Charstring durch einen Control-Bounds-Pen (sodass über viele relative Operatoren akkumulierte Koordinaten gemessen werden).
  3. Markiert eine Schriftart, wenn eine der folgenden Bedingungen zutrifft:
    • die tatsächliche Kontur einer Glyphe weit über das Em-Quadrat hinausreicht (keine legitime Glyphe tut dies — Schwellenwert 10× Em, nahezu sicher über 100× Em);
    • die tatsächliche Ausdehnung die eigene deklarierte Bounding-Box der Glyphe weit übersteigt (die Bounding-Box-„Lüge", auf der der Exploit beruht);
    • (nur TrueType) tiefe zusammengesetzte Verschachtelung kombiniert mit hochskalierenden (>1) Komponenten — die Koordinaten-Amplifikationskette, die der öffentliche PoC verwendet.
  4. Kombiniert die Worst-Case-Koordinate mit den in den Seiteninhalts-Streams verwendeten Textgrößen (/Tf, Tm) und prüft, ob 4096 × device_coord tatsächlich INT32_MAX überschreitet — d. h. ob der Festkomma-Überlauf erreichbar ist.

Urteile: exploit (Überlauf erreichbar), suspicious (überdimensionierte Geometrie, aber kein Überlauf bei der beobachteten Größe), clean.

Installieren & ausführen

# 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

Exit-Code: 0 sauber, 1 Exploit/verdächtig gefunden, 2 Fehler.

Einschränkungen

  • Die Grundursache der CVE ist die Festkomma-Konvertierung im gemeinsamen aa_*-Pfad-Rasterizer von CoreGraphics, der sowohl TrueType-glyf- als auch CFF/Type2-Konturen rendert. Der öffentliche PoC verstärkt Koordinaten mit TrueType-Composite-Glyphen; eine CFF-Schrift kann überdimensionierte Koordinaten direkt erreichen (z. B. durch Akkumulieren relativer Operatoren), daher werden sowohl /FontFile2 als auch /FontFile3 analysiert. Die Composite-Ketten-Heuristik ist TrueType-spezifisch; bei CFF ist das Signal die Prüfung auf überdimensionierte Koordinaten / falsche Bounding-Boxen.
  • Der Scan der Textgröße (/Tf, Tm) in Content-Streams erfolgt nach bestem Bemühen; er wertet den PDF-Grafikzustand / CTM nicht vollständig aus. Wenn keine Größe gefunden wird, wird für die Überlaufprüfung ein konservativer Standardwert von 1024 angenommen. Die schriftintrinsischen Signale für überdimensionierte Geometrie hängen nicht davon ab.
  • Dies ist ein heuristischer struktureller Detektor, kein sandboxed Renderer: Er soll das bekannte Exploit-Muster und offensichtlich fehlerhafte Schriften erkennen, nicht beweisen, dass eine Datei sicher ist.
Tool herunterladen