Skip to content

Commit 9fbe447

Browse files
authored
Merge pull request #21749 from github/copilot/add-hibernate-sql-injection-tests
Add Hibernate SQL injection sink models and coverage
2 parents ae89b2e + 083909e commit 9fbe447

10 files changed

Lines changed: 84 additions & 1 deletion

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Added `sql-injection` sink models for the Hibernate `org.hibernate.query.QueryProducer` methods `createNativeMutationQuery`, `createMutationQuery`, and `createSelectionQuery`.

java/ql/lib/ext/org.hibernate.query.model.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@ extensions:
44
extensible: sinkModel
55
data:
66
- ["org.hibernate.query", "QueryProducer", True, "createNativeQuery", "", "", "Argument[0]", "sql-injection", "manual"]
7+
- ["org.hibernate.query", "QueryProducer", True, "createNativeMutationQuery", "", "", "Argument[0]", "sql-injection", "manual"]
78
- ["org.hibernate.query", "QueryProducer", True, "createQuery", "", "", "Argument[0]", "sql-injection", "manual"]
9+
- ["org.hibernate.query", "QueryProducer", True, "createMutationQuery", "", "", "Argument[0]", "sql-injection", "manual"]
10+
- ["org.hibernate.query", "QueryProducer", True, "createSelectionQuery", "", "", "Argument[0]", "sql-injection", "manual"]
811
- ["org.hibernate.query", "QueryProducer", True, "createSQLQuery", "", "", "Argument[0]", "sql-injection", "manual"]
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import org.hibernate.Session;
2+
import org.hibernate.SharedSessionContract;
3+
import org.hibernate.query.QueryProducer;
4+
5+
public class Hibernate {
6+
7+
public static String source() { return null; }
8+
9+
public static void test(
10+
Session session, SharedSessionContract sharedSessionContract, QueryProducer queryProducer) {
11+
session.createQuery(source()); // $ sqlInjection
12+
session.createSQLQuery(source()); // $ sqlInjection
13+
14+
sharedSessionContract.createQuery(source()); // $ sqlInjection
15+
sharedSessionContract.createSQLQuery(source()); // $ sqlInjection
16+
17+
queryProducer.createNativeQuery(source()); // $ sqlInjection
18+
queryProducer.createNativeMutationQuery(source()); // $ sqlInjection
19+
queryProducer.createQuery(source()); // $ sqlInjection
20+
queryProducer.createMutationQuery(source()); // $ sqlInjection
21+
queryProducer.createSelectionQuery(source()); // $ sqlInjection
22+
queryProducer.createSelectionQuery(source(), Object.class); // $ sqlInjection
23+
queryProducer.createSQLQuery(source()); // $ sqlInjection
24+
}
25+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/mongodbClient:${testdir}/../../../../../stubs/couchbaseClient:${testdir}/../../../../../stubs/springframework-5.8.x:${testdir}/../../../../../stubs/apache-hive:${testdir}/../../../../../stubs/jakarta-persistence-api-3.2.0 --release 21
1+
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/mongodbClient:${testdir}/../../../../../stubs/couchbaseClient:${testdir}/../../../../../stubs/springframework-5.8.x:${testdir}/../../../../../stubs/apache-hive:${testdir}/../../../../../stubs/jakarta-persistence-api-3.2.0:${testdir}/../../../../../stubs/hibernate-5.x --release 21

java/ql/test/stubs/hibernate-5.x/org/hibernate/Session.java

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java/ql/test/stubs/hibernate-5.x/org/hibernate/SharedSessionContract.java

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java/ql/test/stubs/hibernate-5.x/org/hibernate/query/MutationQuery.java

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java/ql/test/stubs/hibernate-5.x/org/hibernate/query/Query.java

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java/ql/test/stubs/hibernate-5.x/org/hibernate/query/QueryProducer.java

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java/ql/test/stubs/hibernate-5.x/org/hibernate/query/SelectionQuery.java

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)