File tree Expand file tree Collapse file tree 7 files changed +15
-31
lines changed
java/ql/src/experimental/Security/CWE Expand file tree Collapse file tree 7 files changed +15
-31
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ import java
1919import semmle.code.java.dataflow.TaintTracking
2020import semmle.code.java.dataflow.FlowSources
2121import semmle.code.java.dataflow.ExternalFlow
22+ private import semmle.code.java.security.dataflow.CommonSanitizers
2223import Log4jInjectionFlow:: PathGraph
2324
2425private class ActivateModels extends ActiveExperimentalModels {
@@ -33,11 +34,7 @@ class Log4jInjectionSink extends DataFlow::Node {
3334/**
3435 * A node that sanitizes a message before logging to avoid log injection.
3536 */
36- class Log4jInjectionSanitizer extends DataFlow:: Node {
37- Log4jInjectionSanitizer ( ) {
38- this .getType ( ) instanceof BoxedType or this .getType ( ) instanceof PrimitiveType
39- }
40- }
37+ class Log4jInjectionSanitizer extends DataFlow:: Node instanceof SimpleScalarSanitizer { }
4138
4239/**
4340 * A taint-tracking configuration for tracking untrusted user input used in log entries.
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ import semmle.code.java.dataflow.ExternalFlow
1818import semmle.code.java.dataflow.FlowSources
1919import JFinalController
2020import semmle.code.java.security.PathSanitizer
21+ private import semmle.code.java.security.dataflow.CommonSanitizers
2122import InjectFilePathFlow:: PathGraph
2223
2324private class ActivateModels extends ActiveExperimentalModels {
@@ -56,7 +57,7 @@ module InjectFilePathConfig implements DataFlow::ConfigSig {
5657 }
5758
5859 predicate isBarrier ( DataFlow:: Node node ) {
59- exists ( Type t | t = node . getType ( ) | t instanceof BoxedType or t instanceof PrimitiveType )
60+ node instanceof SimpleScalarSanitizer
6061 or
6162 node instanceof PathInjectionSanitizer
6263 }
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import java
22import semmle.code.java.frameworks.javaee.ejb.EJBRestrictions
33import semmle.code.java.dataflow.DataFlow
44import semmle.code.java.dataflow.FlowSources
5+ private import semmle.code.java.security.dataflow.CommonSanitizers
56
67module ExecCmdFlowConfig implements DataFlow:: ConfigSig {
78 predicate isSource ( DataFlow:: Node source ) {
@@ -20,8 +21,7 @@ module ExecCmdFlowConfig implements DataFlow::ConfigSig {
2021 node instanceof AssignToNonZeroIndex or
2122 node instanceof ArrayInitAtNonZeroIndex or
2223 node instanceof StreamConcatAtNonZeroIndex or
23- node .getType ( ) instanceof PrimitiveType or
24- node .getType ( ) instanceof BoxedType
24+ node instanceof SimpleScalarSanitizer
2525 }
2626}
2727
@@ -41,10 +41,7 @@ module ExecUserFlowConfig implements DataFlow::ConfigSig {
4141 )
4242 }
4343
44- predicate isBarrier ( DataFlow:: Node node ) {
45- node .getType ( ) instanceof PrimitiveType or
46- node .getType ( ) instanceof BoxedType
47- }
44+ predicate isBarrier ( DataFlow:: Node node ) { node instanceof SimpleScalarSanitizer }
4845}
4946
5047/** Tracks flow of unvalidated user input that is used in Runtime.Exec */
Original file line number Diff line number Diff line change @@ -17,18 +17,15 @@ import MyBatisCommonLib
1717import MyBatisAnnotationSqlInjectionLib
1818import semmle.code.java.dataflow.FlowSources
1919import semmle.code.java.dataflow.TaintTracking
20+ private import semmle.code.java.security.dataflow.CommonSanitizers
2021import MyBatisAnnotationSqlInjectionFlow:: PathGraph
2122
2223private module MyBatisAnnotationSqlInjectionConfig implements DataFlow:: ConfigSig {
2324 predicate isSource ( DataFlow:: Node source ) { source instanceof ThreatModelFlowSource }
2425
2526 predicate isSink ( DataFlow:: Node sink ) { sink instanceof MyBatisAnnotatedMethodCallArgument }
2627
27- predicate isBarrier ( DataFlow:: Node node ) {
28- node .getType ( ) instanceof PrimitiveType or
29- node .getType ( ) instanceof BoxedType or
30- node .getType ( ) instanceof NumberType
31- }
28+ predicate isBarrier ( DataFlow:: Node node ) { node instanceof SimpleScalarSanitizer }
3229
3330 predicate isAdditionalFlowStep ( DataFlow:: Node node1 , DataFlow:: Node node2 ) {
3431 exists ( MethodCall ma |
Original file line number Diff line number Diff line change @@ -17,18 +17,15 @@ import MyBatisCommonLib
1717import MyBatisMapperXmlSqlInjectionLib
1818import semmle.code.xml.MyBatisMapperXML
1919import semmle.code.java.dataflow.FlowSources
20+ private import semmle.code.java.security.dataflow.CommonSanitizers
2021import MyBatisMapperXmlSqlInjectionFlow:: PathGraph
2122
2223private module MyBatisMapperXmlSqlInjectionConfig implements DataFlow:: ConfigSig {
2324 predicate isSource ( DataFlow:: Node source ) { source instanceof ThreatModelFlowSource }
2425
2526 predicate isSink ( DataFlow:: Node sink ) { sink instanceof MyBatisMapperMethodCallAnArgument }
2627
27- predicate isBarrier ( DataFlow:: Node node ) {
28- node .getType ( ) instanceof PrimitiveType or
29- node .getType ( ) instanceof BoxedType or
30- node .getType ( ) instanceof NumberType
31- }
28+ predicate isBarrier ( DataFlow:: Node node ) { node instanceof SimpleScalarSanitizer }
3229
3330 predicate isAdditionalFlowStep ( DataFlow:: Node node1 , DataFlow:: Node node2 ) {
3431 exists ( MethodCall ma |
Original file line number Diff line number Diff line change 1414import java
1515import semmle.code.java.dataflow.TaintTracking
1616import semmle.code.java.dataflow.FlowSources
17+ import semmle.code.java.security.dataflow.CommonSanitizers
1718import ClientSuppliedIpUsedInSecurityCheckLib
1819import ClientSuppliedIpUsedInSecurityCheckFlow:: PathGraph
1920
@@ -38,9 +39,7 @@ module ClientSuppliedIpUsedInSecurityCheckConfig implements DataFlow::ConfigSig
3839 not aa .getIndexExpr ( ) .( CompileTimeConstantExpr ) .getIntValue ( ) = 0
3940 )
4041 or
41- node .getType ( ) instanceof PrimitiveType
42- or
43- node .getType ( ) instanceof BoxedType
42+ node instanceof SimpleScalarSanitizer
4443 }
4544}
4645
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ private import semmle.code.java.dataflow.FlowSources
55private import semmle.code.java.dataflow.StringPrefixes
66private import semmle.code.java.frameworks.javaee.ejb.EJBRestrictions
77private import experimental.semmle.code.java.frameworks.SpringResource
8+ private import semmle.code.java.security.dataflow.CommonSanitizers
89
910private class ActiveModels extends ActiveExperimentalModels {
1011 ActiveModels ( ) { this = "unsafe-url-forward" }
@@ -128,12 +129,7 @@ private class SpringModelAndViewSink extends UnsafeUrlForwardSink {
128129 }
129130}
130131
131- private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer {
132- PrimitiveSanitizer ( ) {
133- this .getType ( ) instanceof PrimitiveType or
134- this .getType ( ) instanceof BoxedType or
135- this .getType ( ) instanceof NumberType
136- }
132+ private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer instanceof SimpleScalarSanitizer {
137133}
138134
139135private class SanitizingPrefix extends InterestingPrefix {
You can’t perform that action at this time.
0 commit comments