以下是关于漏洞的关键信息: 漏洞类型: Type confusion in Promise.allSettled 优先级: P1 严重性: S1 状态: Fixed (Verified) 漏洞详情 描述: - 问题: 在V8引擎的Promise.allSettled函数中存在类型混淆漏洞。 - 函数调用顺序: Promise.allSettled -> GeneratePromiseAll -> PerformPromiseAll - 函数说明: 在Torque函数PerformPromiseAll中,它会遍历用户提供的对象并对每个元素调用PromiseResolve。 - 解析: resolveElementFun和rejectElementFun在createResolveElementFunctor和createRejectElementFunctor中生成,并最终调用PromiseAllResolveElementClosure。 影响及风险 潜在风险: 用户可以通过用户定义的JS函数获得resolveElementFun和rejectElementFun,这会导致remainingElementsCount被减去两次,尽管只处理了一个承诺,从而可能导致提前返回Promise.allSettled。攻击者可能会利用此漏洞造成类型混淆并执行任意代码。 复现案例 说明: 在调试模式下运行d8 v8_poc.js时,由于Torque断言出错,d8会崩溃。 - 错误提示: