首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Firefox部署程序代码注射攻击保护

Mozilla安全团队于本周披露,他们已借由移除Firefox程序代码中的行内脚本(inline scripts)与eval()及类似的各种函数,以防范程序代码注射攻击。

所谓的行内脚本,是指被嵌入在HTML文件中,而非自外部文件加载的脚本程序。Mozilla内容安全技术负责人Christoph Kerschbaumer解释,Firefox不仅描绘网络上的网页,也附带许多内置的页面,通常称为about:pages,这类的页面可用来披露浏览器的内部状态,最明显的about :config提供了一个API,可用来检查与更新设置及偏好,让Firefox用户得以根据特定需求来打造Firefox实例。

由于about:pages也是通过HTML及JavaScript来实现,因此它们与一般的网页有着同样的安全模型,也无法免疫于程序代码注入攻击。假设黑客能够把程序代码注入about:pages中,黑客也许也能执行所注入的程序代码,意味着黑客将可代表用户执行任何行动。

于是,Mozilla重新编写Firefox所有的行内事件处理器,并将所有的行内JavaScript程序代码移到45种about: pages的打包文件中,以让Mozilla能够部署强大的内容安全策略,确保被注入的JavaScript无法执行。

如此一来,JavaScript程序代码只能在通过内部的chrome: protocol时,自打包的资源中加载才能执行。封锁了about: pages中任何的行内脚本,等于限制了执行任意程序代码的攻击表面,也替对抗程序代码注入攻击提供了第一道防线。

至于JavaScript函数eval(),或是其它类似的new Function、setTimeout()/setInterval()也都是既强大又危险的函数,它能够在与函数一致的安全脉络下,解析与执行任意字符串,它允许执行程序代码在运行时产生,或是存放在诸如DOM的非脚本区域,然而,eval()带来了重要的程序代码注入攻击表面,促使Mozilla决定禁用它。

因此Mozilla改写了系统特权脉络及Firefox程序库的父程序中,所有使用eval()或其它类似函数的段落,并加入了断言,以禁止在系统权限的脚本脉络中,使用相关函数。

目前Mozilla仍会在极少数、自程序库之外调用eval()的状态下放行该函数,但未来将继续密切观察与审核未知的eval() 实例,以强化Firefox的安全性。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191016A0QBCE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券