Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-85046 — Proof-of-concept and technical analysis for CVE-2026-85046, a V8 type confusion in inline Array.prototype.sort, including root cause, patch diff, and exploitation chain for Chrome < 152.0.7977.82. | Kitploit
Tools/GitHubGitHub/atiilla/cve-2026-85046
Vulnerability AnalysisExploitationWeb Application ExploitationBinary AnalysisPapers & ResearchLearning & Education
GitHubatiilla/cve-2026-85046

CVE-2026-85046

Proof-of-concept and technical analysis for CVE-2026-85046, a V8 type confusion in inline Array.prototype.sort, including root cause, patch diff, and exploitation chain for Chrome < 152.0.7977.82.

View Repository
7h 44m agoNot yet reviewed
Website

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-85046

V8 type confusion in inline Array.prototype.sort (Maglev + Turbofan). Chrome 6th zero-day of 2026.

FieldValue
CVSS8.8 (High)
CWECWE-843 (Type Confusion)
ComponentV8 JavaScript Engine -- Maglev/Turbofan inline sort
AffectedChrome < 152.0.7977.82, all Chromium-based browsers
FixedChrome 152.0.7977.82 (2026-09-03)
Fix commite0562d87ad9c17042b581582c99237d798572e67
CISA KEVAdded 2026-09-04, deadline 2026-09-18
Wild exploitationYes (confirmed by Google)
ReporterSalvatore Gulizia (Serotav)

Root Cause

The inline sort optimization accepts polymorphic element-kind feedback (PACKED_SMI_ELEMENTS + PACKED_ELEMENTS). When the comparator calls arr.fill(0), V8 migrates the receiver map backward from PACKED_ELEMENTS to PACKED_SMI_ELEMENTS. The post-sort map check passes because PACKED_SMI_ELEMENTS was in the original feedback set. The copy-back writes object pointers into an array whose map claims SMI-only elements.

The fix adds a precondition requiring all receiver maps in the feedback to share the same elements_kind before inlining sort.

Files

FileDescription
patch-analysis.mdFull patch diff analysis with root cause, trigger mechanism, and exploitation primitive assessment
patch-analysis.jsonStructured data: commit hashes, CWE, affected versions, exploit primitives
v8-research.mdV8 element kinds deep dive, prior art PoCs (CVE-2020-6418, CVE-2025-2135, CVE-2024-4947, etc.), sandbox architecture, escape techniques
poc-minimal.jsMinimal type confusion trigger for d8 (d8 --allow-natives-syntax poc-minimal.js)
poc.htmlFull exploitation chain: type confusion, addrof primitive, heap spray, fakeobj via backing store overlap, information leakage
exploit-notes.mdTechnical writeup: step-by-step chain, heap layout diagrams, pointer compression, sandbox impact, detection indicators, remediation

Quick Start

Minimal trigger (d8)

root@kitploit:~
# With V8 debug helpers
d8 --allow-natives-syntax poc-minimal.js

# Without (heuristic verification via String())
d8 poc-minimal.js

Full PoC (browser)

Open poc.html in Chrome < 152.0.7977.82. The exploit runs automatically and logs each stage to the page and developer console. Stages:

  1. JIT training with polymorphic element-kind feedback (2000 iterations)
  2. Type confusion trigger via arr.fill(0) in sort comparator
  3. addrof primitive -- leaks compressed heap pointers as integers
  4. Heap spray for double/object array backing store overlap
  5. fakeobj via overlap -- forges object references from controlled integers
  6. Information leakage -- dumps addresses of WebAssembly instance, window, document

Exploitation Chain Summary

root@kitploit:~
Training (2000 iter)
  |
  v
Type confusion: PACKED_ELEMENTS map -> PACKED_SMI_ELEMENTS map
                (backing store still holds object pointers)
  |
  v
addrof: String(confused_array) leaks pointers as integers
  |
  v
fakeobj: double/object array overlap writes controlled pointer
  |
  v
Fake JSArray with controlled elements pointer -> arbitrary R/W (intra-cage)
  |
  v
Code execution inside V8 sandbox (requires sandbox escape for full RCE)

Key Technical Details

  • Array length must be <= 16 (kMaxInlineSortLength)
  • ~1000-2000 iterations needed for Maglev/Turbofan optimization
  • Comparator must call arr.fill() with SMI values for backward map migration
  • Both PACKED_SMI and PACKED_ELEMENTS arrays must be passed during training
  • addrof leaks 32-bit compressed pointers (cage-relative, not full 64-bit VA)
  • V8 heap sandbox limits exploitation to intra-cage R/W without a second vulnerability

References

  • Chromium bug: crbug/542403045 (restricted)
  • Fix commit: e0562d87
  • Introducing commit: 66a3f1e9
  • Serotav writeup: https://serotav.github.io/Writeups/v8/when-sorting-leads-to-confusion/
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-85046
Download Tool