Skip to content

Merge pull request #1 from alipay/jiufo_branch #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 20 commits into
base: jiufo_branch
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 59 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
## 联系我们
#### 微信
<div align="center">
<table>
<tr>
<td style="text-align: center;">
<img src="https://github.com/alipay/ant-application-security-testing-benchmark/raw/main/floder-img/xzs.png" alt="微信小助手" width="200"/><br>
<em>微信小助手</em>
</td>
</tr>
</table>
</div>

## 背景
本项目属于蚂蚁安全团队应用安全评价体系项目。本评价体系为Nodejs污点追踪引擎评价体系,用于评价对服务端的Node环境中运行的Javascript代码以及当前开发中常用的Typescript代码进行污点追踪的安全扫描引擎的能力。
本项目属于蚂蚁安全团队应用安全评价体系项目。本评价体系为Nodejs污点追踪引擎评价体系,用于评价对服务端的Node环境中运行的Javascript代码以及当前开发中常用的Typescript代码进行污点追踪的安全扫描引擎的能力。评价体系靶场选择了蚂蚁开源的Nodejs框架EggJS。

**注:本评价体系评价的是Nodejs静态安全分析引擎,而非全部的整个检测产品,即不包括使用引擎来建设的检测规则的评价。**

通过应用安全评价体系项目,希望可以衡量出应用安全产品的技术优劣,指引应用安全产品的发展方向,并可辅助用于商业化安全产品采购的技术选型,详见wiki
通过应用安全评价体系项目,希望可以衡量出应用安全产品的技术优劣,指引应用安全产品的发展方向,并可辅助用于商业化安全产品采购的技术选型。

项目主要包括两部分,一部分是分语言的评价体系,另一部分是基于评价体系的Benchmark。此项目一期首先发布的是Nodejs SAST引擎能力评价体系V1.0和Benchmark。如果您有任何好的想法,欢迎与我们团队联系。
[Java应用的xAST(SAST/IAST/DAST)评价体系传送门](https://github.com/alipay/ant-application-security-testing-benchmark)
Expand All @@ -26,9 +41,39 @@
| |-- config.prod.ts
| |-- plugin.ts

## 评价体系
[ Nodejs评价体系-评价项脑图 ](https://github.com/alipay/ant-application-security-testing-benchmark/blob/main/doc/sast-node%E8%AF%84%E4%BB%B7%E4%BD%93%E7%B3%BB.md)


## 评价体系Cases
靶场用例,详见文档[《引擎能力评价体系》](),目前仍在持续更新中,您也可以评论留下您的宝贵意见或建议
靶场用例,详见文档[《评价项对应表》](https://github.com/alipay/ant-application-security-testing-benchmark-nodejs/wiki/case%E5%AF%B9%E5%BA%94%E8%A1%A8),目前仍在持续更新中,您也可以评论留下您的宝贵意见或建议

配合靶场使用的source、sink点清单见文档[《source、sink清单》](https://github.com/alipay/ant-application-security-testing-benchmark-nodejs/wiki/%E9%9D%B6%E5%9C%BAsource%E3%80%81sink%E7%82%B9%E6%B8%85%E5%8D%95),各个产品使用时可以以自己的配置方式进行导入配置。


## 推荐使用的评价指标
### 基本指标:
* TP:被检出为漏洞的漏洞(是真正的漏洞,而且也被检出为漏洞)
* TN:没有被检出为漏洞的非漏洞(未检出的非漏洞)
* FP:被检出为漏洞的非漏洞(本来不是漏洞,但是被模型检出了)
* FN:没有被检出的漏洞(是真正的漏洞,但是没有被检出)
* 准确率=TP/(TP+FP) -- 可辅助观测检出的case中真实是漏洞的比例
* 召回率=TP/(TP+FN) -- 可辅助观测检出的漏洞case占全部漏洞的比例

### 增强指标:
* EM: 链路信息错误数量 -- 可辅助观测给运营时带来的误报情况(因为链路错误情况下产生的漏洞一定是误报)
* EL: 链路信息正确但是缺失内容数量 -- 可辅助观测自动化消费时可能产生的漏报(自动化消费链路可能因为链路信息缺失的引擎bug而无法产生漏洞)
* SR=TP+FP+EM+EL -- 上报链路总数,可辅助观测整体的运营压力 (如果链路数字远大于case数字,说明产生了非常多的冗余结果,会给运营增加额外负担)
* EMR = EM/SR -- 链路信息错误率,可辅助观测运营中的误报情况
* ELR = EL/SR -- 链路信息丢失率,可辅助观测自动化消费时可能产生的漏报

**注:可将引擎实际使用情况将链路中信息错误、不全(节点丢失、信息存在偏差等)均视作未检出该case(记入TN/FN)。这部分链路可能会提升误报率与遗漏率,给运营带来压力。**

### 当前靶场case分布(v1.0.0)

S =TP+TN+FP+FN = 169

其中,完整度caseAB分布:130:3,准确度caseAB分布:12:24。 因此总计该检出的:130+12=142,总计不该检出的24+3=27。 用于进行准确率、召回率的计算。

## QuickStart

Expand All @@ -49,6 +94,15 @@ Don't tsc compile at development mode, if you had run `tsc` then you need to `np


## 联系我们
钉钉
#### 微信
<div align="center">
<table>
<tr>
<td style="text-align: center;">
<img src="https://github.com/alipay/ant-application-security-testing-benchmark/raw/main/floder-img/xzs.png" alt="微信小助手" width="200"/><br>
<em>微信小助手</em>
</td>
</tr>
</table>
</div>

![扫码加入钉钉群](./floder-img/a.png)