Skip to content

Commit 9a84abf

Browse files
committed
Generalize QueryInjectionSink
Extends from the more general DataFlow::Node instead of DataFlow::ExprNode
1 parent c01844a commit 9a84abf

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class UncontrolledStringBuilderSourceFlowConfig extends TaintTracking::Configura
4040
from QueryInjectionSink query, Expr uncontrolled
4141
where
4242
(
43-
builtFromUncontrolledConcat(query.getExpr(), uncontrolled)
43+
builtFromUncontrolledConcat(query.asExpr(), uncontrolled)
4444
or
4545
exists(StringBuilderVar sbv, UncontrolledStringBuilderSourceFlowConfig conf |
4646
uncontrolledStringBuilderQuery(sbv, uncontrolled) and

java/ql/src/semmle/code/java/security/QueryInjection.qll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ import semmle.code.java.frameworks.MyBatis
1010
import semmle.code.java.frameworks.Hibernate
1111

1212
/** A sink for database query language injection vulnerabilities. */
13-
abstract class QueryInjectionSink extends DataFlow::ExprNode { }
13+
abstract class QueryInjectionSink extends DataFlow::Node { }
1414

1515
/** A sink for SQL injection vulnerabilities. */
1616
private class SqlInjectionSink extends QueryInjectionSink {
1717
SqlInjectionSink() {
18-
this.getExpr() instanceof SqlExpr
18+
this.asExpr() instanceof SqlExpr
1919
or
2020
exists(MethodAccess ma, Method m, int index |
2121
ma.getMethod() = m and
22-
ma.getArgument(index) = this.getExpr()
22+
ma.getArgument(index) = this.asExpr()
2323
|
2424
index = m.(SQLiteRunner).sqlIndex()
2525
or
@@ -38,7 +38,7 @@ private class SqlInjectionSink extends QueryInjectionSink {
3838
private class PersistenceQueryInjectionSink extends QueryInjectionSink {
3939
PersistenceQueryInjectionSink() {
4040
// the query (first) argument to a `createQuery` or `createNativeQuery` method on `EntityManager`
41-
exists(MethodAccess call, TypeEntityManager em | call.getArgument(0) = this.getExpr() |
41+
exists(MethodAccess call, TypeEntityManager em | call.getArgument(0) = this.asExpr() |
4242
call.getMethod() = em.getACreateQueryMethod() or
4343
call.getMethod() = em.getACreateNativeQueryMethod()
4444
// note: `createNamedQuery` is safe, as it takes only the query name,

0 commit comments

Comments
 (0)