村长 发表于 2022-1-28 22:16:44

【原创】chrome已提交的两个漏洞分析(五)

如果我们用以上操作设置x和y的值之后,那么二者type都是Range(-1, 0),看下x&y后的type。

Type OperationTyper::NumberBitwiseAnd(Type lhs, Type rhs) {

...

double min = kMinInt;
// And-ing any two values results in a value no larger than their maximum.
// Even no larger than their minimum if both values are non-negative.
double max =
lmin >= 0 && rmin >= 0 ? std::min(lmax, rmax) : std::max(lmax, rmax);
// And-ing with a non-negative value x causes the result to be between
// zero and x.
if (lmin >= 0) {
min = 0;
max = std::min(max, lmax);
}
if (rmin >= 0) {
min = 0;
max = std::min(max, rmax);
}
return Type::Range(min, max, zone());
}
显然x&y后的type是Range(-1, 0),实际是1,但是二者的所在优化阶段产生了冲突,为了以上的情况能够得以实现,下面还需要其他操作,这里有些细节导致难度加大。

However, one last obstacle remains: the type propagation to the additions and subtracions only happens during the LoadElimination phase; the BitwiseAnd however is only given a type once during the initial Typer phase; we can’t use the typed optimization again as there is no equivalent “SpeculativeNumberAnd”.

So we need to somehow take the bounds information from the later LoadElimination phase and make it available already during the earlier Typer phase.

我们可以使用Math.min(2**32-1, x+(2**32-1)) – (2**32-1),之后可以使得typer知道这里不会有正数结果,这是在最开始的typer阶段就可以确定的,在后面同样用其他手段使得在对应阶段也是这个Range。

之后为了得到Range(0, 0)实际值是-1的变量,我们先使用其和-1进行Max运算,然后再取反并右移31位。

完整Poc在下一续级
#【原创】chrome已提交的两个漏洞分析(六)#

千面萌萌 发表于 2022-1-29 10:43:46

支持楼主,用户楼主,楼主英明呀!!!

68079330 发表于 2022-1-29 12:15:14

鄙视楼下的顶帖没我快,哈哈

liqiang24 发表于 2022-1-30 16:03:31

我也顶起出售广告位

neige 发表于 2022-1-31 08:13:09

有空一起交流一下

yichong 发表于 2022-1-31 08:26:56

我也是坐沙发的

无量科技 发表于 2022-2-1 20:51:30

前排顶,很好!

伴我多久 发表于 2022-2-2 21:26:51

我也顶起出售广告位

大司命 发表于 2022-2-4 11:39:21

我是个凑数的。。。
页: [1]
查看完整版本: 【原创】chrome已提交的两个漏洞分析(五)

村长黑科技是专业提供项目资源的服务的村长黑科技平台,如合购网赚项目、引流推广软件、软件程序开发等项目就选村长黑科
技平台参与或发布项目定制各种软件就来村长黑科技平台

本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件的破解分析文章、破解分析视频、补丁、注册机和注册信息,

仅限用于学习和研究软件安全的目的。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习破解分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,

请购买注册正版软件,获得正版优质服务!不允许将上述内容私自传播、销售或者其他任何非法用途!否则,产生任何法律责任,一切后果请用户自负,与本网站无关!如有侵权或非法用途请举报!请发送到邮箱:cxphj8@foxmail.com

《意见反馈》或《截图指定页面备注》发送到邮件,收到后24小时内删除,禁止用户学习使用关掉用户【学习使用权】!