VYPR
Critical severity9.8NVD Advisory· Published Nov 2, 2017· Updated May 13, 2026

CVE-2017-11767

CVE-2017-11767

Description

ChakraCore allows an attacker to gain the same user rights as the current user, due to the way that the ChakraCore scripting engine handles objects in memory, aka "Scripting Engine Memory Corruption Vulnerability".

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
Microsoft.ChakraCoreNuGet
< 1.6.21.6.2

Affected products

1
  • Microsoft Corporation/ChakraCorev5
    Range: ChakraCore

Patches

1
b3e3959d1481

[CVE-2017-11767] Do not instantiate param scope if only the function expression symbol is captured

https://github.com/chakra-core/ChakraCoreAneesh DivakarakurupSep 6, 2017via ghsa
2 files changed · +22 1
  • lib/Runtime/ByteCode/ByteCodeEmitter.cpp+14 1 modified
    @@ -4219,7 +4219,20 @@ void ByteCodeGenerator::StartEmitFunction(ParseNode *pnodeFnc)
             {
                 bodyScope->SetMustInstantiate(funcInfo->frameSlotsRegister != Js::Constants::NoRegister);
             }
    -        paramScope->SetMustInstantiate(!pnodeFnc->sxFnc.IsBodyAndParamScopeMerged());
    +
    +        if (!pnodeFnc->sxFnc.IsBodyAndParamScopeMerged())
    +        {
    +            if (funcInfo->frameObjRegister != Js::Constants::NoRegister)
    +            {
    +                paramScope->SetMustInstantiate(true);
    +            }
    +            else
    +            {
    +                // In the case of function expression being captured in the param scope the hasownlocalinclosure will be false for param scope,
    +                // as function expression symbol stays in the function expression scope. We don't have to set mustinstantiate for param scope in that case.
    +                paramScope->SetMustInstantiate(paramScope->GetHasOwnLocalInClosure());
    +            }
    +        }
         }
         else
         {
    
  • test/es6/default-splitscope.js+8 0 modified
    @@ -186,6 +186,14 @@ var tests = [
             };
             f13();
     
    +        var f14 = function f15(a = (function() {
    +                return f15(1);
    +            })()) {
    +                with({}) {
    +                };
    +                return a === 1 ? 10 : a;
    +        };
    +        assert.areEqual(10, f14(), "Function expresison is captured in the param scope when no other formals are captured");
         }
      },
      {
    

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.