Skip to content

Commit 9afa051

Browse files
committed
Move ExternallyControlledFormatStringFlow to Query.qll
1 parent 7d9fad5 commit 9afa051

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/** Provides a taint-tracking configuration to reason about externally controlled format string vulnerabilities. */
2+
3+
import java
4+
import semmle.code.java.dataflow.FlowSources
5+
import semmle.code.java.StringFormat
6+
7+
/**
8+
* A taint-tracking configuration for externally controlled format string vulnerabilities.
9+
*/
10+
module ExternallyControlledFormatStringConfig implements DataFlow::ConfigSig {
11+
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
12+
13+
predicate isSink(DataFlow::Node sink) {
14+
sink.asExpr() = any(StringFormat formatCall).getFormatArgument()
15+
}
16+
17+
predicate isBarrier(DataFlow::Node node) {
18+
node.getType() instanceof NumericType or node.getType() instanceof BooleanType
19+
}
20+
}
21+
22+
/**
23+
* Taint-tracking flow for externally controlled format string vulnerabilities.
24+
*/
25+
module ExternallyControlledFormatStringFlow =
26+
TaintTracking::Global<ExternallyControlledFormatStringConfig>;

java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,7 @@
1111
*/
1212

1313
import java
14-
import semmle.code.java.dataflow.FlowSources
15-
import semmle.code.java.StringFormat
16-
17-
module ExternallyControlledFormatStringConfig implements DataFlow::ConfigSig {
18-
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
19-
20-
predicate isSink(DataFlow::Node sink) {
21-
sink.asExpr() = any(StringFormat formatCall).getFormatArgument()
22-
}
23-
24-
predicate isBarrier(DataFlow::Node node) {
25-
node.getType() instanceof NumericType or node.getType() instanceof BooleanType
26-
}
27-
}
28-
29-
module ExternallyControlledFormatStringFlow =
30-
TaintTracking::Global<ExternallyControlledFormatStringConfig>;
31-
14+
import semmle.code.java.security.ExternallyControlledFormatStringQuery
3215
import ExternallyControlledFormatStringFlow::PathGraph
3316

3417
from

0 commit comments

Comments
 (0)