Skip to content

Commit 86bfe5e

Browse files
committed
Add hypersql sink
1 parent ccad8d9 commit 86bfe5e

3 files changed

Lines changed: 34 additions & 1 deletion

File tree

agent/src/main/java/dev/aikido/agent/Wrappers.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ private Wrappers() {}
4141
new JavalinWrapper(),
4242
new JavalinDataWrapper(),
4343
new JavalinContextClearWrapper(),
44-
new SQLiteWrapper()
44+
new SQLiteWrapper(),
45+
new HyperSQLWrapper()
4546
);
4647
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package dev.aikido.agent.wrappers.jdbc;
2+
3+
import dev.aikido.agent.wrappers.Wrapper;
4+
import net.bytebuddy.description.method.MethodDescription;
5+
import net.bytebuddy.description.type.TypeDescription;
6+
import net.bytebuddy.matcher.ElementMatcher;
7+
8+
import java.sql.Connection;
9+
import java.sql.Statement;
10+
11+
import static net.bytebuddy.matcher.ElementMatchers.isSubTypeOf;
12+
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
13+
14+
public class HyperSQLWrapper implements Wrapper {
15+
public String getName() {
16+
return JDBCConnectionAdvice.class.getName();
17+
}
18+
public ElementMatcher<? super MethodDescription> getMatcher() {
19+
return JDBCConnectionAdvice.getMatcher("org.hsqldb.jdbc");
20+
}
21+
22+
@Override
23+
public ElementMatcher<? super TypeDescription> getTypeMatcher() {
24+
return nameContains("org.hsqldb.jdbc")
25+
.and(isSubTypeOf(Connection.class).or(isSubTypeOf(Statement.class)));
26+
}
27+
}

agent_api/src/main/java/dev/aikido/agent_api/vulnerabilities/sql_injection/Dialect.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ public Dialect(String dialect) {
1818
} else if(Objects.equals(dialect, "sqlite")) {
1919
rustDialectInt = 12;
2020
humanName = "SQLite";
21+
} else if(Objects.equals(dialect, "hsql database engine")) {
22+
// HyperSQL dialect doesn't exist yet on our tokenizer, so we use generic dialect,
23+
// which is SQL:2016, HyperSQL is closest to this variant.
24+
rustDialectInt = 0;
25+
humanName = "HyperSQL";
2126
} else {
2227
rustDialectInt = 0; // Default option
2328
humanName = "Generic";

0 commit comments

Comments
 (0)