Skip to content

Commit b18a6d5

Browse files
author
Dave Bartolomeo
authored
Merge pull request github#14582 from github/dbartol/threat-models-2
Java: Threat model implementation with priorities.
2 parents 4aed638 + e4276f7 commit b18a6d5

21 files changed

+189
-89
lines changed

codeql-workspace.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ provide:
66
- "*/ql/consistency-queries/qlpack.yml"
77
- "*/ql/automodel/src/qlpack.yml"
88
- "*/ql/automodel/test/qlpack.yml"
9-
- "shared/*/qlpack.yml"
9+
- "shared/**/qlpack.yml"
1010
- "cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/qlpack.yml"
1111
- "go/ql/config/legacy-support/qlpack.yml"
1212
- "go/build/codeql-extractor-go/codeql-extractor.yml"

java/ql/lib/ext/threatmodels/supported-threat-models.model.yml

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

java/ql/lib/qlpack.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ dependencies:
1010
codeql/mad: ${workspace}
1111
codeql/rangeanalysis: ${workspace}
1212
codeql/regex: ${workspace}
13+
codeql/threat-models: ${workspace}
1314
codeql/tutorial: ${workspace}
1415
codeql/typetracking: ${workspace}
1516
codeql/util: ${workspace}
1617
dataExtensions:
1718
- ext/*.model.yml
1819
- ext/generated/*.model.yml
1920
- ext/experimental/*.model.yml
20-
- ext/threatmodels/*.model.yml
2121
warnOnImplicitThis: true

java/ql/lib/semmle/code/java/dataflow/ExternalFlowConfiguration.qll

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

java/ql/lib/semmle/code/java/dataflow/FlowSources.qll

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import semmle.code.java.frameworks.struts.StrutsActions
2929
import semmle.code.java.frameworks.Thrift
3030
import semmle.code.java.frameworks.javaee.jsf.JSFRenderer
3131
private import semmle.code.java.dataflow.ExternalFlow
32-
private import semmle.code.java.dataflow.ExternalFlowConfiguration
32+
private import codeql.threatmodels.ThreatModels
3333

3434
/**
3535
* A data flow source.
@@ -47,10 +47,6 @@ abstract class SourceNode extends DataFlow::Node {
4747
*/
4848
class ThreatModelFlowSource extends DataFlow::Node {
4949
ThreatModelFlowSource() {
50-
// Expansive threat model.
51-
currentThreatModel("all") and
52-
(this instanceof SourceNode or sourceNode(this, _))
53-
or
5450
exists(string kind |
5551
// Specific threat model.
5652
currentThreatModel(kind) and

java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.ext.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
extensions:
22

33
- addsTo:
4-
pack: codeql/java-all
5-
extensible: supportedThreatModels
4+
pack: codeql/threat-models
5+
extensible: threatModelConfiguration
66
data:
7-
- ["database"]
7+
- ["database", true, 0]
88

99
- addsTo:
1010
pack: codeql/java-all

java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.ext.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
extensions:
22

33
- addsTo:
4-
pack: codeql/java-all
5-
extensible: supportedThreatModels
4+
pack: codeql/threat-models
5+
extensible: threatModelConfiguration
66
data:
7-
- ["local"]
7+
- ["local", true, 0]
88

99
- addsTo:
1010
pack: codeql/java-all

java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.ext.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
extensions:
22

33
- addsTo:
4-
pack: codeql/java-all
5-
extensible: supportedThreatModels
4+
pack: codeql/threat-models
5+
extensible: threatModelConfiguration
66
data:
7-
- ["all"]
7+
- ["all", true, 0]
88

99
- addsTo:
1010
pack: codeql/java-all

java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.ext.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
extensions:
22

33
- addsTo:
4-
pack: codeql/java-all
5-
extensible: supportedThreatModels
4+
pack: codeql/threat-models
5+
extensible: threatModelConfiguration
66
data:
7-
- ["environment"]
8-
- ["commandargs"]
7+
- ["environment", true, 0]
8+
- ["commandargs", true, 0]
99

1010
- addsTo:
1111
pack: codeql/java-all
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
edges
2+
| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] |
3+
| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String |
4+
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] |
5+
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] |
6+
| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] |
7+
| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
8+
| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) |
9+
| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... |
10+
| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
11+
| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String |
12+
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
13+
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
14+
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] |
15+
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] |
16+
| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] |
17+
| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... |
18+
| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
19+
| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String |
20+
| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] |
21+
| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) |
22+
nodes
23+
| Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] |
24+
| Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String |
25+
| Test.java:11:23:11:26 | data : byte[] | semmle.label | data : byte[] |
26+
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream |
27+
| Test.java:19:32:19:35 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
28+
| Test.java:22:36:22:53 | byteToString(...) | semmle.label | byteToString(...) |
29+
| Test.java:22:49:22:52 | data : byte[] | semmle.label | data : byte[] |
30+
| Test.java:25:26:25:80 | ... + ... | semmle.label | ... + ... |
31+
| Test.java:25:56:25:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
32+
| Test.java:25:69:25:72 | data : byte[] | semmle.label | data : byte[] |
33+
| Test.java:30:21:30:61 | executeQuery(...) : String | semmle.label | executeQuery(...) : String |
34+
| Test.java:33:26:33:68 | ... + ... | semmle.label | ... + ... |
35+
| Test.java:36:36:36:41 | result | semmle.label | result |
36+
| Test.java:64:5:64:13 | System.in : InputStream | semmle.label | System.in : InputStream |
37+
| Test.java:64:20:64:23 | data [post update] : byte[] | semmle.label | data [post update] : byte[] |
38+
| Test.java:67:26:67:80 | ... + ... | semmle.label | ... + ... |
39+
| Test.java:67:56:67:73 | byteToString(...) : String | semmle.label | byteToString(...) : String |
40+
| Test.java:67:69:67:72 | data : byte[] | semmle.label | data : byte[] |
41+
| Test.java:70:36:70:53 | byteToString(...) | semmle.label | byteToString(...) |
42+
| Test.java:70:49:70:52 | data : byte[] | semmle.label | data : byte[] |
43+
subpaths
44+
| 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(...) |
45+
| 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 |
46+
| 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 |
47+
| 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(...) |
48+
#select
49+
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:22:36:22:53 | byteToString(...) |
50+
| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:25:26:25:80 | ... + ... |
51+
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... |
52+
| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result |
53+
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:67:26:67:80 | ... + ... |
54+
| Test.java:64:5:64:13 | System.in : InputStream | Test.java:70:36:70:53 | byteToString(...) |

0 commit comments

Comments
 (0)