本文概述
尽管很多人认为他们不会再回来了, 但是桌面应用程序又变得越来越流行。在过去的几年中, 开发人员开始转向Web应用程序, 但是我们处于相反的境地。与采用Cordova Framework的混合移动应用程序一样流行的是, 在台式机中, 我们有Github的项目Electron, 该框架用于使用JavaScript, HTML和CSS构建跨平台的台式机应用程序。在这种趋势下, Github的Electron成为了一个流行的框架。尽管看起来很容易, 但将Web应用程序嵌入到独立的Web环境(Chromium, Node.Js)中却带来了新的安全挑战。
在这篇简短的文章中, 我们想向你介绍用于Electron Framework应用程序的Electronegativity工具。
什么是Electronegativity
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的博客。
评论前必须登录!
注册