admin管理员组

文章数量:1558098

摘要

浏览器的配置设置起着重要的作用,使攻击者或流氓网站无法获得或较少获得用户或用户系统的信息。默认的浏览器配置往往不足以阻止或尽量减少信息泄露给攻击者。本文提出了一个新的模型(框架)来弥补默认配置和推荐配置之间的差距。该框架是使用机器学习算法开发的,因为大量的浏览器配置状态需要被划分为不同的安全级别。使用该框架开发了一个原型的浏览器插件,以评估浏览器的安全级别,并在需要时修改它以提高安全级别。

关键词:浏览器安全;客户端攻击;安全错误配置。

1 引言

随着技术的进步,浏览器的使用不仅仅局限于网上冲浪,还可以进行金融交易、在线交易、在线游戏、视频会议等等。现在被大量使用的软件应用程序不是别的,就是浏览器(网络浏览器或互联网浏览器)。
攻击者已经将他们的重点从攻击服务器应用程序转移到客户端攻击,因为攻击客户端机器需要时间,获得的信息量大,而且不容易被发现。同时利用受害者的(被攻击的)个人电脑,攻击者将有可能控制其他系统。用户的系统、网络浏览器、用户系统和网络服务器之间的通信链接以及用户系统上运行的其他软件应用程序是客户端安全的组成部分。根据2016年卡巴斯基安全公告(Garnaev等人,2017),50%的攻击是基于浏览器的。表1显示了十大网络应用程序漏洞的列表,以及它们是否影响服务器和/或客户端系统。

在浏览过程中,大量的数据会以cookies、日志和记录的形式产生。这些数据存储在用户的系统中,也有一部分在用户知情或不知情的情况下穿过客户端系统的边界。产生的数据、存储在用户系统中的数据和传输中的数据可以被攻击者或恶意网站或网络分析引擎捕获、读取。这些信息,如CPU、操作系统、安装的软件、用户的具体数据等,可以被攻击者用来控制用户(受害者)的系统,甚至反过来控制其他使用已被破坏的客户(受害者)系统的系统。此外,用户的信息还可以用来分析用户的浏览模式,这样就可以通过恶意网站进行有针对性的攻击,或者通过分析引擎向用户发送广告。

用户的电子邮件地址、系统信息、与第一方网站的通信等构成的用户隐私信息落入攻击者或恶意的Web应用手中,可以认为是信息泄露。根据《2017年Web应用安全统计报告》,信息泄露是最容易受到攻击的类别之一,参考图1。其他主要的易受攻击类别是传输层保护不足、跨站脚本、跨站请求伪造

 

 浏览器的不断改进和增加的新功能,这些浏览器为攻击者打开了攻击的闸门,让他们利用浏览器作为主要媒介控制受害者的系统。上网冲浪的用户,由于缺乏或没有足够的安全浏览知识,很多时候宁愿选择实用性而不是安全性。配置错误的浏览器设置会将用户的私人数据提供给攻击者,然后攻击者可以利用这些数据来伪装或控制用户的系统。

本文提出了一种基于J48机器学习分类算法的浏览器安全错误配置检测框架。该框架为用户提供了更正设置的指南。

我们的主要贡献是:

  1. 设计了一个web浏览器安全配置分类框架
  2. 生成浏览器配置数据集。

要改进web浏览器配置,需要了解基于浏览器的攻击以及导致这些攻击的浏览器配置设置。第2节汇编了基于浏览器的攻击和对策信息。第3节介绍了可防止或减轻这些攻击的浏览器配置设置信息。第4节重点介绍了如何使用机器学习算法对浏览器配置进行分类。第五部分介绍了所开发的Firefox插件的体系结构模型和实验结果。第6节包含对当前工作的分析。第7节给出了结论,并列出了未来的工作。

2 相关工作:基于浏览器的漏洞和当前防御

根据OWASP隐私风险项目报告(owasp, 2017b)。个人数据删除不充分、收集非主要目的所需的信息、向第三方传输数据、会话终止不充分以及信息交换过程中使用弱加密标准是十大隐私风险。参考图1,很明显,信息泄漏、跨站点脚本和传输层保护不足更可能出现漏洞

因此,当前的工作主要针对客户端跨站点脚本(XSS)、基于不安全数据传输(SSL)的攻击、信息泄漏(由于浏览器formfill)和WebGL攻击。

2.1 客户端跨站点脚本(XSS)攻击

在这种攻击中,攻击者将特殊构造的代码注入网站。当用户试图访问此受损网站时,攻击者注入的代码将在用户系统上运行。此代码允许攻击者以最高权限访问用户的系统。由于这种攻击,攻击者现在可以在用户系统上执行恶意JavaScript,添加密钥记录器,还可以窃取Cookie(系统上提供)。

Kallin和Valbuena(2017)解释了XSS攻击,以及如何注入JavaScript恶意代码。利用安全输入验证和内容安全策略(CSP),作者提出了防止XSS攻击的方法。Patil和Patil(2015)提出了一种基于文档对象模型(DOM)的模型来拦截用户输入,分析输入以识别基于XSS的代码,然后通知用户攻击的可能性。Kumar和Kumari(2013)提出了一种方法,允许用户通过在自己的机器上执行JavaScript代码片段来允许或拒绝敏感信息交换。

Bugliesi等人(2015)开发了浏览器扩展CookieExt,它使用HttpOnly和安全cookie标志来防止XSS代码注入攻击。Kirda等人(2009年)开发了一种桌面级防火墙,它检索HTTP请求,并基于安全策略(规则)阻止或转发internet上的请求。此方法允许用户在(用户)控制的环境中执行JavaScript代码。

2.2 不安全数据传输攻击

攻击者可以嗅到传输中的数据(在浏览器和web应用程序之间)。如果数据是纯文本格式,那么攻击者可以很好地读取这些数据。为了克服这种攻击,建议在任何类型的HTTP通信中使用安全套接字层(SSL)或传输层安全性(TLS)。在这种SSL或TLS通信中,数据首先在其中一个通信端进行加密,然后转发到另一端,另一方在另一端解密输入数据。这样,只有预期用户才能读取和理解传输的数据。

SSL或TLS协议的设计和/或实施中引入的漏洞以及浏览器端引入的配置错误(攻击)可能导致诸如POODLE(2014)、FREAK(2015)、MITB、溺水(2016)等攻击。

为了克服与数据传输相关的不安全攻击,需要将浏览器配置为仅允许TLS 1.2。Beurdouche等人(2015)已经证明了懒惰攻击,该攻击将TLS 1.2设置降级为MD5。已被破坏(破坏)的MD5校验和算法允许中间人(MITM)攻击,从而使攻击者有机会滥用在用户浏览器和合法网站之间移动的数据。这反过来导致了(CCS)注入漏洞的改变。

Ristic(2017)介绍了涉及2048位私钥使用、TLS1.3使用和CSP部署的SSL和TLS部署最佳实践。文献(Shapland,2017)中建议的其他方法包括安全实施SSL和TLS、禁用过时的SSL版本、禁用弱密码、禁用TLS压缩。

2.3 表单填充攻击

web浏览器将用户输入的文本存储在网页表单字段和浏览器的搜索栏中。使用用户系统上的文件存储此信息。

如果攻击者能够访问这些文件,则用户的私有数据将掌握在攻击者手中。

2.4 WebGL攻击

WebGL提供了将图形直接渲染到HTML5的工具。

开发WebGL API过程中的设计和/或实现问题不仅允许攻击者窃取浏览器上显示的图像,还允许攻击者窃取其他网页。这可能导致攻击者在用户系统上执行恶意代码,然后导致权限提升。

2016年,安全研究员Aki Helin发现Firefox WebGL实现中存在缓冲区溢出漏洞。Firefox 44及以后版本中已修复该漏洞(Mozilla,2017)。

通过参考上述小节,很明显,为了减轻或减少基于浏览器的漏洞的影响,需要重新设计或重新实施浏览器、开发安全补丁、安装浏览器或桌面级扩展。重新开发浏览器或相关安全修补程序既耗时又复杂。Wadkar等人(2017年)提出了一种包括安全浏览器配置的方法,从而最大限度地减少基于XSS的攻击

3.加强浏览器配置

在目前的工作中,本文作者的重点是如何通过将浏览器配置为推荐的设置来减轻基于XSS的攻击、不安全的数据传输攻击、表单填充攻击和WebGL攻击。Mozilla Firefox浏览器被用作一个案例研究。

3.1客户端XSS攻击预防

由于默认的浏览器配置,大多数浏览器都接受来自第一方和第三方网站的cookie。然后,第三方网站可以获得用户浏览模式的信息。

通过修改浏览器cookie相关配置以仅接受来自第一方网站的cookie,可以阻止浏览相关信息的用户访问第三方网站。

还可以通过在浏览器中启用内容安全策略(CSP)来减少XSS漏洞,从而使web浏览器能够执行来自第一方网站的页面中的任何脚本(代码)。此设置的唯一问题是,如果一个网站有多个子域,并且在这种情况下,用户选择可用性而不是安全性。

3.2不安全数据传输攻击预防

为克服与不安全数据传输相关的攻击,浏览器需要配置为仅允许基于TLS 1.2的通信。

3.3表单填写攻击预防

为防止信息泄漏,可将浏览器配置为表单填写数据不会存储在用户系统上(静态)(static.open-scap, 2017)。

3.4 WebGL攻击预防

为防止WebGL攻击,需要禁用浏览器WebGL设置。表2给出了基于浏览器的漏洞和相应的Firefox配置属性及其可能的值。表2参考kb编制。kb.mozillazine (2017)和Pinto(2015)。

 

4 基于机器学习算法的浏览器配置分类

为了加固网络浏览器,我们需要考虑所有涉及终端用户隐私的配置参数。所有这些属性(每个属性具有多个可能的值)共同决定浏览器配置。在进行与浏览器安全强化相关的实验时,本文作者发现了100个这样的浏览器(Firefox)参数。每个参数至少有两个可能的值,这些值会导致至少浏览器配置状态。这些浏览器状态的手动注释(分类)是一项困难、耗时的任务,还可能添加人为产生的错误。因此,我们提出了基于机器学习分类算法的框架。

4.1 机器学习和决策树简介

分类是利用训练数据集来确定输入数据属于哪个类别集的过程。训练数据集是一个带注释的数据,也就是说,集合中的每个观测值都被标记或分类为不同的类别。分类中使用的算法称为分类器。

在目前的工作中,为了选择一个合适的(最适合-精确分类)分类器进行浏览器分类,使用了监督学习分类算法,即朴素贝叶斯、支持向量机(SVM)和决策树(J48)。该分类器选择使用Waikato Environment for Knowledge Analysis(WEKA)3.6.10版完成。WEKA包含基于Java的朴素贝叶斯、SVM和J48算法实现。我们将分类算法直接应用于我们开发的数据集。

4.1.1朴素贝叶斯算法

朴素贝叶斯算法是一种概率分类器。它假设某个特征的出现与其他特征的出现无关(blog.hackerearth, 2017)。该算法基于条件概率,事件概率基于事件的先前知识。Bayes定理方程为:,

 其中P(A)为事件A发生概率,P(B)事件B发生概率, P(B/A)为假设事件A已经发生,事件B发生概率。

4.1.2支持向量机算法

SVM是一种线性、非概率的二值分类器。SVM模型将输入样本分为两类,两类之间存在明显的差距(en.wikipedia, 2017)。

4.1.3决策树算法

决策树学习是通过从根节点到某些叶节点构造一棵树,将给定数据集分类为不同类别的方法。每个内部节点对应一个输入变量。此内部节点的传出边表示变量的一个可能值。

从给定数据集构建树的过程称为训练阶段。在测试阶段,需要分类的数据实例沿着树向下移动,从根开始,沿着带有变量值的路径移动到叶节点。叶节点实际上告诉这个测试数据实例属于哪个类。

J48算法实现了C4.5(Quinlan, 1987)算法,在每个树节点选择要测试的属性(变量),利用了该属性的信息增益。选择所有其他属性中信息增益最高的属性。

4.2 数据集

在有监督机器学习技术中,数据的标注(注释)是必不可少的步骤。要选择浏览器配置分类的分类算法,将生成一个训练数据集。数据集包含具有默认配置、推荐配置和所有可能的配置变体的示例。参考表2编制培训数据集。

对于目前的工作,考虑了四个配置参数–CookieBehavior(四个可能值:0、1、2、3)、SSL(四个可能值:0、1、2、3)、form fill(两个可能值:T、F)和WebGL(两个可能值:T、F)。

培训数据集由64条手动注释的记录组成。浏览器配置状态(BS)被注释(分类)为B(坏)、VB(非常坏)、M(中等)、G(好)、VG(非常好)。注释是通过分析我们进行的实验以及参考Firefox基准测试报告(Pinto,2015)和其他web文章(ssl-checker.online-domain-tools, 2017; static.open-scap, 2017; AirVPN,2015; Brinkmann, 2015; jlieskov.fedorapeople, 2015)。在对数据集进行注释时,将考虑攻击的后果和漏洞可能性%——如表3所示。

由于跨网站脚本会引起许多其他的攻击,而且其漏洞率更高,我们在注释中对跨网站脚本给予了更大的权重,例如,cookiebehaviour值为0的数据样本,该数据样本被标记为坏(B)。如果数据样本包含设置为0的CookieBehavior值,则tls版本最大值设置为0(即,最小SSL/TLS)并且formfill设置为true(即,用户输入的文本被保存),然后数据样本被注释为非常糟糕(VB)。

培训数据集的样本如表4所示。在表4中,C、S、F和W分别表示CookieBehavior属性、SSL相关属性、Formfill属性和WebGL属性(参见表2)。

4.3 浏览器配置分类的机器学习算法选择

生成的数据集用于训练朴素贝叶斯、支持向量机和J48分类器。四个参数,即准确度、精密度、召回率和fmeasure(Exsilio Blog,2017)被认为是评估朴素贝叶斯、支持向量机和J48在分类浏览器配置方面的性能。

  • TP-真阳性
  • FP-假阳性
  • TN-真阴性
  • FN-假阴性。

准确率表示所有预测中正确的比例。准确度是衡量一个模型有多好。

精度是正确预测的正观测值与总预测正观测值的比率。

召回率是正确预测的阳性观测值与实际类中所有观测值的比率--是。 

F-measure是精度和召回率的调和平均值。 

 

 表5总结了Naive Bayes、SVM和J48在浏览器配置分类培训阶段的性能(浏览器配置分类精度)。

 

表6显示了朴素贝叶斯、支持向量机和J48分类器的测试阶段(十倍交叉验证)分类性能。

参考表5和表6,很明显,使用手动注释的64个浏览器配置样本,决策树(J48)算法(在训练阶段具有90%以上的准确度,在测试(交叉验证)阶段具有70%以上的准确度)在浏览器配置分类中优于朴素贝叶斯和支持向量机。因此,选择决策树(J48)分类器来开发一个框架,将浏览器配置划分为不同的安全级别。

4.4 浏览器配置分类使用J48决策树算法

在本工作中,我们使用决策树算法J48来训练分类器。然后使用该分类器对输入浏览器配置进行类型转换。由64个样本组成的同一数据集用于训练J48分类器(样本见表4)。

在使用J48算法的训练过程中,分类结果如下所示:

表7给出了准确分类浏览器配置的信息。

 

表8显示了J48算法为我们的训练数据集开发的混淆矩阵(参见表4)。训练数据集由64条手动注释的记录(样本)组成。数据集包含20个标记为极差的样本,所有这些样本都通过J48算法在极差状态下正确分类。17个样品标记为不良,所有这些样品均正确分类为不良状态。15个样本中有14个被正确分类为中等状态。十分之九的样本被正确分类为良好状态。有两个示例已注释并正确分类为非常好的状态。

在混淆矩阵中,主对角线矩阵元素表示正确的预测。在我们的例子中,主要的对角矩阵元素是20、17、14、9和2,它们描述了正确的预测(实际结果与预测结果相同)。

4.4.1 J48决策树

在决策树构建的每一步,都会选择具有最高信息增益的属性。表9给出了每个属性的信息增益。与跨网站脚本有关的属性(即network.cookie.cookieBehaviour)在对浏览器配置进行分类时发挥了主要作用。

 由J48算法构建的决策树如图2所示。

图2描述使用J48(WEKA)算法的浏览器配置分类的决策树

 

使用图2所示的决策树,可以编写12条规则。通过遍历从根节点到叶节点的路径来编写规则。每个内部节点表示要测试属性值的条件。在规则中,BS代表浏览器状态。规则如下:

  1. if C ≤ 0 then BS = VB
  2. if C > 0 AND C ≤ 2 AND S ≤ 0 AND C ≤ 1 then BS = B
  3.  if C > 0 AND C ≤ AND S ≤ 0 AND C > 1 then BS = VB
  4.  if C > 0 AND C ≤ 2 AND S > 0 AND C ≤ 1 AND S ≤ 2 AND S ≤ 1 then BS = B
  5.  if C > 0 AND C ≤ 2 AND S > 0 AND C ≤ 1 AND S ≤ 2 AND S > 1 then BS = M
  6.  if C > 0 AND C ≤ 2 AND S > 0 AND C ≤ 1 AND S > 2 AND F == True then BS = G
  7.  if C > 0 AND C ≤ 2 AND S > 0 AND C ≤ 1 AND S > 2 AND F == False then BS = VG
  8.  if C > 0 AND C ≤ 2 AND S > 0 AND C > 1 AND S ≤ 2 then BS = B
  9.  if C > 0 AND C ≤ 2 AND S > 0 AND C > 1 AND S > 2 AND F == True then BS = B
  10.  if C > 0 AND C ≤ 2 AND S > 0 AND C > 1 AND S > 2 AND F == False then BS = M 
  11.  if C > 0 AND C > 2 AND S ≤ 1 then BS = M
  12.  if C > 0 AND C > 2 AND S > 1 then BS = G.

5 实现:Firefox插件体系结构

Firefox的原型插件框架已经开发出来,用于对浏览器配置进行分类。该框架用于自动化浏览器安全配置分析(分类)以及修改配置。浏览器配置分析是使用第4节中精心编制的12条规则完成的。该插件是用JavaScript编程的。建议的基于框架的Firefox插件架构模型如图3所示。

图3 Firefox插件架构

5.1 架构

该框架由四个组件组成,即配置读取器、分析引擎、推荐引擎和配置修改控制器。

在火狐浏览器中,浏览器的配置默认和非默认(修改)设置分别存储在文件prefs.js和user.js文件中。在浏览器的运行实例创建过程中,浏览器会加载默认的pref文件、配置文件、prefs.js,最后是user.js文件。配置读取程序通过读取prefs.js和user.js文件来读取目前的浏览器配置参数设置(步骤1)。

配置分析引擎通过将输入设置分为非常好、良好、中等、不好或非常差来测量浏览器配置状态(步骤2)。为此,分析引擎使用J48分类器在学习(模型构建)阶段生成的产生式规则。

分析引擎向用户报告他(她)正在使用的浏览器的安全级别状态(步骤3)。

推荐引擎包含所有浏览器属性的推荐安全设置值文件。

该插件为用户提供了一个工具,用户可以使用该工具根据自己的选择设置浏览器配置:默认、推荐或任何其他(步骤5)。然后将配置修改写入user.js文件。

5.2 实验和结果

为了进行实验,我们使用了在Ubuntu操作系统上运行的Firefox浏览器。ssllabs, freakattack, poodletest, browserleaks等网站提供了测试浏览器配置的设施。这些站点提供执行浏览器配置测试的功能,以检测基于cookie、SSL相关和基于WebGL的错误配置。浏览器测试是通过访问站点来执行的,无论是否使用建议的设置。实验设置如表10所示。

表10实验设置

图4和图5显示了屏幕截图,CookieBehavior属性设置为0(默认设置)。

 

 图6和图7显示了CookieBehavior属性设置为1(推荐设置)的屏幕截图。

 类似的实验是通过访问https://browserleaks. com/webgl,webgl属性配置为false,然后为true。

结果总结见表11。

 

6 讨论

我们进行了浏览器配置测试,以测量默认设置和推荐设置(我们的附加组件建议的设置)对可用性和性能(网页加载时间)的影响。我们使用Firefox浏览器使用木偶访问Alexa前100名网站作为测试URL。每个站点访问三次;计算了加载时间的平均值。在访问每个网站之前,浏览器cookies都已清除。

6.1可用性

从最终用户的角度来看,可用性优先于安全或隐私。在可用性(可访问性)测试期间,我们能够访问所有Alexa前100名网站。

6.2 性能

在性能测量期间,考虑浏览器启动的打开顶级页面(URL)请求与实际页面加载时间之间的时间差。时间以毫秒为单位。与默认设置相比,我们使用推荐设置可以在更短的时间内访问100个网站中的56个。

6.3安全性

所提议的框架不是在谈论网络浏览器向用户提供的绝对安全,而是在谈论相对安全(相对于同一浏览器的其他配置)。该框架将网络浏览器配置X与配置Y进行比较,并能够说 "就浏览器属性(参数)而言,配置X比配置Y更安全或更好",例如,考虑表12中给出的与cookies有关的两个Firefox参数。

表12与Cookie相关的Firefox配置属性

将cookiebehaviour设置为1,lifetimePolicy设置为2的配置X比将cookiebehaviour设置为1但lifetimePolicy设置为0的配置Y更安全,因为在配置Y的情况下,即使会话过期,cookie也会存在于客户的机器上,可以被运行在客户机器上的任何恶意进程访问。

7 结论

本文提出了一个加强浏览器安全配置的框架。该框架利用机器学习分类器对浏览器配置设置进行分类。结果清楚地推断,所使用的机器学习方法有助于获得可伸缩性以及准确度,从而测量浏览器的错误配置。将浏览器配置修改为建议的设置会影响性能(减少页面加载时间),但不会影响可用性。

当前的Firefox附加功能可以扩展为拦截来自浏览器端的HTTP流量,并根据URL动态修改特定web活动的浏览器设置。可以采用类似的基于框架的方法来强化其他web浏览器。

本文标签: 浏览器机器论文技术web