Synode:自动化预防Node.js的注入攻击

栏目: Node.js · 发布时间: 5年前

作者: {Zebork}@ArkTeam

原文作者: Staicu C A, Pradel M, Livshits B.

原文标题: Synode: Understanding and Automatically Preventing Injection Attacks on Node.js

原文会议: NDSS 2018

原文链接: https://www.ndss-symposium.org/wp-content/uploads/2018/03/NDSS2018_07A-2_Staicu_Slides.pdf

Node.js 生态系统已经创造了许多的现代应用程序,其中包括服务器侧的 Web 应用程序和桌面应用程序。与浏览器中的 JavaScript 应用程序不同的是, Node.js 应用程序没有浏览器沙箱的保护,可以和操作系统自由交互。因此,针对 Node.js 的注入攻击可以带来重大的损害。本文对 235850 Node.js 模块进行了大规模研究,发现数千个模块可能遭受注入攻击,并提出了 Synode ,一种自动化的注入缓解技术。 Synode 结合了静态分析和动态的运行时安全策略,易于部署,不需要对 Node.js 平台进行任何修改,其运行开销也达到了亚毫秒级,并且误报率只有 10%

一、JavaScript的应用场景革新和问题

JavaScript 除了驱动了绝大多数运行在浏览器中的 Web 应用程序,还在其他的平台有着革命性的进步。服务器侧 Web 应用程序和桌面应用程序都在越来越广泛地采用 Node.js ;移动应用程序也在越来越多地采用 JavaScript ,甚至操作系统,例如 Firefox OS ,也开始采用 JavaScript 进行开发。

JavaScript 应用场景的革新,也将传统应用场景中 JavaScript 的问题传播到了其他的场景。值得注意的是这种问题是 JavaScript 语言本身在开发中可能导致的脆弱点,而不是简单的将 Web 应用程序的问题传播到其他场景。比如注入漏洞,在移动应用程序和 Node.js 环境中的影响更加严重,而浏览器 Web 应用中的最大问题则是 XSS

二、Synode整体框架

Synode 将静态分析和运行时检测结合到一个全自动的方法中,以缓解注入攻击,这是第一个解决 Node.js 中注入攻击的方法。 Synode 的总体思想是防止在注入 API 的注入。 Synode 首先会分析可能流入注入 API 的值,如果没有不受信任的数据可能流入注入 API ,则不需要进行进一步的分析;反之,如果有不受信任的数据可能流入注入点,则需要进行动态的运行时检测。对于运行时检测, Synode 的方法是在静态分析时重写源代码,将检查代码插入到注入点之前,当运行时检测器检测到违反安全策略的值,程序将会终止,以防止注入攻击。

Synode:自动化预防Node.js的注入攻击

图1 总体框架图

三、静态分析

Synode 的静态分析器首先将传递给注入 API 的值解析为树;然后对树进行分析得到一组模板,这些模板表示传递给函数的可能字符串的值,包括已知和未知部分;最后,基于生成的模板,静态分析器分析注入 API 的每个调用点是否是静态安全的,从而进一步决定是否要插入运行时检测代码。

Synode:自动化预防Node.js的注入攻击

图2 模板树的几个例子

Synode:自动化预防Node.js的注入攻击

图3 由模板树得到的模板

四、动态运行时检测

对于无法确定传递给注入 API 的值的调用点,采用动态的运行时检测的机制。运行时检测器分两步实现预期目标。

首先,检测器将静态提取的调用点模板集,转换为表示良性值的一组部分语法树( PAST ),而模板的未知部分,则表示为未知子树;在执行时,检测器将传递给注入 API 的值解析为抽象语法树( AST ),扩展未知子树。在这一步骤中,检测器将强制执行一种策略,使这个 AST 必须能够从至少一个部分语法树中导出,并且这些扩展要在所有可能 AST 节点的允许子集范围内。

五、性能

作者使用了搭载 Intel Core I7(2.10GHz) 12GB 内存,运行 Ubuntu 14.04 的联想 ThinkPad T440s 笔记本进行测试。

对于静态分析, Synode 成功完成了 15604 个模块中的 96.27% ,平均分析时间是 4.38 秒;对于运行时检测,每一次检测的成本为 0.74 毫秒,在实践中,这一开销通常可以忽略不计。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

.NET设计规范

.NET设计规范

克瓦林纳 / 葛子昴 / 人民邮电出版社 / 2006-7 / 49.00元

本书为框架设计师和广大开发人员设计高质量的软件提供了权威的指南。书中介绍了在设计框架时的最佳实践,提供了自顶向下的规范,其中所描述的规范普遍适用于规模不同、可重用程度不同的框架和软件。这些规范历经.net框架三个版本的长期开发,凝聚了数千名开发人员的经验和智慧。微软的各开发组正在使用这些规范开发下一代影响世界的软件产品。. 本书适用于框架设计师以及相关的专业技术人员,也适用于高等院校相关专业......一起来看看 《.NET设计规范》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码