滥用隐藏属性来攻击 Node.js 生态系统

VSole2022-06-07 06:10:37

1 背景介绍

现如今,由于跨平台特性和高性能的JavaScript执行等特点,Node.js被广泛的应用在服务端和桌面应用程序当中。而在过去几年当中,用的更多的动态脚本语言(PHP、Ruby等)已经被发现在共享对象时是不安全的,然而Node.js并未很好的规避该安全风险。

作者首次引入了对象共享与客户端服务器通信之间的问题。同时作者确认 CWE-915 也同样存在于 JavaScript 与 Node.js 中。为了证明该安全问题,作者引入了一种先进的攻击手段:HPA 攻击,并在进一步的研究中发现这种攻击与现有的 PHP 和 Ruby 中的攻击并不相同。

图1-1 HPA 攻击示例

2 论文主要贡献

作者该篇文章主要做出了以下贡献:

  • 提出 hidden property abusing 攻击形式,并且证明其具有安全威胁
  • 设计了一个自动化 HPA 漏洞检测与利用代码编写工具——LYNX
  • 评估并证明了真实场景下的 HPA 问题会导致严重安全影响

3 隐藏属性滥用

图3-1 攻击路径图

上图介绍了一个远程攻击者是如何利用 HPA 完成了攻击。

图3-2 攻击对比

上图对比了两种攻击异同。


4 LYNX 设计

图4-1 LYNX 总览

输入: Node.js 程序

输出: Exploit 文件

识别隐藏属性: 发现属性携带者 --> 定位候选隐藏属性 --> 候选剪枝

生成 HPA 利用代码: 生成利用代码模板 --> 探索攻击结果


4.1 识别隐藏属性

作者依赖于一个发现:有文档的参数通常会被一个调度器(例如 if-else 语句)一同处理。

未使用的参数与使用的参数被同一调度器处理:从 API 参数中记录使用的属性,然后找出与使用的属性位于同一调度器中的隐藏属性候选对象。未使用的参数与使用的参数被不同调度器处理:检查所有的对象并查看是否有被同一调度器处理,如果存在则从结果中移除。

图4-2 完整示例

4.2 生成 HPA 利用代码

漏洞利用模版生成

本文直接利用原始对象作为模版,并在对象中插入属性。

探索攻击路径

作者总结了以下 6 种敏感函数触发点(Sink):

  1. 敏感数据库查询方法
  2. 敏感文件系统操作方法
  3. 代码执行接口
  4. 模块引用结果
  5. 全局方法或变量
  6. 循环条件

图4-3 LYNX 敏感触发点

5 评估实验及分析

5.1 识别阶段

实现在四种更可能接收到输入的程序类别上完成了实验,共收集了 102 个 Node.js 程序,其中 91 个是 Node.js 模块,11 个为 web 程序。实验效果如下:

图5-1 识别实验效果

  • #PC:属性携带者( property carriers )的数目
  • #HP:候选隐藏属性( hidden property candidates )的数目
  • #DA:有文档的参数( detected documented arguments )的数目

5.2 利用攻击阶段

图5-2 利用实验效果

  • Reported:LYNX 认为是脆弱的敏感点
  • Exploitable:LYNX 利用并且被手工确认的敏感点
  • Missed:LYNX 第一阶段检测出但第二阶段未被利用的隐藏属性

5.3 HPA脆弱性影响分析

图5-3 脆弱性检测效果

上图展现了真实场景下的 HPA 攻击,分别破坏了 Node.js 生态系统的保密性( Confidentiality )、完整性( Integrity )、可用性( Availability )。


6 总结与展望

尽管 LYNX 取得了不错的成绩,但是还面临以下局限性。

  • LYNX 需要外界输入(例如模块测试用例和用户交互等)
  • 同其他动态分析工具相同,存在漏报
  • 并没有涵盖Node.js生态系统中存在的所有输入通道
生态系统猞猁
本作品采用《CC 协议》,转载必须注明作者和本文链接
该报告是国际战略研究所研究人员历经两年时间研究的成果,为15个国家的网络实力提供了一个重要的新的定性评估,并为理解如何对全球国家网络能力进行排序提供了一 个新的定性框架。报告旨在协助国家决策,例如指出对国家实力影响最大的网络能力。这些信息可以帮助政府和大公司计算战略风险和决定战略投资。这些研究是在网络空间国际对抗加剧的背景下进行的,它提供了大量的进一步证据,表明对许多国家来说,网络政策和能力已成为
现如今,由于跨平台特性和高性能的JavaScript执行等特点,Node.js被广泛的应用在服务端和桌面应用程序当中。而在过去几年当中,用的更多的动态脚本语言(PHP、Ruby等)已经被发现在共享对象时是不安全的,然而Node.js并未很好的规避该安全风险。
如今Node.js凭借其跨平台、高性能的JavaScript执行环境,被广泛应用于服务器端和桌面程序(如Skype)的开发。在过去几年中,有报道称其他动态编程语言(例如 PHP 和 Ruby)在共享对象方面是不安全的。然而,这种安全风险在 JavaScript 和 Node.js 程序中并没有得到很好的研究和理解。
借助SecureX,您可以通过无缝集成SecureX威胁响应和您现有的安全技术来加速威胁搜寻和事件响应。无论是内置,预打包或自定义的集成,您都可以灵活地将您的工具组合在一起。如果您有Cisco Stealthwatch,Firepower,A...
以往工作揭示了所涉及协议中的一些安全性和隐私性问题,这些工作对AirDrop进行了广泛的研究。对将目标连接到攻击者控制的Wi-Fi网络的PWS进行攻击。最近,有几项研究发现了苹果专有的无线协议中的严重漏洞。AWDL协议和对AirDrop的中间设备攻击。到目前为止,迄今为止的工作已经深入分析了一种服务,即。但是,所涉及的上层协议仍然是未知的。
基于这项研究,以下列出了开放API面临的10种值得注意的威胁。使用强大的身份验证机制保护API端点对于防范这种威胁至关重要。而目前流行的开放API可能是此类攻击的常见目标。在通常情况下,API网关会执行这一限速任务。应对开放API威胁为了应对以上讨论的威胁和漏洞,有必要在API的设计和开发阶段采用安全最佳实践。
NPM上发布了170多万个Node.js库,以促进软件开发。正如对比安全所揭示的,第三方库出现在当今软件的大多数(79%)中。然而,任何事物都有两面性。虽然使用库可以减少开发成本和时间,但这些集成库在实践中对软件生态系统构成了新的安全威胁,这些库中的漏洞可能会使依赖它们的软件不断面临安全风险。之前的工作已经调查了整个NPM生态系统的脆弱性影响,而他们的方法要么只是静态地考虑直接依赖性,或者基于依赖
该报告是国际战略研究所研究人员历经两年时间研究的成果,为15个国家的网络实力提供了一个重要的新的定性评估,并为理解如何对全球国家网络能力进行排序提供了一 个新的定性框架。报告旨在协助国家决策,例如指出对国家实力影响最大的网络能力。
建立身份边界天融信零信任解决方案能够全面标识和管理企业用户、设备、应用等访问主体的身份信息,对接第三方鉴权平台实现访问主体的多因素身份认证,围绕访问主体构建以身份为基石的访问控制策略,实现不依赖传统网络边界的灵活、可信、可控的业务访问。未来,天融信将持续推进零信任生态建设与技术发展,扩大领先优势,为全行业客户提供更简单、更安全、更有价值的安全接入方式,帮助企业快速高效实现数字化转型。
数字支付的生态系统是一个非常容易受到攻击的目标。
VSole
网络安全专家