2025-05-30 14:27
上午有个朋友跟我说他脱离技术一线后的一些焦虑。他所在的行业,脱离一线就真的脱离一线了。不过我们这个行业想回一线是随时可以回的。
我以前跟你们讲过找微软追讨 CVE-2018-8469 的事。
2017 年初,有同事找到一个 Edge 的漏洞,以及一个能在 Edge 里静默启动 IE 的漏洞。那么,如果再有一个 IE 本身的任意代码执行漏洞,再加上一个 IE 穿沙箱漏洞,四个漏洞组合就可以完成从 Edge 控制系统,可以去 Pwn2Own 玩了。但因为我们并没针对 Pwn2Own 投人力,所以没储备可以配合的漏洞。另外当时距离 Pwn2Own 已经很近,也没时间再去找一套 IE 和 IE 沙箱的漏洞了。
找一个 Edge 漏洞也不容易,如果不能组合成功还挺可惜的。记得当时天已经黑了,我回到办公室,一个人坐那儿在大脑里模拟和 IE 有关的各种操作。这么高耗能地运转了大概七八分钟,我忽然想到一个可能性。
那时候的 Windows 资源浏览器和 IE 还是紧耦合的。所以,如果在 IE 里打开一个本地目录,系统就会切换为用资源浏览器访问这个目录。而资源浏览器进程当然是没有沙箱的。那么如果先创建一个名为 trojan.exe 的目录,让 IE 打开,然后在系统切换到用资源浏览器打开这个目录之前把 trojan.exe 换成一个可执行文件,是不是就等于让资源浏览器执行了 trojan.exe ?
我请同事用 Python 写了个程序快速试了一下,果然可以。也就是说,用这一个漏洞就可以完成本来需要“在 IE 里执行代码”+“突破 IE 沙箱”两个漏洞组合才能实现的功能。
于是,我们就在 Pwn2Own 2017 成功地用这个漏洞攻破了 Edge,拿到 8 万美元的奖金。这里还有个小插曲。我当时给这个漏洞的呈现设计了一种不同于“弹计算器”的方式:先打开一个 Notepad,然后通过发送窗口消息,在里面用打字机效果输出一段 Credit 内容。当时长亭的同学看了觉得很酷炫,找我问了是怎么做的,后来在他们的项目里也用了这个呈现方式。
但是,微软在现场认了 Edge 的漏洞,但觉得我想出的这个穿沙箱的问题不是漏洞。他们认为这不是程序员犯的错误,而是 Windows 系统的一种功能设计,也就是传说中的“It's a feature, not a bug”。
然而,2018 年 Google 的 Lokihardt 也发现了这个漏洞,并向微软报告。要么是因为这次处理漏洞报告的和当初在 Pwn2Own 现场的不是一拨人,要么是因为他们知道 Google 的风格是不管你补不补我都是要公开的,反正这次微软就认了,进行修复并分配了漏洞编号 CVE-2018-8469。但微软一开始在漏洞的致谢里并没提到我。于是我就给他们写了邮件,提醒了一下。最后还不错,他们把我加进去了,而且排在 Lokihardt 前面。
今年我安排一个同事去找一些某类漏洞。他表示早年这种问题比较多,但现在未必好找。我开完会后回到办公室,花 5 分钟找出了一个拿给他看。
徒弟去化斋的时候,为师自己也能降妖。 🔗tombkeeper的微博视频
2015-03-03 16:48
推荐阅读
2011-08-30 10:15
//@Fenng:这是做浏览器的公司通用的流氓做法。
2011-08-30 10:07
谋智中国的Firefox也会将用户所浏览网页里的淘客pid替换成自己的以赚取佣金?这个太恶心了吧?你把非淘客商品转成淘客商品这个还能理解,但是这样赤裸裸替换别人的pid就是抢了。