CVE-2017-0234
Description
A remote code execution vulnerability exists in Microsoft Edge in the way that the Chakra JavaScript engine renders when handling objects in memory, aka "Scripting Engine Memory Corruption Vulnerability." This CVE ID is unique from CVE-2017-0224, CVE-2017-0228, CVE-2017-0229, CVE-2017-0230, CVE-2017-0235, CVE-2017-0236, and CVE-2017-0238.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Remote code execution in Microsoft Edge's Chakra engine due to aggressive bounds check removal for virtual typed arrays, allowing OOB memory access.
Vulnerability
A remote code execution vulnerability exists in the Chakra JavaScript engine used by Microsoft Edge. The issue lies in the GlobOpt::OptArraySrc function in the JIT compiler, where bounds checks for virtual typed arrays were too aggressively removed, allowing out-of-bounds memory access. This affects Microsoft Edge prior to the May 2017 security update and ChakraCore before commit a1345ad [1][4].
Exploitation
An attacker can host a crafted website containing specially crafted JavaScript that triggers the vulnerability when visited in Microsoft Edge. The attacker needs no authentication and the user only needs to visit the site. The vulnerability can be exploited without user interaction beyond normal browsing [1].
Impact
Successful exploitation allows the attacker to execute arbitrary code in the context of the current user. This could lead to full compromise of the user's system, including data disclosure and installation of programs [1].
Mitigation
Microsoft released a security update in May 2017 as part of cumulative updates for Microsoft Edge. For ChakraCore, the fix was included in a servicing release on May 10, 2017 [2] and is incorporated in updates after commit a1345ad [4]. Users should apply the latest updates. ChakraCore security updates were provided until March 2021 [3].
AI Insight generated on May 22, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
Microsoft.ChakraCoreNuGet | < 1.4.4 | 1.4.4 |
Affected products
4- Microsoft Corporation/Microsoft Edgev5Range: Windows 10 for 32-bit Systems, Windows 10 for x64-based Systems, Windows 10 Version 1511 for 32-bit Systems, Windows 10 Version 1511 for x64-based Systems, Windows 10 Version 1607 for 32-bit Systems, Windows 10 Version 1607 for x64-based Systems, Windows 10 Version 1703 for 32-bit Systems, and Windows 10 Version 1703 for x64-based Systems.
Patches
1a1345ad48064[CVE-2017-0234] Too aggressive bound check removal
1 file changed · +31 −3
lib/Backend/GlobOpt.cpp+31 −3 modified@@ -16338,9 +16338,37 @@ GlobOpt::OptArraySrc(IR::Instr * *const instrRef) ) ) { - eliminatedLowerBoundCheck = true; - eliminatedUpperBoundCheck = true; - canBailOutOnArrayAccessHelperCall = false; + // Unless we're in asm.js (where it is guaranteed that virtual typed array accesses cannot read/write beyond 4GB), + // check the range of the index to make sure we won't access beyond the reserved memory beforing eliminating bounds + // checks in jitted code. + if (!GetIsAsmJSFunc()) + { + IR::RegOpnd * idxOpnd = baseOwnerIndir->GetIndexOpnd(); + if (idxOpnd) + { + StackSym * idxSym = idxOpnd->m_sym->IsTypeSpec() ? idxOpnd->m_sym->GetVarEquivSym(nullptr) : idxOpnd->m_sym; + Value * idxValue = FindValue(idxSym); + IntConstantBounds idxConstantBounds; + if (idxValue && idxValue->GetValueInfo()->TryGetIntConstantBounds(&idxConstantBounds)) + { + BYTE indirScale = Lowerer::GetArrayIndirScale(baseValueType); + int32 upperBound = idxConstantBounds.UpperBound(); + int32 lowerBound = idxConstantBounds.LowerBound(); + if (lowerBound >= 0 && ((static_cast<uint64>(upperBound) << indirScale) < MAX_ASMJS_ARRAYBUFFER_LENGTH)) + { + eliminatedLowerBoundCheck = true; + eliminatedUpperBoundCheck = true; + canBailOutOnArrayAccessHelperCall = false; + } + } + } + } + else + { + eliminatedLowerBoundCheck = true; + eliminatedUpperBoundCheck = true; + canBailOutOnArrayAccessHelperCall = false; + } } }
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
9- portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0234nvdPatchVendor AdvisoryWEB
- www.securityfocus.com/bid/98229nvdThird Party AdvisoryVDB Entry
- github.com/advisories/GHSA-6p7q-85qq-7c43ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2017-0234ghsaADVISORY
- github.com/chakra-core/ChakraCore/commit/a1345ad48064921e8eb45fa0297ce405a7df14d3ghsaWEB
- github.com/chakra-core/ChakraCore/pull/2959ghsaWEB
- web.archive.org/web/20210124044042/http://www.securityfocus.com/bid/98229ghsaWEB
- web.archive.org/web/20211019191652/http://www.securitytracker.com/id/1038431ghsaWEB
- www.securitytracker.com/id/1038431nvd
News mentions
0No linked articles in our index yet.