电容
什么是电容?
电容 这是一种工具,用以识别在下列系统中的不正确配置和安全防标 电子- 基于应用程序.
它利用AST和DOM解析来寻找与安全有关的配置,详见 "电子安全检查清单——开发者和审计师指南" 白纸.
软件开发者和安全审计员在使用Electron开发应用程序时,可以利用这一工具来检测并缓解潜在的弱点和执行错误. 在使用电负性时仍然需要对电(in)安全性有很好的了解,因为工具所发现的一些潜在问题需要人工调查.
如果你对电能安全感兴趣 请看看我们 黑发2017年 研究 电能 - 电能安全研究 看着他 多恩塞克的博客。 。 。 .

电子NG改进版
如果您需要更强大或更新的东西,由于应用了多年的研发成果,基于电负性(Electronegative)的改进型SAST工具可以使用 多恩塞克语Name2020年底,我们坐下来制定项目路线图,并建立了一个开发小组,以研究现在的情况 电能您可以在最近阅读一些与开放源码软件版本相比的主要改进 博客文章。 。 。 .
安装
主要释放被推向国家预防机制,可以简单地使用:
$ npm install @doyensec/electronegativity -g
使用量
国 际
$ electronegativity -h
| 选项 | 说明 |
|---|---|
| - 维 | 输出版本编号 |
| -一, -输入 | 输入(目录、.js、.html、.asar) |
| -i, -- 检查 | 只运行指定的检查, 以 csv 格式通过 |
| -x, -- 不包括检查 | 跳过指定的检查列表,以 csv 格式通过 |
| -s, -- 绝对的 | 仅返回具有规定严重或以上程度的检测结果 |
| -c -- 自信 | 仅返回具有特定信任程度或以上的结果 |
| -o, --output <filename [.csv或.sarif]] (中文(简体) ) | 将结果保存到 csv 或 sarif 格式的文件 |
| -r, -- 相对 | 显示文件的相对路径 |
| -v, -- 动词 | 显示结果的描述,默认为真实 |
| -u, -- 升级 | 运行Electron升级检查, eg -u 7.8 |
| -e, --电子版本 | 假设设定的 Electron 版本, 凌驾于检测到的版本, 如 -e 7. 0 |
| -p, --parser-插头 | 指定用逗号分隔的附加解析器插件, 例如 - p 可选 链条 |
| -h, --帮助 | 产出使用信息 |
使用电负性在包含有 Electron app的目录中查找问题:
$ electronegativity -i /path/to/electron/app
利用电负性在 asar 归档和保存结果于 csv 文件 :
$ electronegativity -i /path/to/asar/archive -o result.csv
在从一个电子版本升级到另一个版本时使用电负性来发现断裂变化:
$ electronegativity -i /path/to/electron/app -v -u 7..8
注:如果运行到致命错误“ JavaScript heap ” , 您可以使用 node --max-old-space-size=4096 electronegativity -i /path/to/asar/archive -o result.csv
忽略行或文件
电容允许您使用 eng-disable 评论。 例如,如果想要特定检查忽略一行代码,可以按以下方式禁用:
const res = eval(safeVariable); /* eng-disable DANGEROUS_FUNCTIONS_JS_CHECK */
<webview src="https://doyensec.com/" enableblinkfeatures="DangerousFeature"></webview> <!-- eng-disable BLINK_FEATURES_HTML_CHECK -->
任意 eng-disable 内置注释( i)// eng-disable, (中文(简体) ), /* eng-disable */, (中文(简体) ), <!-- eng-disable -->)将禁用该行的指定检查。 也可以使用他们的蛇案身份证提供多个核对名称(DANGEROUS_FUNCTIONS_JS_CHECK或它们的构造名称(dangerousFunctionsJSCheck:
shell.openExternal(eval(safeVar)); /* eng-disable OPEN_EXTERNAL_JS_CHECK DANGEROUS_FUNCTIONS_JS_CHECK */
如果你放一个 eng-disable a 顶端任何代码之前的指令 .js 或者说 .html 文件,将禁用已通过的检查 整个 文档.
关于全球检查和 eng-disable 说明
在 v1. 9.0 全球 之前 无法使用代码说明来禁用检查 。 如果您仍在使用旧版本, 请使用 -x 手动禁用检查列表的 CLI 参数( 例如 ). -x LimitNavigationJsCheck,PermissionRequestHandlerJsCheck,CSPGlobalCheck) (中文(简体) ).
请注意,使用说明可能不适用于某些更高级别的检查,例如: CSP_GLOBAL_CHECK 或者说 AVAILABLE_SECURITY_FIXES_GLOBAL_CHECK对于这些案例,你可能想使用 -x 标记以排除扫描中的特定检查.
排雷中心/发改委
电容动作 可能作为您的 GitHub CI/CD 管道的一部分运行以获取“代码扫描提示 ” :

程序
也可以在程序上使用电负性,使用与CLI相似的选项:
const run = require('@doyensec/electronegativity')
// or: import run from '@doyensec/electronegativity';
run({
// input (directory, .js, .html, .asar)
input: '/path/to/electron/app',
// save the results to a file in csv or sarif format (optional)
output: '/path/for/output/file',
// true to save output as sarif, false to save as csv (optional)
isSarif: false,
// only run the specified checks (optional)
customScan: ['dangerousfunctionsjscheck', 'remotemodulejscheck'],
// only return findings with the specified level of severity or above (optional)
severitySet: 'high',
// only return findings with the specified level of confidence or above (optional)
confidenceSet: 'certain',
// show relative path for files (optional)
isRelative: false,
// run Electron upgrade checks, eg -u 7..8 to check upgrade from Electron 7 to 8 (optional)
electronUpgrade: '7..8',
// assume the set Electron version, overriding the detected one
electronVersion: '5.0.0',
// use additional parser plugins
parserPlugins: ['optionalChaining']
})
.then(result => console.log(result))
.catch(err => console.error(err));
结果包含全球和原子检查的次数、分析时遇到的任何错误以及发现的一系列问题,例如:
{
globalChecks: 6,
atomicChecks: 36,
errors: [
{
file: 'ts/main/main.ts',
sample: 'shell.openExternal(url);',
location: { line: 328, column: 4 },
id: 'OPEN_EXTERNAL_JS_CHECK',
description: 'Review the use of openExternal',
properties: undefined,
severity: { value: 2, name: 'MEDIUM', format: [Function: format] },
confidence: { value: 0, name: 'TENTATIVE', format: [Function: format] },
manualReview: true,
shortenedURL: 'https://git.io/JeuMC'
},
{
file: 'ts/main/main.ts',
sample: 'const popup = new BrowserWindow(options);',
location: { line: 340, column: 18 },
id: 'CONTEXT_ISOLATION_JS_CHECK',
description: 'Review the use of the contextIsolation option',
properties: undefined,
severity: { value: 3, name: 'HIGH', format: [Function: format] },
confidence: { value: 1, name: 'FIRM', format: [Function: format] },
manualReview: false,
shortenedURL: 'https://git.io/Jeu1p'
}
]
}
捐款
如果你想为这个项目做贡献 请看看我们 捐款额。 。 。 .
贷项
由于许多人的工作,电磁成为可能 捐助者。 。 。 .
该项目由下列机构赞助: 多恩塞克有限责任公司。 。 。 .
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}让我们分手吧 你的Electron.js应用程序!