Electronegativity 1.3.0发布:强化Electron应用安全检测

Electronegativity 1.3.0版本发布,新增多项安全检查,包括全局检查、变量作用域分析、CSP检测等,帮助开发者识别Electron应用中的安全配置问题与潜在漏洞,提升应用安全性。

Electronegativity 1.3.0发布!

2019年6月11日 - 作者:Lorenzo Stella

自Electronegativity首次公开发布以来,我们收到了社区的积极反馈,该工具迅速成为许多专业人士和组织进行Electron应用安全审查的基准。这推动我们不断改进Electronegativity,并扩展在该领域的研究。今天,我们自豪地发布1.3.0版本,为您的Electron应用带来许多新改进和安全检查。

我们也很高兴地宣布,该工具已被Black Hat USA Arsenal 2019接受,将在拉斯维加斯的Mandalay Bay展示。我们将在8月7日下午4:00至5:20在Arsenal Station 1站进行现场演示,展示Electronegativity如何狩猎真实Electron应用中的漏洞(或者只是来打个招呼并领取Doyensec袜子!)。

如果您只是想尝试Electronegativity的新功能,请使用NPM更新或安装:

1
2
3
$ npm install @doyensec/electronegativity -g
# 或
$ npm update @doyensec/electronegativity -g

要审查您的应用,请使用以下命令:

1
$ electronegativity -i /path/to/electron/app

新功能

Electronegativity 1.1.1最初提供了27项独特检查。现在,它拥有超过40项检查,并引入了新的高级检查系统,以帮助提高工具的检测能力,减少误报和漏报。

以下是1.3.0版本的新功能简要列表:

  • 现在每项检查都有重要性和准确性属性,帮助审计员确定每个发现的重要性。因此,我们还引入了一些新的命令行标志,按严重性(--severity)和置信度(--confidence)过滤结果,便于将Electronegativity集成到应用安全管道或构建系统中。
  • 我们引入了一类新的检查称为GlobalChecks,可以动态设置发现的严重性和置信度,或根据其交互带来的固有安全风险创建新发现(例如,交叉检查nodeIntegrationsandbox标志的值,或检查在不同窗口中使用的affinity标志的存在)。
  • 添加了变量作用域分析功能,以检查Function和Global变量内容(当可用时)。
  • 现在提供了单检查扫描模式,通过传递-l标志和启用检查列表(例如-l "AuxClickJsCheck,AuxClickHtmlCheck")来实现。还引入了另一个命令行标志以显示文件的相对路径(-r)。
  • 新支持的Electron组件BrowserView,旨在替代WebView标签。该工具现在还检测nodeIntegrationInSubFrames实验选项的使用,用于在子帧(例如webview对象中的iframe)中启用NodeJS支持。
  • 各种错误修复和新检查!(见下文)

更新检查

此新版本还带来了新的和更新的检查。一如既往,我们为每类漏洞创建了包含风险和信息审计策略的知识库。

Affinity检查

当指定时,具有相同affinity的渲染器将在同一渲染器进程中运行。由于重用渲染器进程,某些webPreferences选项也将在网页之间共享,即使您为它们指定了不同的值。这可能导致意外的安全配置覆盖:

在上面的演示中,两个BrowserWindow对象之间设置的affinity将导致不希望的nodeIntegration属性值共享。Electronegativity现在将报告此标志的使用情况(如果存在)。

在专用的AFFINITY_GLOBAL_CHECK wiki页面上阅读更多。

AllowPopups检查

allowpopups属性存在时,来宾页面将被允许打开新窗口。默认情况下,弹出窗口被禁用。

ALLOWPOPUPS_HTML_CHECK wiki页面上阅读更多。

缺失的Electron安全补丁检测

此检查检测目标应用使用的Electron版本是否有可用的安全补丁。从这个版本开始,我们从手动更新安全发布文件切换到创建例程,自动从Electron的官方存储库获取最新发布,并在每次运行时确定是否有可用的安全补丁。

AVAILABLE_SECURITY_FIXES_GLOBAL_CHECKELECTRON_VERSION_JSON_CHECK wiki页面上阅读更多。

检查自定义命令行参数

此检查将比较package.json脚本和配置对象中设置的自定义命令行参数与危险参数的黑名单。使用额外的命令行参数可能增加应用攻击面、禁用安全功能或影响整体安全态势。

CUSTOM_ARGUMENTS_JSON_CHECK wiki页面上阅读更多。

CSP存在检查和审查

Electronegativity现在检查是否设置了内容安全策略(CSP)作为防止跨站脚本攻击和数据注入攻击的附加保护层。如果检测到CSP,它将使用基于csp-evaluator.withgoogle.com在线工具的新库查找弱指令。

CSP_GLOBAL_CHECK wiki页面上阅读更多。

使用用户提供的数据调用危险的JS函数

查找使用用户提供输入调用insertCSSexecuteJavaScriptevalFunctionsetTimeoutsetIntervalsetImmediate的情况。

DANGEROUS_FUNCTIONS_JS_CHECK wiki页面上阅读更多。

检查用于限制导航流的缓解措施

检测是否使用了will-navigatenew-window事件的on()处理程序。此设置可用于限制某些问题的可利用性。不强制执行导航限制会使Electron应用在意外导航的情况下完全受远程源控制。

LIMIT_NAVIGATION_GLOBAL_CHECKLIMIT_NAVIGATION_JS_CHECK wiki页面上阅读更多。

检测是否禁用了Electron的安全警告

该工具将检查开发者是否强制禁用了打印到开发者控制台的Electron警告和建议。禁用此警告可能向开发者隐藏错误配置或不安全模式的存在。

SECURITY_WARNINGS_DISABLED_JS_CHECKSECURITY_WARNINGS_DISABLED_JSON_CHECK wiki页面上阅读更多。

检测未为不受信任源设置setPermissionRequestHandler

不为权限请求(例如媒体)强制执行自定义检查会使Electron应用完全受远程源控制。例如,跨站脚本漏洞可用于访问浏览器媒体系统并静默录制音频/视频。因此,Electronegativity还将检查是否设置了setPermissionRequestHandler

PERMISSION_REQUEST_HANDLER_GLOBAL_CHECK wiki页面上阅读更多。

……还有更多功能即将推出!如果您是开发者,我们鼓励您使用Electronegativity来了解这些Electron安全陷阱如何影响您的应用以及如何避免它们。我们坚信Electron需要一个强大的安全社区支持,创建正确且强大的工具来帮助这个社区是改善整个Electron生态系统安全态势的第一步。

最后,我们要感谢所有过去和现在对该工具的贡献者:@ikkisoft、@p4p3r、@0xibram、@yarlob、@lorenzostella,以及最终赞助此发布的@Doyensec。

拉斯维加斯见!

@lorenzostella

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计