浏览器中的“幽灵”:跨页面脚本执行漏洞揭秘

本文通过作者亲身经历的浏览器异常现象,揭示了早期Web浏览器中存在的跨页面脚本执行漏洞,探讨了如何实现离开页面后仍能控制浏览器行为的“幽灵代码”技术原理及安全影响。

当我还是个孩子时,每周都会做噩梦。至今我仍清晰地记得一些梦境,尤其是那些涉及幽灵的梦。不是电影里常见的幽灵,而是看不见、只能听到和感受到的存在。为什么我会如此恐惧,甚至至今"清晰"记得?因为在那些噩梦中,我产生了一种拥有控制权的错觉,却始终无法逃离那些"实体"。即使醒来数小时后,我仍感到绝望。

很久以前,我曾为一家在线浮动广告公司处理Web浏览器相关工作,我的任务是确保浮动广告跨浏览器兼容(使其在Netscape和IE/Win/Mac上无论是否安装Flash都能正常工作)。那时,Opera还只是音乐软件,Firefox甚至还没出现在任何人的噩梦中。公平地说,Opera当时已经存在,但主要用于点击Fravia+上的红门。顺便提一下,那时的Opera还不是免费软件。

那是一个炎热的夏日,我正在尝试调整"人工智能"Flash影片在展示广告的网站上的位置。我不知道那个浮动广告的音乐是否与电影音乐相同,但对我来说很吓人。你知道,就是那种恐怖音乐类型,悬疑之类的。对我来说就是"不友好"。这是那种我不喜欢在黑暗的家中独自聆听的音乐。

设计师直到晚上10点才完成最终动画,所以我带着作业离开办公室:我需要完成定位,确保跨浏览器兼容,打包文件并交付。

回到家测试时,动画音乐真的让我很困扰。除了非常恐怖(当时是凌晨2点,我独自在家),我还不得不反复听同一段音乐!每次重新加载都意味着再次听到那段音乐。于是我干脆静音了扬声器,继续工作了两个小时,直到所有内容都正确定位,点击通过正确,动画在所有浏览器上都能完美运行。于是我放松下来,离开电脑,点燃了经典的放松香烟。今天的工作结束了。

半小时后,我回到电脑前启动Winamp,但当我看向屏幕时,看到了上次测试时加载在浏览器中的浮动广告,于是我点击了主页按钮,有效地跳转到about:blank并清空了页面。我加载Winamp想听几首歌再睡觉,但当我拖动音量调高解除静音时,“人工智能"的恐怖音乐突然从扬声器中爆出!我原本期待听到"Twisting the Night Away”(内层空间版本),但浮动广告音乐一直在播放!

发生了什么?浮动广告已经不在浏览器中了!这怎么可能?是的,浏览器是打开的,但没有标签页(当时只有Opera有标签页功能),所以唯一加载的页面是about:blank。我开始结束每个任务,直到只剩下浏览器。音乐来自我的浏览器,而浏览器只加载了一个空白页面!这怎么可能?

而且音乐对我来说很恐怖。它让我想起了童年的噩梦:看不见任何东西,但你能听到和感受到。我的噩梦成真了。浏览器(我生活的一部分)里面真的有一个幽灵!

我应该结束任务吗?这样能停止音乐吗?感到有些焦虑,我直接点击了"结束任务"按钮,果然,任务管理器摧毁了我的噩梦。Mark Russinovich推崇Process Explorer,但如果要我祈祷,我永远会选择任务管理器。当音乐停止时,我感觉好多了。

不管怎样,正是那段恐怖音乐开启了我对"诡计代码"的兴趣。如果音乐在离开网页后还能继续播放,那么是否也能以同样的方式运行脚本?

可能正是因为那个故事,我在第七届BlueHat上的演讲以"你相信幽灵吗?“开头。那次演讲展示了如何在离开页面后仍在浏览器中运行脚本。换句话说,无论用户去哪里,都能在后台继续控制部分浏览器行为。就像"在浏览器中有一个幽灵”。

我不仅相信幽灵的存在,我还有证据证明它们存在——至少在浏览器内部——我想向微软的人们展示这一点。好的是,微软的"幽灵克星"们修补了代码,摧毁了我的噩梦,希望是永远地。

昨晚我在半夜醒来。我很渴。我拿起床头柜上常备的水杯,就在我把杯子放到嘴唇上的那一刻,我想起了刚才的梦境。我参加了一个讨论小组,讨论成为黑客意味着什么。我们探讨了黑客对生态系统的价值、黑客技能、动机和激励措施。试图理解黑客和罪犯之间的区别。微软的Andrew Cushman和Damian Hasse也在那里!还有生态系统中的同事,如Ivan Arce、Luiz Eduardo、Nico Waisman、Rodrigo Rubira Branco和Felix ‘FX’ Lindner!

但我什么时候飞到了雷德蒙德?很奇怪我参加了BlueHat会议却不记得飞行过程(我讨厌飞行)。布宜诺斯艾利斯离雷德蒙德很远,我怎么会忘记?我什么时候计划的?当我想到这一点时,我看到了BlueHat旗帜底部的小字,上面写着"BlueHat Buenos Aires"。但这毕竟不是梦。BlueHat组织者确实正在为拉丁美洲的本地研究人员、企业和政府社区在布宜诺斯艾利斯组织一场BlueHat会议,而现实是我将能够参与其中——而且三月份就在我(附近)的后院!

拿着水杯,睡足觉后,我拿起笔记本看到我收到了Celene和Dana的新邮件。邮件正文写道:“你会参加BlueHat Buenos Aires吗?“我简直不敢相信自己的眼睛。直到今天,当我想到这件事时,我仍然感到震惊。一个噩梦消失了,一个梦想成真了。

对我来说,在阿根廷举办的这次BlueHat安全会议是最重要的一次。它对每个人都有所提供。我们将听到OWASP创建者的演讲,PHNeutral、ysts和Hacker2Hacker、iDefense、CORE背后的思想者,以及MSRC的幽灵克星们。我从不相信"每天学点新东西"这句话;然而,这一天你肯定会学到一些东西,并带着新想法、待完成的作业和开始的动力离开BlueHat会议。

希望在那里见到你。

Manuel Caballero。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计