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更新或安装:
|
|
要审查您的应用,请使用以下命令:
|
|
新功能
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检查
当指定时,具有相同affinity的渲染器将在同一渲染器进程中运行。由于重用渲染器进程,某些webPreferences选项也将在网页之间共享,即使您为它们指定了不同的值。这可能导致意外的安全配置覆盖:
在上面的演示中,两个BrowserWindow对象之间设置的affinity将导致不希望的nodeIntegration属性值共享。Electronegativity现在将报告此标志的使用情况(如果存在)。
在专用的AFFINITY_GLOBAL_CHECK wiki页面上阅读更多。
AllowPopups检查
当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