Skip to content

Commit ae57807

Browse files
committed
Refactor CWE-089 Sql queries
1 parent e6e974a commit ae57807

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

java/ql/src/Security/CWE/CWE-089/SqlConcatenated.ql

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,27 @@ class UncontrolledStringBuilderSource extends DataFlow::ExprNode {
2525
}
2626
}
2727

28-
class UncontrolledStringBuilderSourceFlowConfig extends TaintTracking::Configuration {
29-
UncontrolledStringBuilderSourceFlowConfig() {
30-
this = "SqlConcatenated::UncontrolledStringBuilderSourceFlowConfig"
31-
}
32-
33-
override predicate isSource(DataFlow::Node src) { src instanceof UncontrolledStringBuilderSource }
28+
private module UncontrolledStringBuilderSourceFlowConfig implements DataFlow::ConfigSig {
29+
predicate isSource(DataFlow::Node src) { src instanceof UncontrolledStringBuilderSource }
3430

35-
override predicate isSink(DataFlow::Node sink) { sink instanceof QueryInjectionSink }
31+
predicate isSink(DataFlow::Node sink) { sink instanceof QueryInjectionSink }
3632

37-
override predicate isSanitizer(DataFlow::Node node) {
33+
predicate isBarrier(DataFlow::Node node) {
3834
node.getType() instanceof PrimitiveType or node.getType() instanceof BoxedType
3935
}
4036
}
4137

38+
module UncontrolledStringBuilderSourceFlow =
39+
TaintTracking::Make<UncontrolledStringBuilderSourceFlowConfig>;
40+
4241
from QueryInjectionSink query, Expr uncontrolled
4342
where
4443
(
4544
builtFromUncontrolledConcat(query.asExpr(), uncontrolled)
4645
or
47-
exists(StringBuilderVar sbv, UncontrolledStringBuilderSourceFlowConfig conf |
46+
exists(StringBuilderVar sbv |
4847
uncontrolledStringBuilderQuery(sbv, uncontrolled) and
49-
conf.hasFlow(DataFlow::exprNode(sbv.getToStringCall()), query)
48+
UncontrolledStringBuilderSourceFlow::hasFlow(DataFlow::exprNode(sbv.getToStringCall()), query)
5049
)
5150
) and
5251
not queryTaintedBy(query, _, _)

java/ql/src/Security/CWE/CWE-089/SqlTaintedLocal.ql

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,29 @@
1515
import semmle.code.java.Expr
1616
import semmle.code.java.dataflow.FlowSources
1717
import semmle.code.java.security.SqlInjectionQuery
18-
import DataFlow::PathGraph
1918

20-
class LocalUserInputToQueryInjectionFlowConfig extends TaintTracking::Configuration {
21-
LocalUserInputToQueryInjectionFlowConfig() { this = "LocalUserInputToQueryInjectionFlowConfig" }
19+
private module LocalUserInputToQueryInjectionFlowConfig implements DataFlow::ConfigSig {
20+
predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput }
2221

23-
override predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput }
22+
predicate isSink(DataFlow::Node sink) { sink instanceof QueryInjectionSink }
2423

25-
override predicate isSink(DataFlow::Node sink) { sink instanceof QueryInjectionSink }
26-
27-
override predicate isSanitizer(DataFlow::Node node) {
24+
predicate isBarrier(DataFlow::Node node) {
2825
node.getType() instanceof PrimitiveType or node.getType() instanceof BoxedType
2926
}
3027

31-
override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
28+
predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) {
3229
any(AdditionalQueryInjectionTaintStep s).step(node1, node2)
3330
}
3431
}
3532

33+
module LocalUserInputToQueryInjectionFlow =
34+
TaintTracking::Make<LocalUserInputToQueryInjectionFlowConfig>;
35+
36+
import LocalUserInputToQueryInjectionFlow::PathGraph
37+
3638
from
37-
DataFlow::PathNode source, DataFlow::PathNode sink, LocalUserInputToQueryInjectionFlowConfig conf
38-
where conf.hasFlowPath(source, sink)
39+
LocalUserInputToQueryInjectionFlow::PathNode source,
40+
LocalUserInputToQueryInjectionFlow::PathNode sink
41+
where LocalUserInputToQueryInjectionFlow::hasFlowPath(source, sink)
3942
select sink.getNode(), source, sink, "This query depends on a $@.", source.getNode(),
4043
"user-provided value"

0 commit comments

Comments
 (0)