VYPR
High severity7.5NVD Advisory· Published Dec 12, 2017· Updated May 13, 2026

CVE-2017-11911

CVE-2017-11911

Description

ChakraCore and Windows 10 1511, 1607, 1703, 1709, and Windows Server 2016 allows an attacker to execute arbitrary code in the context of the current user, due to how the scripting engine handles objects in memory, aka "Scripting Engine Memory Corruption Vulnerability". This CVE ID is unique from CVE-2017-11886, CVE-2017-11889, CVE-2017-11890, CVE-2017-11893, CVE-2017-11894, CVE-2017-11895, CVE-2017-11901, CVE-2017-11903, CVE-2017-11905, CVE-2017-11905, CVE-2017-11907, CVE-2017-11908, CVE-2017-11909, CVE-2017-11910, CVE-2017-11912, CVE-2017-11913, CVE-2017-11914, CVE-2017-11916, CVE-2017-11918, and CVE-2017-11930.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
Microsoft.ChakraCoreNuGet
< 1.7.51.7.5

Affected products

3
  • Microsoft Corporation/ChakraCore, Microsoft Edgev5
    Range: ChakraCore and Windows 10 1511, 1607, 1703, 1709, and Windows Server 2016.
  • cpe:2.3:a:microsoft:edge:-:*:*:*:*:*:*:*
  • cpe:2.3:a:microsoft:chakracore:*:*:*:*:*:*:*:*
    Range: <1.7.5

Patches

1
a5d6be626305

[CVE-2017-11911] OOB read in asm.js - Google, Inc.

https://github.com/chakra-core/ChakraCoreMichael HolmanNov 14, 2017via ghsa
1 file changed · +8 0
  • lib/Runtime/Language/AsmJsModule.cpp+8 0 modified
    @@ -839,6 +839,7 @@ namespace Js
             AsmJsSIMDValue simdValue;
             simdValue.Zero();
             // define all variables
    +        BVSparse<ArenaAllocator> initializerBV(&mAllocator);
             while (pnode->nop == knopList)
             {
                 ParseNode * varNode = ParserWrapper::GetBinaryLeft(pnode);
    @@ -932,6 +933,12 @@ namespace Js
                     {
                         return Fail(decl, _u("Failed to define var"));
                     }
    +                // If we are declaring a var that we previously used in an initializer, that value will be undefined
    +                // so we need to throw an error.
    +                if (initializerBV.Test(var->GetName()->GetPropertyId()))
    +                {
    +                    return Fail(decl, _u("Cannot declare a var after using it in an initializer"));
    +                }
                     RegSlot loc = Constants::NoRegister;
                     if (pnodeInit->nop == knopInt)
                     {
    @@ -970,6 +977,7 @@ namespace Js
                         if (declSym->GetSymbolType() == AsmJsSymbol::Variable)
                         {
                             AsmJsVar * definition = declSym->Cast<AsmJsVar>();
    +                        initializerBV.Set(definition->GetName()->GetPropertyId());
                             switch (definition->GetVarType().which())
                             {
                             case AsmJsVarType::Double:
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

11

News mentions

0

No linked articles in our index yet.