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

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

作者: {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 毫秒,在实践中,这一开销通常可以忽略不计。


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

查看所有标签

猜你喜欢:

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

运营笔记

运营笔记

类延昊 / 天津人民版社 / 2016-12-1 / CNY 39.80

运营是入门浅但学问深的行当。一个入门很久的人不见得能在11年内爬到塔尖,同样一个初入龙门的人占据高位也不见得非用11年。 到底该怎么做运营?如何做运营才不至于让自己忙死累死甚至茫然不知所措?如何和用户进行有效沟通?如何把握住处于塔尖20%的核心用户?如何强敌逼阵时快速找到突破口?如何挤破头皮提高转化率? 在这本书里,类类以自己常年战斗在一线摸爬滚打的经验给予了有效而真诚的解答。一起来看看 《运营笔记》 这本书的介绍吧!

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

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具