首页
论坛
专栏
课程

分享:
# 认识内存破坏漏洞 - What are we talking about 在正式开始本系列的课程学习之前,大家要明确的一件事是课程的主题:浏览器安全,到底是指什么。 因为浏览器安全这个面其实是比较大的,在与一些没有接触过的同学交流时我发现大家可能会把Web安全与浏览器安全混为一谈。 比如sql注入属于浏览器安全吗?明显不是,因为SQL注入实际上是发生在服务器端的,浏览器只是接受返回的结果。那么XSS漏洞属于浏览器安全吗?某种程度上可以算是,虽然服务器端对于处理数据也存在问题,但是浏览器端同样应该存在CSP等缓解措施。 浏览器安全这个话题到底包含什么呢,这其实涉及到浏览器攻击面的问题。我这里把对浏览器攻击面的介绍放到下一章节,在这里先通过几个实例来看一下我们这系列文章中所关注的浏览器漏洞。 首先介绍一个比较有名的历史漏洞:CVE-2010-0249,这个漏洞有个绰号叫做“极光”,在2010年曝出之后曾被广泛的用于网页挂马等攻击。 ![01.png-130.5kB][1] 根据CVEdetails对于这个漏洞的描述,我们可以获知这个漏洞可以在IE6、7、8等浏览器上触发。这段描述中最关键的部分是给出了漏洞的定义:其中说漏洞可以允许远程攻击者执行任意代码——这个是漏洞造成的效果或者说是危害。当攻击者访问一个指向已删除对象的指针时漏洞会触发——这个是漏洞产生的原因。 总结一下 攻击目标:IE6、7、8 产生原因:访问一个指向已删除对象的指针 攻击效果:允许远程攻击者执行任意代码 我们进一步的思考一下,这是一个访问一个指向已删除对象的指针导致的漏洞,那么就可以提出几个问题。 这个对象是指什么对象? 这个对象在哪里产生? 在哪里被删除? 在哪里又被删除后访问? 在后面的文章就会看到其实整个漏洞分析也就是围绕这些问题展开的。 就像我们前面说的那样,在漏洞简述中其实已经给出了这个漏洞的类型定义,"HTML Object Memory Corruption Vulnerability"告诉我们这个发生问题的对象是一个HTML对象,因此也就说明这个漏洞是发生在处理HTML对象的过程中,进一步我们可以推断出这个漏洞发生在IE浏览器负责解析渲染HTML的引擎Trident中,也就是mshtml.dll中。 那么这种发生在浏览器代码执行过程中的内存问题,就被称为是内存破坏类(memory corruption)漏洞。 我们这系列的文章都是围绕的浏览器的内存破坏漏洞展开的,根据这个标准来看Web漏洞就不能算,大多数的Web漏洞并不是发生在浏览器端而是服务器端的,浏览器只是负责接收返回的结果。剩下的一些诸如XSS等漏洞虽然是发生在浏览器端,但是它们并不属于内存破坏类漏洞。不过,现代的浏览器存在一些针对XSS的防御,比如CSP(Content Security Policy),如果你找到了可以绕过CSP的方法严格来说这是属于浏览器漏洞的。浏览器的厂商也会乐于接收这种漏洞,不过在本文的范围内我们不讨论这种非内存破坏类的浏览器漏洞。 其次我们可以看到内存破坏发生的位置是位于浏览器的渲染引擎Trident,在后面我们会看到有大量的漏洞都是发生在浏览器的渲染引擎中,在后面我也会带大家先来熟悉关于trident的特性。 [1]: http://static.zybuluo.com/vbty/hbp2mrq1649r6oljrhc4udnl/01.png

上一篇 :
下一篇 :
讨论 (0)
沪ICP备16048531号-1
沪公网安备 31011502006611号