mirror of
https://github.com/github/codeql.git
synced 2026-05-21 06:37:10 +02:00
Java: Update existing tests and add a couple of extra configuration tests.
This commit is contained in:
@@ -27,8 +27,8 @@ extensions:
|
||||
- ["", "SinkClass", True, "memberSink", "(int,int)", "", "Argument[0]", "kotlinMadFlowTest", "manual"]
|
||||
- ["", "SinkClass", True, "extensionMemberSink", "(String,int,int)", "", "Argument[1]", "kotlinMadFlowTest", "manual"]
|
||||
|
||||
- addsTo:
|
||||
pack: codeql/java-all
|
||||
extensible: supportedThreatModel
|
||||
data:
|
||||
- ["kotlinMadFlowTest"]
|
||||
# - addsTo:
|
||||
# pack: codeql/java-all
|
||||
# extensible: supportedThreatModel
|
||||
# data:
|
||||
# - ["kotlinMadFlowTest"]
|
||||
|
||||
12
java/ql/test/experimental/configured-flow/Test.qll
Normal file
12
java/ql/test/experimental/configured-flow/Test.qll
Normal file
@@ -0,0 +1,12 @@
|
||||
private import java
|
||||
private import semmle.code.java.dataflow.DataFlow
|
||||
private import semmle.code.java.dataflow.ExternalFlow
|
||||
private import semmle.code.java.dataflow.TaintTracking
|
||||
|
||||
private module ThreatModelConfig implements DataFlow::ConfigSig {
|
||||
predicate isSource(DataFlow::Node source) { sourceNode(source, _) }
|
||||
|
||||
predicate isSink(DataFlow::Node sink) { sinkNode(sink, _) }
|
||||
}
|
||||
|
||||
module ThreatModel = TaintTracking::Global<ThreatModelConfig>;
|
||||
@@ -1,9 +0,0 @@
|
||||
name: test/configured-threat-models
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
codeql/java-all: "*"
|
||||
|
||||
dataExtensions:
|
||||
- ext/*.yml
|
||||
|
||||
extractor: java
|
||||
16
java/ql/test/experimental/configured-flow/test-all.ql
Normal file
16
java/ql/test/experimental/configured-flow/test-all.ql
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* @name Testing the threat model
|
||||
* @kind path-problem
|
||||
* @problem.severity warning
|
||||
* @precision low
|
||||
* @id java/threat-model-all
|
||||
* @tags security
|
||||
*/
|
||||
|
||||
import Test
|
||||
import ThreatModel::PathGraph
|
||||
|
||||
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||
where ThreatModel::flowPath(source, sink)
|
||||
select sink.getNode(), source, sink, "This is some kind of threat model thingy $@.",
|
||||
source.getNode(), "Source of that thingy"
|
||||
@@ -0,0 +1,11 @@
|
||||
edges
|
||||
| Test.java:15:15:15:42 | read(...) : Number | Test.java:18:34:18:36 | val |
|
||||
| Test.java:15:15:15:42 | read(...) : Number | Test.java:21:29:21:68 | ... + ... |
|
||||
nodes
|
||||
| Test.java:15:15:15:42 | read(...) : Number | semmle.label | read(...) : Number |
|
||||
| Test.java:18:34:18:36 | val | semmle.label | val |
|
||||
| Test.java:21:29:21:68 | ... + ... | semmle.label | ... + ... |
|
||||
subpaths
|
||||
#select
|
||||
| Test.java:18:34:18:36 | val | Test.java:15:15:15:42 | read(...) : Number | Test.java:18:34:18:36 | val | This is some kind of threat model thingy $@. | Test.java:15:15:15:42 | read(...) | Source of that thingy |
|
||||
| Test.java:21:29:21:68 | ... + ... | Test.java:15:15:15:42 | read(...) : Number | Test.java:21:29:21:68 | ... + ... | This is some kind of threat model thingy $@. | Test.java:15:15:15:42 | read(...) | Source of that thingy |
|
||||
@@ -0,0 +1,7 @@
|
||||
extensions:
|
||||
|
||||
- addsTo:
|
||||
pack: codeql/java-all
|
||||
extensible: supportedThreatModel
|
||||
data:
|
||||
- ["remote"]
|
||||
16
java/ql/test/experimental/configured-flow/test-remote.ql
Normal file
16
java/ql/test/experimental/configured-flow/test-remote.ql
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* @name Testing the threat model
|
||||
* @kind path-problem
|
||||
* @problem.severity warning
|
||||
* @precision low
|
||||
* @id java/threat-model-remote
|
||||
* @tags security
|
||||
*/
|
||||
|
||||
import Test
|
||||
import ThreatModel::PathGraph
|
||||
|
||||
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||
where ThreatModel::flowPath(source, sink)
|
||||
select sink.getNode(), source, sink, "This is some kind of threat model thingy $@.",
|
||||
source.getNode(), "Source of that thingy"
|
||||
19
java/ql/test/experimental/configured-flow/test-sql.expected
Normal file
19
java/ql/test/experimental/configured-flow/test-sql.expected
Normal file
@@ -0,0 +1,19 @@
|
||||
edges
|
||||
| Test.java:12:20:12:61 | executeQuery(...) : ResultSet | Test.java:24:59:24:60 | rs : ResultSet |
|
||||
| Test.java:12:20:12:61 | executeQuery(...) : ResultSet | Test.java:26:34:26:35 | rs : ResultSet |
|
||||
| Test.java:24:59:24:60 | rs : ResultSet | Test.java:24:59:24:78 | getString(...) : String |
|
||||
| Test.java:24:59:24:78 | getString(...) : String | Test.java:24:29:24:85 | ... + ... |
|
||||
| Test.java:26:34:26:35 | rs : ResultSet | Test.java:26:34:26:53 | getString(...) : String |
|
||||
| Test.java:26:34:26:53 | getString(...) : String | Test.java:26:34:26:64 | getBytes(...) |
|
||||
nodes
|
||||
| Test.java:12:20:12:61 | executeQuery(...) : ResultSet | semmle.label | executeQuery(...) : ResultSet |
|
||||
| Test.java:24:29:24:85 | ... + ... | semmle.label | ... + ... |
|
||||
| Test.java:24:59:24:60 | rs : ResultSet | semmle.label | rs : ResultSet |
|
||||
| Test.java:24:59:24:78 | getString(...) : String | semmle.label | getString(...) : String |
|
||||
| Test.java:26:34:26:35 | rs : ResultSet | semmle.label | rs : ResultSet |
|
||||
| Test.java:26:34:26:53 | getString(...) : String | semmle.label | getString(...) : String |
|
||||
| Test.java:26:34:26:64 | getBytes(...) | semmle.label | getBytes(...) |
|
||||
subpaths
|
||||
#select
|
||||
| Test.java:24:29:24:85 | ... + ... | Test.java:12:20:12:61 | executeQuery(...) : ResultSet | Test.java:24:29:24:85 | ... + ... | This is some kind of threat model thingy $@. | Test.java:12:20:12:61 | executeQuery(...) | Source of that thingy |
|
||||
| Test.java:26:34:26:64 | getBytes(...) | Test.java:12:20:12:61 | executeQuery(...) : ResultSet | Test.java:26:34:26:64 | getBytes(...) | This is some kind of threat model thingy $@. | Test.java:12:20:12:61 | executeQuery(...) | Source of that thingy |
|
||||
@@ -0,0 +1,7 @@
|
||||
extensions:
|
||||
|
||||
- addsTo:
|
||||
pack: codeql/java-all
|
||||
extensible: supportedThreatModel
|
||||
data:
|
||||
- ["sql"]
|
||||
16
java/ql/test/experimental/configured-flow/test-sql.ql
Normal file
16
java/ql/test/experimental/configured-flow/test-sql.ql
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* @name Testing the threat model
|
||||
* @kind path-problem
|
||||
* @problem.severity warning
|
||||
* @precision low
|
||||
* @id java/threat-model-sql
|
||||
* @tags security
|
||||
*/
|
||||
|
||||
import Test
|
||||
import ThreatModel::PathGraph
|
||||
|
||||
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||
where ThreatModel::flowPath(source, sink)
|
||||
select sink.getNode(), source, sink, "This is some kind of threat model thingy $@.",
|
||||
source.getNode(), "Source of that thingy"
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* @name Testing the threat model
|
||||
* @kind path-problem
|
||||
* @problem.severity warning
|
||||
* @precision low
|
||||
* @id java/threat-model
|
||||
* @tags security
|
||||
*/
|
||||
|
||||
import java
|
||||
import semmle.code.java.dataflow.DataFlow
|
||||
import semmle.code.java.dataflow.ExternalFlow
|
||||
import ThreatModel::PathGraph
|
||||
import semmle.code.java.dataflow.TaintTracking
|
||||
|
||||
private module ThreatModelConfig implements DataFlow::ConfigSig {
|
||||
predicate isSource(DataFlow::Node source) {
|
||||
sourceNode(source, _)
|
||||
}
|
||||
|
||||
predicate isSink(DataFlow::Node sink) {
|
||||
sinkNode(sink, _)
|
||||
}
|
||||
}
|
||||
|
||||
module ThreatModel = TaintTracking::Global<ThreatModelConfig>;
|
||||
|
||||
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||
where ThreatModel::flowPath(source, sink)
|
||||
select sink.getNode(), source, sink, "This is some kind of threat model thingy $@.", source.getNode(),
|
||||
"Source of that thingy"
|
||||
|
||||
// from DataFlow::Node source, DataFlow::Node sink
|
||||
// where ThreatModel::flow(source, sink)
|
||||
// select source, sink
|
||||
|
||||
|
||||
// from DataFlow::Node node, string kind
|
||||
// where sourceNode(node, kind)
|
||||
// select node, kind
|
||||
@@ -20,20 +20,20 @@ extensions:
|
||||
- ["my.qltest", "A", False, "srcTwoArg", "(String,String)", "", "ReturnValue", "qltest-shortsig", "manual"]
|
||||
- ["my.qltest", "A", False, "srcTwoArg", "(java.lang.String,java.lang.String)", "", "ReturnValue", "qltest-longsig", "manual"]
|
||||
|
||||
- addsTo:
|
||||
pack: codeql/java-all
|
||||
extensible: supportedThreatModel
|
||||
data:
|
||||
- ["standard"]
|
||||
- ["qltest"]
|
||||
- ["qltest-alt"]
|
||||
- ["qltest-w-subtypes"]
|
||||
- ["qltest-argany"]
|
||||
- ["qltest-all-overloads"]
|
||||
- ["qltest-argnum"]
|
||||
- ["qltest-retval"]
|
||||
- ["qltest-param"]
|
||||
- ["qltest-nospec"]
|
||||
- ["qltest-shortsig"]
|
||||
- ["qltest-longsig"]
|
||||
- ["qltest-param-override"]
|
||||
# - addsTo:
|
||||
# pack: codeql/java-all
|
||||
# extensible: supportedThreatModel
|
||||
# data:
|
||||
# - ["standard"]
|
||||
# - ["qltest"]
|
||||
# - ["qltest-alt"]
|
||||
# - ["qltest-w-subtypes"]
|
||||
# - ["qltest-argany"]
|
||||
# - ["qltest-all-overloads"]
|
||||
# - ["qltest-argnum"]
|
||||
# - ["qltest-retval"]
|
||||
# - ["qltest-param"]
|
||||
# - ["qltest-nospec"]
|
||||
# - ["qltest-shortsig"]
|
||||
# - ["qltest-longsig"]
|
||||
# - ["qltest-param-override"]
|
||||
|
||||
Reference in New Issue
Block a user