23
23
* @author dongzhiyong@huoxian.cn
24
24
*/
25
25
public class DynamicPropagatorScanner implements IVulScan {
26
- private final static Set <SinkSafeChecker > SAFE_CHECKERS = new HashSet <SinkSafeChecker >(Arrays .asList (
26
+ private final static Set <SinkSafeChecker > SAFE_CHECKERS = new HashSet <>(Arrays .asList (
27
27
new FastjsonCheck (),
28
28
new XXECheck ()
29
29
));
30
30
31
- private final static Set <SinkSourceChecker > SOURCE_CHECKERS = new HashSet <SinkSourceChecker >(Arrays .asList (
31
+ private final static Set <SinkSourceChecker > SOURCE_CHECKERS = new HashSet <>(Arrays .asList (
32
32
new PathTraversalCheck (),
33
33
new SSRFSourceCheck (),
34
34
new UnvalidatedRedirectCheck ()
35
35
));
36
36
37
- private static final Set <ServiceTrace > SERVICE_TRACES = new HashSet <ServiceTrace >(Collections .singletonList (
37
+ private static final Set <ServiceTrace > SERVICE_TRACES = new HashSet <>(Collections .singletonList (
38
38
new HttpService ()
39
39
));
40
40
@@ -52,7 +52,8 @@ public class DynamicPropagatorScanner implements IVulScan {
52
52
));
53
53
put (VulnType .HQL_INJECTION .getName (), Arrays .asList (
54
54
new TaintTag []{TaintTag .UNTRUSTED },
55
- new TaintTag []{TaintTag .SQL_ENCODED , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
55
+ new TaintTag []{TaintTag .SQL_ENCODED , TaintTag .CUSTOM_ENCODED_HQL_INJECTION ,
56
+ TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
56
57
));
57
58
put (VulnType .LDAP_INJECTION .getName (), Arrays .asList (
58
59
new TaintTag []{TaintTag .UNTRUSTED },
@@ -68,7 +69,7 @@ public class DynamicPropagatorScanner implements IVulScan {
68
69
new TaintTag []{TaintTag .UNTRUSTED },
69
70
new TaintTag []{TaintTag .BASE64_ENCODED , TaintTag .HTML_ENCODED , TaintTag .LDAP_ENCODED ,
70
71
TaintTag .SQL_ENCODED , TaintTag .URL_ENCODED , TaintTag .XML_ENCODED , TaintTag .XPATH_ENCODED ,
71
- TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
72
+ TaintTag .CUSTOM_ENCODED_CMD_INJECTION , TaintTag . HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
72
73
));
73
74
put (VulnType .PATH_TRAVERSAL .getName (), Arrays .asList (
74
75
new TaintTag []{TaintTag .UNTRUSTED },
@@ -80,6 +81,42 @@ public class DynamicPropagatorScanner implements IVulScan {
80
81
new TaintTag []{TaintTag .UNTRUSTED },
81
82
new TaintTag []{TaintTag .URL_ENCODED , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
82
83
));
84
+ put (VulnType .XXE .getName (),Arrays .asList (
85
+ new TaintTag []{TaintTag .UNTRUSTED },
86
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_XXE , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
87
+ ));
88
+ put (VulnType .JNDI_INJECTION .getName (),Arrays .asList (
89
+ new TaintTag []{TaintTag .UNTRUSTED },
90
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_JNDI_INJECTION , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
91
+ ));
92
+ put (VulnType .NOSQL_INJECTION .getName (),Arrays .asList (
93
+ new TaintTag []{TaintTag .UNTRUSTED },
94
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_NOSQL_INJECTION , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
95
+ ));
96
+ put (VulnType .SMTP_INJECTION .getName (),Arrays .asList (
97
+ new TaintTag []{TaintTag .UNTRUSTED },
98
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_SMTP_INJECTION , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
99
+ ));
100
+ put (VulnType .EL_INJECTION .getName (),Arrays .asList (
101
+ new TaintTag []{TaintTag .UNTRUSTED },
102
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_EL_INJECTION , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
103
+ ));
104
+ put (VulnType .REFLECTION_INJECTION .getName (),Arrays .asList (
105
+ new TaintTag []{TaintTag .UNTRUSTED },
106
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_REFLECTION_INJECTION , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
107
+ ));
108
+ put (VulnType .SSRF .getName (),Arrays .asList (
109
+ new TaintTag []{TaintTag .UNTRUSTED },
110
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_XXE , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
111
+ ));
112
+ put (VulnType .FILE_WRITE .getName (),Arrays .asList (
113
+ new TaintTag []{TaintTag .UNTRUSTED },
114
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_FILE_WRITE , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
115
+ ));
116
+ put (VulnType .REDOS .getName (),Arrays .asList (
117
+ new TaintTag []{TaintTag .UNTRUSTED },
118
+ new TaintTag []{TaintTag .CUSTOM_ENCODED_REDOS , TaintTag .HTTP_TOKEN_LIMITED_CHARS , TaintTag .NUMERIC_LIMITED_CHARS }
119
+ ));
83
120
}};
84
121
85
122
@ Override
@@ -133,7 +170,7 @@ private boolean sinkSourceHitTaintPool(MethodEvent event, SinkNode sinkNode) {
133
170
}
134
171
}
135
172
136
- List <Object > sourceInstances = new ArrayList <Object >();
173
+ List <Object > sourceInstances = new ArrayList <>();
137
174
boolean hasTaint = false ;
138
175
boolean objHasTaint = false ;
139
176
Set <TaintPosition > sources = sinkNode .getSources ();
0 commit comments