mirror of
https://github.com/github/codeql.git
synced 2025-12-22 11:46:32 +01:00
Java: Add some threat model dataflow tests.
This commit is contained in:
13
java/ql/test/library-tests/dataflow/threat-models/Test.qll
Normal file
13
java/ql/test/library-tests/dataflow/threat-models/Test.qll
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
private import java
|
||||||
|
private import semmle.code.java.dataflow.DataFlow
|
||||||
|
private import semmle.code.java.dataflow.ExternalFlow
|
||||||
|
private import semmle.code.java.dataflow.FlowSources
|
||||||
|
private import semmle.code.java.dataflow.TaintTracking
|
||||||
|
|
||||||
|
private module ThreatModelConfig implements DataFlow::ConfigSig {
|
||||||
|
predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource }
|
||||||
|
|
||||||
|
predicate isSink(DataFlow::Node sink) { sinkNode(sink, _) }
|
||||||
|
}
|
||||||
|
|
||||||
|
module ThreatModel = TaintTracking::Global<ThreatModelConfig>;
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
edges
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
nodes
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:22:36:22:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:25:26:25:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
subpaths
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
#select
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:25:26:25:80 | ... + ... |
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
extensions:
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: supportedThreatModels
|
||||||
|
data: []
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: sourceModel
|
||||||
|
data:
|
||||||
|
- ["testlib", "TestSources", False, "executeQuery", "(String)", "", "ReturnValue", "database", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "readEnv", "(String)", "", "ReturnValue", "environment", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "getCustom", "(String)", "", "ReturnValue", "custom", "manual"]
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* This is a dataflow test using the "default" threat model.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Test
|
||||||
|
import ThreatModel::PathGraph
|
||||||
|
|
||||||
|
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||||
|
where ThreatModel::flowPath(source, sink)
|
||||||
|
select source, sink
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
edges
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
|
||||||
|
nodes
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:22:36:22:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:25:26:25:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | semmle.label | executeQuery(...) : String |
|
||||||
|
| Test.java:33:26:33:68 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:36:36:36:41 | result | semmle.label | result |
|
||||||
|
subpaths
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
#select
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
extensions:
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: supportedThreatModels
|
||||||
|
data:
|
||||||
|
- ["database"]
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: sourceModel
|
||||||
|
data:
|
||||||
|
- ["testlib", "TestSources", False, "executeQuery", "(String)", "", "ReturnValue", "database", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "readEnv", "(String)", "", "ReturnValue", "environment", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "getCustom", "(String)", "", "ReturnValue", "custom", "manual"]
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* This is a dataflow test using the "default" threat model with the
|
||||||
|
* addition of "database".
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Test
|
||||||
|
import ThreatModel::PathGraph
|
||||||
|
|
||||||
|
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||||
|
where ThreatModel::flowPath(source, sink)
|
||||||
|
select source, sink
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
edges
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] |
|
||||||
|
| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
|
nodes
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:22:36:22:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:25:26:25:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | semmle.label | executeQuery(...) : String |
|
||||||
|
| Test.java:33:26:33:68 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:36:36:36:41 | result | semmle.label | result |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | semmle.label | readEnv(...) : String |
|
||||||
|
| Test.java:44:26:44:68 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:47:36:47:41 | result | semmle.label | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | semmle.label | System.in : InputStream |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:67:26:67:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:67:56:67:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:70:36:70:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
subpaths
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:67:56:67:73 | byteToString(...) : String |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
|
#select
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:67:26:67:80 | ... + ... |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
extensions:
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: supportedThreatModels
|
||||||
|
data:
|
||||||
|
- ["local"]
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: sourceModel
|
||||||
|
data:
|
||||||
|
- ["testlib", "TestSources", False, "executeQuery", "(String)", "", "ReturnValue", "database", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "readEnv", "(String)", "", "ReturnValue", "environment", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "getCustom", "(String)", "", "ReturnValue", "custom", "manual"]
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* This is a dataflow test using the "default" threat model with the
|
||||||
|
* addition of the threat model group "local".
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Test
|
||||||
|
import ThreatModel::PathGraph
|
||||||
|
|
||||||
|
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||||
|
where ThreatModel::flowPath(source, sink)
|
||||||
|
select source, sink
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
edges
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result |
|
||||||
|
| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:55:26:55:68 | ... + ... |
|
||||||
|
| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:58:36:58:41 | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] |
|
||||||
|
| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
|
nodes
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:22:36:22:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:25:26:25:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | semmle.label | executeQuery(...) : String |
|
||||||
|
| Test.java:33:26:33:68 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:36:36:36:41 | result | semmle.label | result |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | semmle.label | readEnv(...) : String |
|
||||||
|
| Test.java:44:26:44:68 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:47:36:47:41 | result | semmle.label | result |
|
||||||
|
| Test.java:52:21:52:47 | getCustom(...) : String | semmle.label | getCustom(...) : String |
|
||||||
|
| Test.java:55:26:55:68 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:58:36:58:41 | result | semmle.label | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | semmle.label | System.in : InputStream |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:67:26:67:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:67:56:67:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:70:36:70:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
subpaths
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:67:56:67:73 | byteToString(...) : String |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
|
#select
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
|
||||||
|
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result |
|
||||||
|
| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:55:26:55:68 | ... + ... |
|
||||||
|
| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:58:36:58:41 | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:67:26:67:80 | ... + ... |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
extensions:
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: supportedThreatModels
|
||||||
|
data:
|
||||||
|
- ["all"]
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: sourceModel
|
||||||
|
data:
|
||||||
|
- ["testlib", "TestSources", False, "executeQuery", "(String)", "", "ReturnValue", "database", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "readEnv", "(String)", "", "ReturnValue", "environment", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "getCustom", "(String)", "", "ReturnValue", "custom", "manual"]
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* This is a dataflow test using "all" threat models.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Test
|
||||||
|
import ThreatModel::PathGraph
|
||||||
|
|
||||||
|
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||||
|
where ThreatModel::flowPath(source, sink)
|
||||||
|
select source, sink
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
edges
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] |
|
||||||
|
| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
|
nodes
|
||||||
|
| Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String |
|
||||||
|
| Test.java:11:23:11:26 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
|
||||||
|
| Test.java:19:32:19:35 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:22:36:22:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:25:26:25:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:25:56:25:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | semmle.label | readEnv(...) : String |
|
||||||
|
| Test.java:44:26:44:68 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:47:36:47:41 | result | semmle.label | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | semmle.label | System.in : InputStream |
|
||||||
|
| Test.java:64:20:64:23 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
|
||||||
|
| Test.java:67:26:67:80 | ... + ... | semmle.label | ... + ... |
|
||||||
|
| Test.java:67:56:67:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
| Test.java:70:36:70:53 | byteToString(...) | semmle.label | byteToString(...) |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | semmle.label | data : byte[] |
|
||||||
|
subpaths
|
||||||
|
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:25:56:25:73 | byteToString(...) : String |
|
||||||
|
| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:67:56:67:73 | byteToString(...) : String |
|
||||||
|
| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
|
#select
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:22:36:22:53 | byteToString(...) |
|
||||||
|
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:25:26:25:80 | ... + ... |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... |
|
||||||
|
| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:67:26:67:80 | ... + ... |
|
||||||
|
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:70:36:70:53 | byteToString(...) |
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
extensions:
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: supportedThreatModels
|
||||||
|
data:
|
||||||
|
- ["environment"]
|
||||||
|
- ["cli"]
|
||||||
|
|
||||||
|
- addsTo:
|
||||||
|
pack: codeql/java-all
|
||||||
|
extensible: sourceModel
|
||||||
|
data:
|
||||||
|
- ["testlib", "TestSources", False, "executeQuery", "(String)", "", "ReturnValue", "database", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "readEnv", "(String)", "", "ReturnValue", "environment", "manual"]
|
||||||
|
- ["testlib", "TestSources", False, "getCustom", "(String)", "", "ReturnValue", "custom", "manual"]
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* This is a dataflow test using the "default" threat model with the
|
||||||
|
* addition of "environment" and "cli".
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Test
|
||||||
|
import ThreatModel::PathGraph
|
||||||
|
|
||||||
|
from ThreatModel::PathNode source, ThreatModel::PathNode sink
|
||||||
|
where ThreatModel::flowPath(source, sink)
|
||||||
|
select source, sink
|
||||||
Reference in New Issue
Block a user