Electronegativity(一种识别Electron框架应用程序中的错误配置和安全性反模式的工具)

本文概述

  • 什么是Electronegativity
  • 如何使用它
尽管很多人认为他们不会再回来了, 但是桌面应用程序又变得越来越流行。在过去的几年中, 开发人员开始转向Web应用程序, 但是我们处于相反的境地。与采用Cordova Framework的混合移动应用程序一样流行的是, 在台式机中, 我们有Github的项目Electron, 该框架用于使用JavaScript, HTML和CSS构建跨平台的台式机应用程序。在这种趋势下, Github的Electron成为了一个流行的框架。尽管看起来很容易, 但将Web应用程序嵌入到独立的Web环境(Chromium, Node.Js)中却带来了新的安全挑战。
在这篇简短的文章中, 我们想向你介绍用于Electron Framework应用程序的Electronegativity工具。
什么是Electronegativity【Electronegativity(一种识别Electron框架应用程序中的错误配置和安全性反模式的工具)】Electronegativity是一种识别基于Electron的应用程序中的错误配置和安全性反模式的工具。它利用AST和DOM解析来查找与安全性相关的配置, 如” Electron安全性清单-开发人员和审计师指南” 白皮书中所述。
使用Electron开发应用程序时, 软件开发人员和安全审核人员可以使用此工具来检测和缓解潜在的漏洞和实现错误。使用Electronegativity时, 仍需要对Electron安全性有一个很好的了解, 因为该工具检测到的某些潜在问题需要人工调查。
在@lucacarettoni对Electron Security Checklist的作者进行的研究期间, 该工具的开发人员广泛研究了Electron框架本身的安全性, 并向核心团队报告了漏洞。但是, 它们只关注应用程序级的设计和实现缺陷。
如何使用它要在系统上安装此软件包, 请在终端上运行以下命令:
npm install @doyensec/electronegativity -g

这将在系统上全局安装Electronegativity软件包。安装后, 你可以轻松地在包含Electron应用程序的目录中查找问题:
electronegativity -i ./project-directory

命令Electronegativity支持以下选项:
选项 描述
-V 输出版本号
-i, -输入 input (directory, .js, .html, .asar)
-l, -检查 仅运行以csv格式传递的指定检查
-s, -严重性 仅返回指定严重性级别或更高级别的结果
-c, -信心 仅返回指定置信度或更高的发现
-o, – output < 文件名[.csv或.sarif]> 将结果保存为csv或sarif格式的文件
-r, -相对 显示文件的相对路径
-h, – help 输出使用情况信息
例如, 如果要使用报告信息生成CSV:
electronegativity -i ./project-directory -o report.csv

以下命令将生成包含以下信息的CSV报告:
问题 严重程度 置信度 文件名 位置 样品 描述 网址
AUXCLICK_JS_CHECK 介质 公司 C:\ Users \ sdkca \ Desktop \ Dev Workbench \ electron \ electron-quick-start \ main.js 11:15 mainWindow = new BrowserWindow({ 将导航流限制为不受信任的来源。单击鼠标中键可能会导致Electron在新窗口中打开链接 https://github.com/doyensec/electronegativity/wiki/AUXCLICK_JS_CHECK
CONTEXT_ISOLATION_JS_CHECK 公司 C:\ Users \ sdkca \ Desktop \ Dev Workbench \ electron \ electron-quick-start \ main.js 11:15 mainWindow = new BrowserWindow({ 查看contextIsolation选项的使用 https://github.com/doyensec/electronegativity/wiki/CONTEXT_ISOLATION_JS_CHECK
NODE_INTEGRATION_JS_CHECK 信息性 公司 C:\ Users \ sdkca \ Desktop \ Dev Workbench \ electron \ electron-quick-start \ main.js 15:6 nodeIntegration:正确 对不受信任的来源禁用nodeIntegration https://github.com/doyensec/electronegativity/wiki/NODE_INTEGRATION_JS_CHECK
SANDBOX_JS_CHECK 介质 公司 C:\ Users \ sdkca \ Desktop \ Dev Workbench \ electron \ electron-quick-start \ main.js 11:15 mainWindow = new BrowserWindow({ 将沙箱用于不受信任的来源 https://github.com/doyensec/electronegativity/wiki/SANDBOX_JS_CHECK
CSP_GLOBAL_CHECK 介质 某些 不适用 0:0 不适用 在目标应用程序中未检测到CSP https://github.com/doyensec/electronegativity/wiki/CSP_GLOBAL_CHECK
LIMIT_NAVIGATION_GLOBAL_CHECK 某些 不适用 0:0 不适用 在新窗口和导航事件上使用。缺少导航限制 https://github.com/doyensec/electronegativity/wiki/LIMIT_NAVIGATION_GLOBAL_CHECK
PERMISSION_REQUEST_HANDLER_GLOBAL_CHECK 介质 某些 不适用 0:0 不适用 缺少PermissionRequestHandler来限制特定权限(例如openExternal), 以响应来自特定来源的事件。 https://github.com/doyensec/electronegativity/wiki/PERMISSION_REQUEST_HANDLER_GLOBAL_CHECK
有关此工具的更多信息, 请访问Github上的官方资源库, 不要忘记阅读BlackHat 2017研究报告” Electronegativity-Electron安全研究” , 并关注Doyensec的博客。

    推荐阅读