Skip to content

Commit 2dc17f1

Browse files
committed
性能用例
增加性能用例
1 parent c459b21 commit 2dc17f1

File tree

13 files changed

+650
-35
lines changed

13 files changed

+650
-35
lines changed

src/main/java/com/iast/astbenchmark/analyser/bean/consts/VendorEnum.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
public enum VendorEnum {
44
IAST("IAST","IAST"),
55
SEEKER("SEEKER","SEEKER"),
6-
DONGTAI("DONGTAI","DONGTAI")
6+
DONGTAI("DONGTAI","DONGTAI"),
7+
XMIRROR("XMIRROR","XMIRROR")
78
;
89
private String code;
910
private String description;

src/main/java/com/iast/astbenchmark/analyser/service/impl/ConfigServiceImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public String getDetection(VendorEnum vendor) {
3434
return seekerDetectionPath;
3535
case DONGTAI:
3636
return dongtaiDetectionPath;
37+
case XMIRROR:
38+
return xmirrorDetectionPath;
3739
}
3840
return "";
3941
}
@@ -49,6 +51,8 @@ public String getDetection(VendorEnum vendor) {
4951
private String seekerDetectionPath;
5052
@Value("${dongtai.detectionPath}")
5153
private String dongtaiDetectionPath;
54+
@Value("${xmirror.detectionPath}")
55+
private String xmirrorDetectionPath;
5256

5357
@Override
5458
public void doChanhge(VendorEnum vendor, String path, String checkFlag) {
@@ -63,6 +67,9 @@ public void doChanhge(VendorEnum vendor, String path, String checkFlag) {
6367
case DONGTAI:
6468
dongtaiDetectionPath=path;
6569
break;
70+
case XMIRROR:
71+
xmirrorDetectionPath = path;
72+
break;
6673
}
6774
}
6875
}
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
package com.iast.astbenchmark.cases;
2+
3+
import com.google.common.collect.Maps;
4+
import com.iast.astbenchmark.cases.bean.big.BigParamBean;
5+
import com.iast.astbenchmark.cases.bean.big.BigSizeBean;
6+
import com.iast.astbenchmark.common.CommonConsts;
7+
import com.iast.astbenchmark.common.utils.MyCommonTestUtil;
8+
import org.springframework.web.bind.annotation.PostMapping;
9+
import org.springframework.web.bind.annotation.RequestBody;
10+
import org.springframework.web.bind.annotation.RequestParam;
11+
import org.springframework.web.bind.annotation.RestController;
12+
13+
import java.io.IOException;
14+
import java.lang.reflect.Method;
15+
import java.util.HashMap;
16+
import java.util.Map;
17+
18+
/**
19+
* 性能测试靶场
20+
* ● 超长调用链路(污点链路长度1000)有漏洞场景,占比5%
21+
* ● 大污点对象(污点对象大小超过1K)有漏洞场景,占比5%
22+
* ● 多污点对象(同一个请求同时跟踪100个污点对象)有漏洞场景,占比5%
23+
*/
24+
@RestController()
25+
public class AstPerfCase001 {
26+
/**
27+
* 1 无漏洞简单场景
28+
*/
29+
@PostMapping("case99001")
30+
public Map<String,String> aTaintCase99001(@RequestParam String cmd) {
31+
Map res = Maps.newHashMap();
32+
res.put(cmd,cmd);
33+
return res;
34+
}
35+
36+
/**
37+
* 有漏洞简单场景(污点链路长度<10)
38+
*/
39+
@PostMapping("case99002")
40+
public Map<String,String> aTaintCase99002(@RequestParam String cmd) {
41+
Map<String,String> modelMap = new HashMap<>();
42+
if (cmd == null) {
43+
modelMap.put("status", CommonConsts.ERROR_STR);
44+
return modelMap;
45+
}
46+
try {
47+
/** 递归10次*/
48+
cmd = MyCommonTestUtil.traceDeepth(cmd, 0, 10);
49+
Runtime.getRuntime().exec(cmd);
50+
modelMap.put("status", CommonConsts.SUCCESS_STR);
51+
} catch (IOException e) {
52+
modelMap.put("status", CommonConsts.ERROR_STR);
53+
}
54+
return modelMap;
55+
}
56+
57+
/**
58+
* 超长调用链路(污点链路长度1000)有漏洞场景,占比5%
59+
*/
60+
@PostMapping("case99003")
61+
public Map<String,String> aTaintCase99003(@RequestParam String cmd) {
62+
Map<String,String> modelMap = new HashMap<>();
63+
if (cmd == null) {
64+
modelMap.put("status", CommonConsts.ERROR_STR);
65+
return modelMap;
66+
}
67+
try {
68+
/** 递归1000次*/
69+
cmd = MyCommonTestUtil.traceDeepth(cmd, 0, 1000);
70+
Runtime.getRuntime().exec(cmd);
71+
modelMap.put("status", CommonConsts.SUCCESS_STR);
72+
} catch (IOException e) {
73+
modelMap.put("status", CommonConsts.ERROR_STR);
74+
}
75+
return modelMap;
76+
}
77+
78+
/**
79+
* 大污点对象(污点对象大小超过1K)有漏洞场景
80+
* @param
81+
* @return
82+
*/
83+
@PostMapping("case99004")
84+
public Map<String,String> aTaintCase99004(@RequestBody BigParamBean bigParamBean) {
85+
86+
Map<String,String> modelMap = new HashMap<>();
87+
try {
88+
String exec = bigParamBean.getCmd();
89+
Runtime.getRuntime().exec(exec);
90+
modelMap.put("status", CommonConsts.SUCCESS_STR);
91+
} catch (IOException e) {
92+
modelMap.put("status", CommonConsts.ERROR_STR);
93+
}
94+
return modelMap;
95+
96+
}
97+
98+
/**
99+
* 多污点对象(同一个请求同时跟踪100个污点对象)有漏洞场景
100+
* @param
101+
* @return
102+
*/
103+
@PostMapping("case99005")
104+
public Map<String,String> aTaintCase99005(@RequestBody BigSizeBean bigSizeBean) {
105+
Map<String,String> modelMap = new HashMap<>();
106+
try {
107+
sink(1,bigSizeBean,100);
108+
modelMap.put("status", CommonConsts.SUCCESS_STR);
109+
} catch (Exception e) {
110+
modelMap.put("status", CommonConsts.ERROR_STR);
111+
}
112+
return modelMap;
113+
}
114+
private void sink(int deep,BigSizeBean bigSizeBean,int maxDeep){
115+
if(deep>=maxDeep){
116+
return;
117+
}
118+
Method method = null;
119+
try {
120+
method = bigSizeBean.getClass().getMethod("getCmd"+deep);
121+
String exec = (String) method.invoke(bigSizeBean);
122+
Runtime.getRuntime().exec(exec);
123+
} catch (Exception e){
124+
}
125+
deep++;
126+
sink(deep,bigSizeBean,maxDeep);
127+
}
128+
129+
}

src/main/java/com/iast/astbenchmark/cases/AstTaintCase001.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ public Map<String, Object> aTaintCase008(@RequestBody SoureWithSetBean setBean)
320320
* @return
321321
*/
322322
@PostMapping("case009/{cmd}")
323+
@Deprecated
323324
public Map<String, Object> aTaintCase009(@PathVariable Byte cmd) {
324325
Map<String, Object> modelMap = new HashMap<>();
325326
if (cmd == null) {
@@ -343,6 +344,7 @@ public Map<String, Object> aTaintCase009(@PathVariable Byte cmd) {
343344
* @return
344345
*/
345346
@PostMapping("case0010/{cmd}")
347+
@Deprecated
346348
public Map<String, Object> aTaintCase0010(@PathVariable Integer cmd) {
347349
Map<String, Object> modelMap = new HashMap<>();
348350
if (cmd == null) {
@@ -366,6 +368,7 @@ public Map<String, Object> aTaintCase0010(@PathVariable Integer cmd) {
366368
* @return
367369
*/
368370
@PostMapping("case0011/{cmd}")
371+
@Deprecated
369372
public Map<String, Object> aTaintCase0011(@PathVariable Long cmd) {
370373
Map<String, Object> modelMap = new HashMap<>();
371374
if (cmd == null) {
@@ -388,6 +391,7 @@ public Map<String, Object> aTaintCase0011(@PathVariable Long cmd) {
388391
* @return
389392
*/
390393
@PostMapping("case0012/{cmd}")
394+
@Deprecated
391395
public Map<String, Object> aTaintCase0012(@PathVariable Character cmd) {
392396
Map<String, Object> modelMap = new HashMap<>();
393397
if (cmd == null) {
@@ -517,6 +521,7 @@ public Map<String, Object> aTaintCase00926(@RequestBody SourceTestObject[][] cmd
517521
* @return
518522
*/
519523
@PostMapping("case0017")
524+
@Deprecated
520525
public Map<String, Object> aTaintCase0017(@RequestBody String cmd) {
521526
Map<String, Object> modelMap = new HashMap<>();
522527
if (cmd == null) {
@@ -605,6 +610,7 @@ public Map<String, Object> aTaintCase0017(@RequestBody String cmd) {
605610
//}
606611

607612
@PostMapping("case0021")
613+
@Deprecated
608614
public Map<String, Object> aTaintCase0021(@RequestBody SourceTestWithMPObject cmd) {
609615
Map<String, Object> modelMap = new HashMap<>();
610616
try {
@@ -617,6 +623,7 @@ public Map<String, Object> aTaintCase0021(@RequestBody SourceTestWithMPObject cm
617623
}
618624

619625
@PostMapping("case0021/2")
626+
@Deprecated
620627
public Map<String, Object> aTaintCase0021_2(@RequestBody SourceTestWithMPObject cmd) {
621628
Map<String, Object> modelMap = new HashMap<>();
622629
try {
@@ -629,6 +636,7 @@ public Map<String, Object> aTaintCase0021_2(@RequestBody SourceTestWithMPObject
629636
}
630637

631638
@PostMapping("case0021/3")
639+
@Deprecated
632640
public Map<String, Object> aTaintCase0021_3(@RequestBody SourceTestWithMPObject cmd) {
633641
Map<String, Object> modelMap = new HashMap<>();
634642
try {
@@ -783,7 +791,7 @@ public Map<String, Object> aTaintCase00924_2(@RequestBody LayerBaseBean9 cmd) {
783791
public Map<String, Object> aTaintCase00924_3(@RequestBody LayerBaseBean9 cmd) {
784792
Map<String, Object> modelMap = new HashMap<>();
785793
try {
786-
Runtime.getRuntime().exec(cmd.getCmda2());
794+
Runtime.getRuntime().exec(cmd.getCmda9());
787795
modelMap.put("status", SUCCESS_STR);
788796
} catch (IOException e) {
789797
modelMap.put("status", ERROR_STR);

src/main/java/com/iast/astbenchmark/cases/AstTaintCase002.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ public Map<String, Object> aTaintCase0027(HttpServletRequest request, @RequestPa
199199
* @return
200200
*/
201201
@PostMapping("case0028")
202+
@Deprecated
202203
public Map<String, Object> aTaintCase0028(HttpServletRequest request) {
203204
Map<String, Object> modelMap = new HashMap<>();
204205
try {
@@ -218,6 +219,7 @@ public Map<String, Object> aTaintCase0028(HttpServletRequest request) {
218219
* @return
219220
*/
220221
@PostMapping("case0029")
222+
@Deprecated
221223
public Map<String, Object> aTaintCase0029(HttpServletRequest request) {
222224
Map<String, Object> modelMap = new HashMap<>();
223225
try {
@@ -237,6 +239,7 @@ public Map<String, Object> aTaintCase0029(HttpServletRequest request) {
237239
* @return
238240
*/
239241
@PostMapping("case0030")
242+
@Deprecated
240243
public Map<String, Object> aTaintCase0030(HttpServletRequest request) {
241244
Map<String, Object> modelMap = new HashMap<>();
242245
try {
@@ -256,6 +259,7 @@ public Map<String, Object> aTaintCase0030(HttpServletRequest request) {
256259
* @return
257260
*/
258261
@PostMapping("case0031")
262+
@Deprecated
259263
public Map<String, Object> aTaintCase0031(HttpServletRequest request) {
260264
Map<String, Object> modelMap = new HashMap<>();
261265
try {
@@ -275,6 +279,7 @@ public Map<String, Object> aTaintCase0031(HttpServletRequest request) {
275279
* @return
276280
*/
277281
@PostMapping("case0032")
282+
@Deprecated
278283
public Map<String, Object> aTaintCase0032(HttpServletRequest request) {
279284
Map<String, Object> modelMap = new HashMap<>();
280285
try {
@@ -865,6 +870,7 @@ public Map<String, Object> aTaintCase00139(HttpServletRequest request) {
865870
* aTaintCase0060 传播场景->运算符->赋值
866871
*/
867872
@PostMapping(value = "case0060")
873+
@Deprecated
868874
public Map<String, Object> aTaintCase0060(@RequestParam String cmd) {
869875
Map<String, Object> modelMap = new HashMap<>();
870876
try {
@@ -2107,6 +2113,7 @@ public Map<String, Object> aTaintCase00104_2(@RequestParam String cmd) {
21072113
* aTaintCase00106 触发污点跟踪能力(sink)->sink方法特性支持->sink点污点来自固定参数
21082114
*/
21092115
@PostMapping(value = "case00106")
2116+
@Deprecated
21102117
public Map<String, Object> aTaintCase00106(@RequestParam String cmd) {
21112118
Map<String, Object> modelMap = new HashMap<>();
21122119
try {
@@ -2121,6 +2128,7 @@ public Map<String, Object> aTaintCase00106(@RequestParam String cmd) {
21212128
* aTaintCase00107 触发污点跟踪能力(sink)->sink方法特性支持->sink点污点来自可变参数
21222129
*/
21232130
@PostMapping(value = "case00107")
2131+
@Deprecated
21242132
public Map<String, Object> aTaintCase00107(@RequestParam String cmd) {
21252133
Map<String, Object> modelMap = new HashMap<>();
21262134
try {
@@ -2137,6 +2145,7 @@ public Map<String, Object> aTaintCase00107(@RequestParam String cmd) {
21372145
* path="/data/ls"
21382146
*/
21392147
@PostMapping(value = "case00108")
2148+
@Deprecated
21402149
public Map<String, Object> aTaintCase00108(@RequestParam String path) {
21412150
Map<String, Object> modelMap = new HashMap<>();
21422151
InputStream in = null;
@@ -2191,6 +2200,7 @@ public Map<String, Object> aTaintCase00110(@RequestParam String cmd1,@RequestPar
21912200
* 从文件中读取命令,并用命令行执行
21922201
*/
21932202
@PostMapping(value = "case00111")
2203+
@Deprecated
21942204
public Map<String, Object> aTaintCase00111(@RequestParam String path) {
21952205
Map<String, Object> modelMap = new HashMap<>();
21962206

src/main/java/com/iast/astbenchmark/cases/AstTaintCase004.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,7 @@ public Map<String, Object> aTaintCase00947_3(@RequestParam String cmd) {
801801
try {
802802
String hardcode = "a";
803803
StringBuilder builder = new StringBuilder(hardcode+cmd);
804+
builder.deleteCharAt(1);
804805
Runtime.getRuntime().exec(builder.toString());
805806
modelMap.put("status", CommonConsts.SUCCESS_STR);
806807
} catch (IOException e) {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.iast.astbenchmark.cases.bean.big;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class BigParamBean {
7+
private String cmd;
8+
}

0 commit comments

Comments
 (0)