Skip to content

Commit b6cf1cc

Browse files
Java: Make the equivalent changes to ExecTaintedLocal
1 parent 6bfc0af commit b6cf1cc

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

java/ql/src/Security/CWE/CWE-078/ExecTaintedLocal.ql

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import semmle.code.java.Expr
1515
import semmle.code.java.dataflow.FlowSources
1616
import semmle.code.java.security.ExternalProcess
17+
import semmle.code.java.security.CommandArguments
1718
import DataFlow::PathGraph
1819

1920
class LocalUserInputToArgumentToExecFlowConfig extends TaintTracking::Configuration {
@@ -24,12 +25,16 @@ class LocalUserInputToArgumentToExecFlowConfig extends TaintTracking::Configurat
2425
override predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof ArgumentToExec }
2526

2627
override predicate isSanitizer(DataFlow::Node node) {
27-
node.getType() instanceof PrimitiveType or node.getType() instanceof BoxedType
28+
node.getType() instanceof PrimitiveType
29+
or
30+
node.getType() instanceof BoxedType
31+
or
32+
isSafeCommandArgument(node.asExpr())
2833
}
2934
}
3035

3136
from
32-
DataFlow::PathNode source, DataFlow::PathNode sink, StringArgumentToExec execArg,
37+
DataFlow::PathNode source, DataFlow::PathNode sink, ArgumentToExec execArg,
3338
LocalUserInputToArgumentToExecFlowConfig conf
3439
where conf.hasFlowPath(source, sink) and sink.getNode().asExpr() = execArg
3540
select execArg, source, sink, "$@ flows to here and is used in a command.", source.getNode(),

0 commit comments

Comments
 (0)