Electronegativity 1.3.0发布:强化Electron应用安全审计

Electronegativity 1.3.0版本发布,新增多项安全检查,包括全局检查系统、变量作用域分析和BrowserView支持,提升Electron应用漏洞检测能力,支持通过NPM安装和命令行扫描。

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,可以动态设置发现的严重性和置信度,或根据它们的交互带来的固有安全风险创建新发现(例如,交叉检查nodeIntegration和sandbox标志值,或跨不同窗口使用affinity标志的存在)。
  • 添加了变量作用域分析功能,以检查Function和Global变量内容(当可用时)。
  • 现在通过传递-l标志和启用检查列表(例如,-l “AuxClickJsCheck,AuxClickHtmlCheck”)提供新的单检查扫描模式。还引入了另一个命令行标志以显示文件的相对路径(-r)。
  • 新引入的Electron组件BrowserView现在得到支持,旨在作为WebView标签的替代品。该工具现在还检测nodeIntegrationInSubFrames实验选项的使用,用于在子帧(例如,webview对象内的iframe)中启用NodeJS支持。
  • 各种错误修复和新检查!(见下文)

更新检查

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

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

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

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

AllowPopups Check 当allowpopups属性存在时,访客页面将被允许打开新窗口。弹出窗口默认禁用。

在ALLOWPOPUPS_HTML_CHECK wiki页面上阅读更多。

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

在AVAILABLE_SECURITY_FIXES_GLOBAL_CHECK和ELECTRON_VERSION_JSON_CHECK wiki页面上阅读更多。

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

在CUSTOM_ARGUMENTS_JSON_CHECK wiki页面上阅读更多。

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

在CSP_GLOBAL_CHECK wiki页面上阅读更多。

使用用户提供的数据调用危险JS函数 查找insertCSS、executeJavaScript、eval、Function、setTimeout、setInterval和setImmediate与用户提供输入的出现。

在DANGEROUS_FUNCTIONS_JS_CHECK wiki页面上阅读更多。

检查设置为限制导航流的缓解措施 检测是否使用了will-navigate和new-window事件的on()处理程序。此设置可用于限制某些问题的可利用性。不强制执行导航限制会在意外导航的情况下将Electron应用完全控制权留给远程源。

在LIMIT_NAVIGATION_GLOBAL_CHECK和LIMIT_NAVIGATION_JS_CHECK wiki页面上阅读更多。

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

在SECURITY_WARNINGS_DISABLED_JS_CHECK和SECURITY_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 设计