Skip to content

Commit d335f03

Browse files
committed
Improve model for CWE-089
1 parent 89f0e79 commit d335f03

File tree

15 files changed

+137
-223
lines changed

15 files changed

+137
-223
lines changed

java/ql/lib/ext/com.couchbase.client.java.model.yml

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,9 @@ extensions:
1010
- ["com.couchbase.client.java", "Cluster", true, "connect", "(String,String,String)", "", "Argument[2]", "credentials-password", "manual"]
1111
- ["com.couchbase.client.java", "ClusterOptions", true, "clusterOptions", "(String,String)", "", "Argument[1]", "credentials-password", "manual"]
1212
# 'sql-injection' sinks
13-
- ["com.couchbase.client.java", "Cluster", true, "analysticsQuery", "(String)", "", "Argument[0]", "sql-injection", "manual"]
14-
- ["com.couchbase.client.java", "Cluster", true, "analysticsQuery", "(String,AnalyticsOptions)", "", "Argument[0]", "sql-injection", "manual"]
13+
- ["com.couchbase.client.java", "Cluster", true, "analyticsQuery", "(String)", "", "Argument[0]", "sql-injection", "manual"]
14+
- ["com.couchbase.client.java", "Cluster", true, "analyticsQuery", "(String,AnalyticsOptions)", "", "Argument[0]", "sql-injection", "manual"]
1515
- ["com.couchbase.client.java", "Cluster", true, "query", "(String)", "", "Argument[0]", "sql-injection", "manual"]
1616
- ["com.couchbase.client.java", "Cluster", true, "query", "(String,QueryOptions)", "", "Argument[0]", "sql-injection", "manual"]
1717
- ["com.couchbase.client.java", "Cluster", true, "queryStreaming", "(String,Consumer)", "", "Argument[0]", "sql-injection", "manual"]
1818
- ["com.couchbase.client.java", "Cluster", true, "queryStreaming", "(String,QueryOptions,Consumer)", "", "Argument[0]", "sql-injection", "manual"]
19-
- ["com.couchbase.client.java", "Cluster", true, "searchQuery", "(String,SearchQuery)", "", "Argument[1]", "sql-injection", "manual"]
20-
- ["com.couchbase.client.java", "Cluster", true, "searchQuery", "(String,SearchQuery,SearchOptions)", "", "Argument[1]", "sql-injection", "manual"]
21-
22-
- addsTo:
23-
pack: codeql/java-all
24-
extensible: summaryModel
25-
data:
26-
- ["com.couchbase.client.java.json", "JsonObject", true, "put", "", "", "Argument[0]", "ReturnValue.MapKey", "taint", "manual"]
27-
- ["com.couchbase.client.java.json", "JsonObject", true, "put", "", "", "Argument[1]", "ReturnValue.MapValue", "taint", "manual"]
28-
- ["com.couchbase.client.java.json", "JsonObject", true, "putNull", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"]

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
import com.couchbase.client.java.Bucket;
44
import com.couchbase.client.java.Cluster;
5-
import com.couchbase.client.java.Collection;
6-
import com.couchbase.client.java.json.JsonObject;
75

86
public class CouchBase {
97
public static void main(String[] args) {
108
Cluster cluster = Cluster.connect("192.168.0.158", "Administrator", "Administrator");
119
Bucket bucket = cluster.bucket("travel-sample");
10+
cluster.analyticsQuery(args[1]);
11+
cluster.analyticsQuery(args[1], null);
1212
cluster.query(args[1]);
13-
14-
Collection collection = bucket.defaultCollection();
15-
collection.replace("airbnb_1", JsonObject.create().putNull(System.getenv("ITEM_CATEGORY")));
16-
collection.upsert("airbnb_1", JsonObject.create().put("country", args[1]));
13+
cluster.query(args[1], null);
14+
cluster.queryStreaming(args[1], null);
15+
cluster.queryStreaming(args[1], null, null);
1716
}
1817
}

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

Lines changed: 71 additions & 51 deletions
Large diffs are not rendered by default.

java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCouchBaseCredentials.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,22 @@ public static void test() {
3030
PasswordAuthenticator.builder()
3131
.username("Administrator") // $ HardcodedCredentialsSourceCall $ HardcodedCredentialsApiCall
3232
.password("password"); // $ HardcodedCredentialsSourceCall $ HardcodedCredentialsApiCall
33-
PasswordAuthenticator.builder((Supplier<UsernameAndPassword>) new UsernameAndPassword(
34-
"Administrator", // $ HardcodedCredentialsSourceCall$ MISSING: HardcodedCredentialsApiCall
35-
"password")); // $ HardcodedCredentialsSourceCall$ MISSING: HardcodedCredentialsApiCall
33+
PasswordAuthenticator.builder(
34+
(Supplier<UsernameAndPassword>)
35+
new UsernameAndPassword(
36+
"Administrator", // $ HardcodedCredentialsSourceCall $ MISSING: HardcodedCredentialsApiCall
37+
"password")); // $ HardcodedCredentialsSourceCall $ MISSING: HardcodedCredentialsApiCall
3638
PasswordAuthenticator.builder()
37-
.username((Supplier<String>) () -> {return "Administrator";}) // $ MISSING: HardcodedCredentialsApiCall
38-
.password((Supplier<String>) () -> {return "password";}); // $ MISSING: HardcodedCredentialsApiCall
39+
.username(
40+
(Supplier<String>)
41+
() -> {
42+
return "Administrator"; // $ MISSING: HardcodedCredentialsApiCall
43+
})
44+
.password(
45+
(Supplier<String>)
46+
() -> {
47+
return "password"; // $ MISSING: HardcodedCredentialsApiCall
48+
});
3949

4050
// com.couchbase.client.java.Cluster sinks
4151
Cluster.connect(

java/ql/test/stubs/couchbaseClient/com/couchbase/client/java/Bucket.java

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

java/ql/test/stubs/couchbaseClient/com/couchbase/client/java/Cluster.java

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

java/ql/test/stubs/couchbaseClient/com/couchbase/client/java/Collection.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

java/ql/test/stubs/couchbaseClient/com/couchbase/client/java/analytics/AnalyticsOptions.java

Lines changed: 3 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/couchbaseClient/com/couchbase/client/java/analytics/AnalyticsResult.java

Lines changed: 3 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/couchbaseClient/com/couchbase/client/java/json/JsonObject.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)