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 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