Electronegativity is finally out!
24 Jan 2019 - Posted by Luca Carettoni
我们很高兴宣布Electronegativity的公开版本发布!这是一款开源工具,能够识别基于Electron的应用程序中的错误配置和安全反模式。
Electronegativity是首款此类工具,可帮助软件开发者和安全审计人员检测和缓解Electron应用中的潜在弱点。
如果您只是想尝试Electronegativity,请直接使用NPM安装:
|
|
要审查您的应用程序,请使用以下命令:
|
|
结果将以紧凑的表格形式显示,并引用应用程序文件和我们知识库的相关内容。
剩余的博客文章将提供更多关于公开版本的详细信息,并介绍其当前功能。
一点历史
早在2017年7月的BlackHat USA简报会上,我们首次提出了关于Electron安全的全面研究,主要关注框架级漏洞和错误配置。作为研究旅程的一部分,我们还创建了一个安全反模式和必备功能的清单,以说明基于Electron的应用程序中的错误配置和漏洞。
在此基础上,我和Claudio Merloni开始开发Electronegativity的第一个原型。BlackHat演示后不久,我们收到了大量关于如何改进工具的优秀反馈和新想法。回国后,我们开始着手这些改进,直到意识到需要重新设计整体架构。代码库再次转为私有,并在客户项目之间进行了少量优化。
2018年夏天,我们聘用了Doyensec的第一位实习生——Ibram Marzouk,他重新开始致力于该工具的开发。随后,Jaroslav Lobacevski加入项目团队,并将Electronegativity推向了完成线。Claudio、Ibram和Jaroslav,感谢你们的贡献!
虽然确实有些迟了,但我们很高兴最终以更好的形态发布了这个工具。我们相信Electron将会持续存在,希望Electronegativity能成为所有Electron开发者的有用伙伴。
它是如何工作的?
Electronegativity利用AST/DOM解析来查找与安全相关的配置。检查是独立的文件,这使得工具模块化且可扩展。
构建新的检查也相对容易。我们支持三种“家族”的检查,以便工具可以分析Electron应用程序中的所有资源:
- JS(使用Esprima、Babel、TypeScript ESTree的组合)
- HTML(使用Cheerio)
- JSON(使用原生JSON.parse())
当您扫描应用程序时,工具将解包所有资源(如果适用)并使用所有注册的检查执行审计。结果以终端、CSV文件或SARIF格式显示。
支持的检查
Electronegativity目前实现了以下检查。针对每类漏洞,我们创建了一个包含风险信息和审计策略的知识库:
- ALLOWPOPUPS_HTML_CHECK
- AUXCLICK_JS_CHECK
- AUXCLICK_HTML_CHECK
- BLINK_FEATURES_JS_CHECK
- BLINK_FEATURES_HTML_CHECK
- CERTIFICATE_ERROR_EVENT_JS_CHECK
- CERTIFICATE_VERIFY_PROC_JS_CHECK
- CONTEXT_ISOLATION_JS_CHECK
- CUSTOM_ARGUMENTS_JS_CHECK
- DANGEROUS_FUNCTIONS_JS_CHECK
- ELECTRON_VERSION_JSON_CHECK
- EXPERIMENTAL_FEATURES_HTML_CHECK
- EXPERIMENTAL_FEATURES_JS_CHECK
- HTTP_RESOURCES_JS_CHECK
- HTTP_RESOURCES_HTML_CHECK
- INSECURE_CONTENT_HTML_CHECK
- INSECURE_CONTENT_JS_CHECK
- NODE_INTEGRATION_HTML_CHECK
- NODE_INTEGRATION_EVENT_JS_CHECK
- NODE_INTEGRATION_JS_CHECK
- OPEN_EXTERNAL_JS_CHECK
- PERMISSION_REQUEST_HANDLER_JS_CHECK
- PRELOAD_JS_CHECK
- PROTOCOL_HANDLER_JS_CHECK
- SANDBOX_JS_CHECK
- WEB_SECURITY_HTML_CHECK
- WEB_SECURITY_JS_CHECK
利用这27项检查,Electronegativity已经能够识别现实应用中的许多漏洞。未来,我们将继续改进检测并更新工具,以跟上快速变化的Electron框架。立即开始使用Electronegativity吧!