Skip to content

Commit 90b78c9

Browse files
committed
Java: add R2DBC SPI SQL injection sinks
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: fb2a5047-e061-44ba-b6df-198390190733
1 parent e079fdf commit 90b78c9

4 files changed

Lines changed: 16 additions & 0 deletions

File tree

java/ql/lib/ext/io.r2dbc.spi.model.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@ extensions:
55
data:
66
- ["io.r2dbc.spi", "Connection", True, "createStatement", "(String)", "", "Argument[0]", "sql-injection", "manual"]
77
- ["io.r2dbc.spi", "Batch", True, "add", "(String)", "", "Argument[0]", "sql-injection", "manual"]
8+
- ["io.r2dbc.spi", "Connection", True, "createSavepoint", "(String)", "", "Argument[0]", "sql-injection", "manual"]
9+
- ["io.r2dbc.spi", "Connection", True, "releaseSavepoint", "(String)", "", "Argument[0]", "sql-injection", "manual"]
10+
- ["io.r2dbc.spi", "Connection", True, "rollbackTransactionToSavepoint", "(String)", "", "Argument[0]", "sql-injection", "manual"]
11+
- ["io.r2dbc.spi", "Statement", True, "returnGeneratedValues", "(String[])", "", "Argument[0]", "sql-injection", "manual"]

java/ql/test/query-tests/security/CWE-089/semmle/examples/SpringJdbc.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ public static void testR2dbc(DatabaseClient client, Connection connection, Batch
106106
.fetch();
107107
connection.createStatement(source()); // $ sqlInjection
108108
batch.add(source()); // $ sqlInjection
109+
connection.createSavepoint(source()); // $ sqlInjection
110+
connection.releaseSavepoint(source()); // $ sqlInjection
111+
connection.rollbackTransactionToSavepoint(source()); // $ sqlInjection
112+
connection.createStatement("INSERT INTO test VALUES (1)")
113+
.returnGeneratedValues(source()); // $ sqlInjection
109114
}
110115

111116
}

java/ql/test/query-tests/security/CWE-089/semmle/examples/io/r2dbc/spi/Connection.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,10 @@
22

33
public interface Connection {
44
Statement createStatement(String sql);
5+
6+
void createSavepoint(String name);
7+
8+
void releaseSavepoint(String name);
9+
10+
void rollbackTransactionToSavepoint(String name);
511
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
package io.r2dbc.spi;
22

33
public interface Statement {
4+
Statement returnGeneratedValues(String... columns);
45
}

0 commit comments

Comments
 (0)