本篇文章内容较为简略,主要目的是描述浏览器安全的概念,建立浏览器攻防的框架,每部分具体内容将在之后的文章中详述。

一、浏览器的组成

1、浏览器的设计规格

  • 它要向互联网请求指令,然后执行获取的指令。
  • 防御者无法控制这些指令。
  • 某些指令会要求浏览器从互联网的其他地方、内部网的其他地方或非标准的HTTP和HTTPS TCP端口再次请求指令。
  • 某些指令会要求浏览器通过TCP发送数据。这可能会造成对其他联网设备的攻击。
  • 它会与互联网中任意服务器进行加密通信。防御者无法看到通信内容。
  • 它会不断向攻击者暴露攻击目标。它会在后台静默更新。
  • 它经常会依赖插件获得某些功能,但没有统一的机制更新这些插件。

2、浏览器安全与Web安全

  • 浏览器的主要功能就是从外部世界的任意位置获取并执行指令,而这一行为的潜在风险是显而易见的。
  • Web采用客户端-服务器模型,客户端与服务器通信使用请求-响应模式,即浏览器负责发送请求,服务器负责给出响应。
  • 一般来说,浏览器与Web应用的联结点是最需要保护的地方。从攻击者角度来说,这也是主要的攻击目标。

3、浏览器的组成元素

  • 同源策略(Same Origin Policy,SOP)。
  • HTTP首部
  • 标记语言,HTML和XML。
  • CSS(Cascading Style Sheet,层叠样式表)
  • 脚本,所有浏览器默认的脚本语言都是JavaScript。
  • DOM(Document Object Model,文档对象模型),它是在浏览器中操作HTML或XML文档的API,使用脚本语言可以通过DOM提供的对象操作HTML元素。
  • 浏览器引擎(web browser engine),又称渲染引擎(rendering engine)或布局引擎(layout engine)。常见的浏览器引擎有WebKit、Trident、Gecko、Presto、Blink。
  • Geolocation,Geolocation API是为移动和桌面浏览器访问设备地理位置信息而开发的,该API可以通过GPS、蜂窝小区三角测量、IP地理定位和本地Wi-Fi热点取得地理位置信息。
  • Web存储(Web storage)又称DOM存储(DOM storage),可看作超级cookie。
  • 跨域资源共享(cross-origin resource sharing,CORS),是一个让来源忽略同源策略的规范。在最宽松的配置下,Web应用可以通过XMLHttpRequest跨域访问任何资源。CORS给HTTP响应首部增加了一下字段:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET
  • HTML5
  • 隐患(vulnerability)

二、浏览器安全强化

1、基本防御

1、HTTP首部

  • 内容安全策略
  • 安全cookie标志
  • HttpOnly cookie标志,HttpOnly标志指示浏览器禁止任何脚本访问cookie内容,从而降低通过JavaScript发起的XSS攻击偷取cookie的风险。
  • X-Content-type-Options标志,判断服务器返回了什么类型的内容。
  • Strict-Transport-Security,指示浏览器必须通过有效的HTTPS通道与网站通信。
  • X-Frame-Options,阻止浏览器中的页面内嵌框架。可以防止界面伪装(UI redressing)攻击。

2、反射型XSS过滤

3、沙箱(sandbox)

  • 浏览器沙箱
  • IFrame沙箱

4、反网络钓鱼与反恶意软件

5、混入内容

混入内容(mixed content)网站,是指某个来源使用HTTPS协议,然后又通过HTTP协议请求内容,也就是所有的页面内容都不是通过HTTPS发送的。

2、核心安全问题

1、攻击面

指浏览器容易遭受未信任来源攻击影响的范围,涉及如下几个方面。

  • 升级速度
  • 静默更新
  • 扩展
  • 插件

2、放弃控制

3、TCP协议控制

4、加密通信

5、同源策略

6、谬论

三、浏览器攻防方法

对浏览器的攻击过程分为三个阶段,首先是初始化,然后是持久化,最后是攻击。

1、初始化

这是攻击浏览器的第一步,目的是使用各种方法是浏览器遇到并执行你的指令,甚至是执行任意代码。

2、持久化

持久化控制,在进行下一次攻击之前要保持住对浏览器的控制。

3、攻击

对浏览器攻击的形式有很多种,常见的有对浏览器的“本地攻击”,对浏览器所在操作系统的攻击,以及对任意位置的远程系统的攻击。

这里给出一些核心攻击方法,具体内容将在以后的文章中介绍。

  • 绕过同源策略
  • 攻击用户
  • 攻击浏览器,即直接攻击浏览器的核心。
  • 攻击扩展
  • 攻击插件
  • 攻击Web应用
  • 攻击网络

四、参考文献

1 《黑客攻防技术宝典浏览器实战篇》.[澳]Wade Alcorn, [美]Christian Frichot, [意]Michele Orru著,奇舞团译.