freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用NodeSecurityShield保障NodeJS应用程序安全
2022-06-13 00:26:57
所属地 广西

关于NodeSecurityShield

NodeSecurityShield简称为NSS,是一款对开发人员和安全工程师十分友好的安全工具,该工具旨在帮助广大开发人员更好地保护NodeJS应用程序的安全。

该工具受到了log4J漏洞(CVE-2021-44228)的启发,一旦应用程序可以进行任意网络调用,那么攻击者就有可能利用该漏洞来实施入侵攻击。因此,我们认为有必要让应用程序声明它可以拥有哪些权限,以便增加这些漏洞的利用难度。为了实现这个目标,NodeSecurityShield实现了自己的资源访问策略。

功能介绍

攻击监控:带外网络调用

攻击屏蔽:带外网络调用

资源访问策略(RAP)

该工具所实现的资源访问策略类似于内容安全策略(CSP)。

NodeSecurityShield将允许开发人员/安全工程师声明应用程序应该访问哪些资源,NodeSecurityShield也将强制执行其资源访问策略(RAP)。

工具安装

该工具主要针对的是NodeJS应用程序,因此我们首先要在本地设备上安装并配置好NodeJS环境。接下来,使用npm命令直接下载和安装NodeSecurityShield即可:

npm install nodesecurityshield

工具使用

// 使用require引入'nodesecurityshield'

let nodeSecurityShield = require('nodesecurityshield');

 

// 启用攻击监控或屏蔽功能

nodeSecurityShield.enableAttackMonitoring(resourceAccessPolicy ,callbackFunction);

资源访问策略(RAP)样例

const resourceAccessPolicy  = {

  "outBoundRequest" : {

          "blockedDomains" : ["*.123.com", "stats.abc.com", 'xyz.com'],

          "allowedDomains" : ["*.domdog.io"]

      }

};

注意,blockedDomains的优先级高于allowedDomains,比如说,工具首先会根据blockedDomains检查请求,然后再根据allowedDomains检查请求。

callbackFunction样例(攻击屏蔽)

var callbackFunction = function (violationEvent) {

    throw new Error("Request Blocked. It violates declared Resource Access Policy.")

}

violationEvent样例

{

 "violationtType": "Outbound Request",

 "message": "Outbound request to 'www.malicious.com' violates declared 'Resource Access Policy (RAP)'.",

 "policy": {

  "outBoundRequest" : {

          "blockedDomains" : ["*.123.com", "stats.abc.com", 'xyz.com'],

          "allowedDomains" : ["*.domdog.io"]

      }

}

结合Sentry使用

结合Sentry的resourceAccessPolicyto样例

const resourceAccessPolicy  = {

  "reportUriHosts" : ["ingest.sentry.io"],

  "outBoundRequest" : {

          "blockedDomains" : ["*.123.com", "stats.abc.com", 'xyz.com'],

          "allowedDomains" : ["*.domdog.io"]

      }

};

结合Sentry的callbackFunction样例

var callbackFunction = function (violationEvent) {

  

  var e = new Error();

  e.name = 'Resource Access Policy Violation';

  e.message = JSON.stringify(violationEvent);

  Sentry.captureException(e);

 

}

许可证协议

该项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

NodeSecurityShield:GitHub传送门

参考资料

https://nvd.nist.gov/vuln/detail/CVE-2021-44228

https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

https://sentry.io/

# nodejs # 应用程序安全 # NodeJS安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录