Skip to content

Commit b617667

Browse files
authored
Merge pull request #16062 from atorralba/atorralba/java/more-neutrals
Java: Add more neutrals and improve `java.net.URL` models
2 parents 3e96028 + 7a04467 commit b617667

File tree

5 files changed

+96
-4
lines changed

5 files changed

+96
-4
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL.

java/ql/lib/ext/java.net.model.yml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ extensions:
1818
- ["java.net", "DatagramSocket", True, "connect", "(SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"]
1919
- ["java.net", "PasswordAuthentication", False, "PasswordAuthentication", "(String,char[])", "", "Argument[1]", "credentials-password", "hq-generated"]
2020
- ["java.net", "Socket", True, "Socket", "(String,int)", "", "Argument[0]", "request-forgery", "ai-manual"]
21+
- ["java.net", "URL", False, "getContent", "", "", "Argument[this]", "request-forgery", "manual"]
2122
- ["java.net", "URL", False, "openConnection", "", "", "Argument[this]", "request-forgery", "manual"]
2223
- ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[0]", "request-forgery", "ai-manual"]
2324
- ["java.net", "URL", False, "openStream", "", "", "Argument[this]", "request-forgery", "manual"]
@@ -52,9 +53,16 @@ extensions:
5253
- ["java.net", "URI", False, "toASCIIString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
5354
- ["java.net", "URI", False, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
5455
- ["java.net", "URI", False, "toURL", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
55-
- ["java.net", "URL", False, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"]
56-
- ["java.net", "URL", False, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"]
56+
- ["java.net", "URL", False, "getFile", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "ai-manual"]
57+
- ["java.net", "URL", False, "getPath", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "ai-manual"]
58+
- ["java.net", "URL", False, "getQuery", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "df-manual"] # query is part of the path
5759
- ["java.net", "URL", False, "URL", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
60+
- ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-manual"]
61+
- ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[3]", "Argument[this].SyntheticField[java.net.URL.path]", "taint", "df-manual"]
62+
- ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-manual"]
63+
- ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[3]", "Argument[this].SyntheticField[java.net.URL.path]", "taint", "df-manual"]
64+
- ["java.net", "URL", False, "URL", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-manual"]
65+
- ["java.net", "URL", False, "URL", "(String,String,String)", "", "Argument[2]", "Argument[this].SyntheticField[java.net.URL.path]", "taint", "df-manual"]
5866
- ["java.net", "URL", False, "URL", "(URL,String)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"]
5967
- ["java.net", "URL", False, "URL", "(URL,String)", "", "Argument[1]", "Argument[this]", "taint", "ai-manual"]
6068
- ["java.net", "URL", False, "toExternalForm", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
@@ -69,3 +77,9 @@ extensions:
6977
- ["java.net", "Socket", "getOutputStream", "()", "summary", "df-manual"]
7078
- ["java.net", "Socket", "connect", "(SocketAddress)", "summary", "df-manual"]
7179
- ["java.net", "Socket", "connect", "(SocketAddress,int)", "summary", "df-manual"]
80+
- ["java.net", "URL", "getContent", "()", "summary", "df-manual"]
81+
- ["java.net", "URL", "getDefaultPort", "()", "summary", "df-manual"]
82+
- ["java.net", "URL", "getPort", "()", "summary", "df-manual"]
83+
- ["java.net", "URL", "getProtocol", "()", "summary", "df-manual"]
84+
- ["java.net", "URL", "openConnection", "()", "summary", "df-manual"]
85+
- ["java.net", "URL", "openStream", "()", "summary", "df-manual"]

java/ql/lib/ext/java.nio.file.model.yml

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,31 @@ extensions:
9090
extensible: neutralModel
9191
data:
9292
# summary neutrals
93-
- ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "summary", "manual"]
94-
- ["java.nio.file", "Files", "newInputStream", "(Path,OpenOption[])", "summary", "df-manual"]
93+
- ["java.nio.file", "Files", "copy", "", "summary", "df-manual"]
94+
- ["java.nio.file", "Files", "createDirectories", "", "summary", "df-manual"]
95+
- ["java.nio.file", "Files", "createDirectory", "", "summary", "df-manual"]
96+
- ["java.nio.file", "Files", "createFile", "", "summary", "df-manual"]
97+
- ["java.nio.file", "Files", "createLink", "", "summary", "df-manual"]
98+
- ["java.nio.file", "Files", "createSymbolicLink", "", "summary", "df-manual"]
99+
- ["java.nio.file", "Files", "createTempDirectory", "", "summary", "df-manual"]
100+
- ["java.nio.file", "Files", "createTempFile", "", "summary", "df-manual"]
101+
- ["java.nio.file", "Files", "delete", "", "summary", "df-manual"]
102+
- ["java.nio.file", "Files", "deleteIfExists", "", "summary", "df-manual"]
103+
- ["java.nio.file", "Files", "getFileStore", "", "summary", "df-manual"]
104+
- ["java.nio.file", "Files", "exists", "", "summary", "df-manual"]
105+
- ["java.nio.file", "Files", "lines", "", "summary", "df-manual"]
106+
- ["java.nio.file", "Files", "move", "", summary, "df-manual"]
107+
- ["java.nio.file", "Files", "newBufferedReader", "", "summary", "df-manual"]
108+
- ["java.nio.file", "Files", "newBufferedWriter", "", summary, "df-manual"]
109+
- ["java.nio.file", "Files", "newInputStream", "", "summary", "df-manual"]
110+
- ["java.nio.file", "Files", "newOutputStream", "", summary, "df-manual"]
111+
- ["java.nio.file", "Files", "notExists", "", "summary", "df-manual"]
112+
- ["java.nio.file", "Files", "probeContentType", "", "summary", "df-manual"]
113+
- ["java.nio.file", "Files", "readAllBytes", "", "summary", "df-manual"]
114+
- ["java.nio.file", "Files", "readAllLines", "", "summary", "df-manual"]
115+
- ["java.nio.file", "Files", "readString", "", "summary", "df-manual"]
116+
- ["java.nio.file", "Files", "write", "", summary, "df-manual"]
117+
- ["java.nio.file", "Files", "writeString", "", summary, "df-manual"]
95118
# sink neutrals
96119
- ["java.nio.file", "Files", "getLastModifiedTime", "", "sink", "hq-manual"]
97120
- ["java.nio.file", "Files", "getOwner", "", "sink", "hq-manual"]

java/ql/lib/ext/java.security.cert.model.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,43 @@ extensions:
44
extensible: sinkModel
55
data:
66
- ["java.security.cert", "X509CertSelector", False, "setSubjectPublicKey", "(byte[])", "", "Argument[0]", "credentials-key", "hq-generated"]
7+
- addsTo:
8+
pack: codeql/java-all
9+
extensible: neutralModel
10+
data:
11+
- ["java.security.cert", "CertificateFactory", "CertificateFactory", "(CertificateFactorySpi,Provider,String)", "summary", "df-manual"]
12+
- ["java.security.cert", "CertificateFactory", "generateCertificate", "(InputStream)", "summary", "df-manual"]
13+
- ["java.security.cert", "CertificateFactory", "generateCertificates", "(InputStream)", "summary", "df-manual"]
14+
- ["java.security.cert", "CertificateFactory", "generateCertPath", "", "summary", "df-manual"]
15+
- ["java.security.cert", "CertificateFactory", "generateCRL", "(InputStream)", "summary", "df-manual"]
16+
- ["java.security.cert", "CertificateFactory", "generateCRLs", "(InputStream)", "summary", "df-manual"]
17+
- ["java.security.cert", "CertificateFactory", "getCertPathEncodings", "()", "summary", "df-manual"]
18+
- ["java.security.cert", "CertificateFactory", "getInstance", "", "summary", "df-manual"]
19+
- ["java.security.cert", "CertificateFactory", "getProvider", "()", "summary", "df-manual"]
20+
- ["java.security.cert", "CertificateFactory", "getType", "()", "summary", "df-manual"]
21+
- ["java.security.cert", "CertStore", "CertStore", "(CertStoreSpi,Provider,String,CertStoreParameters)", "summary", "df-manual"]
22+
- ["java.security.cert", "CertStore", "getCertificates", "(CertSelector)", "summary", "df-manual"]
23+
- ["java.security.cert", "CertStore", "getCertStoreCertificates", "()", "summary", "df-manual"]
24+
- ["java.security.cert", "CertStore", "getCRLs", "(CRLSelector)", "summary", "df-manual"]
25+
- ["java.security.cert", "CertStore", "getDefaultType", "()", "summary", "df-manual"]
26+
- ["java.security.cert", "CertStore", "getInstance", "", "summary", "df-manual"]
27+
- ["java.security.cert", "CertStore", "getProvider", "()", "summary", "df-manual"]
28+
- ["java.security.cert", "CertStore", "getType", "()", "summary", "df-manual"]
29+
- ["java.security.cert", "PKIXParameters", "PKIXParameters", "", "summary", "df-manual"]
30+
- ["java.security.cert", "PKIXParameters", "addCertPathChecker", "(PKIXCertPathChecker)", "summary", "df-manual"]
31+
- ["java.security.cert", "PKIXParameters", "addCertStore", "(CertStore)", "summary", "df-manual"]
32+
- ["java.security.cert", "PKIXParameters", "getCertPathCheckers", "()", "summary", "df-manual"]
33+
- ["java.security.cert", "PKIXParameters", "getCertStores", "()", "summary", "df-manual"]
34+
- ["java.security.cert", "PKIXParameters", "getDate", "()", "summary", "df-manual"]
35+
- ["java.security.cert", "PKIXParameters", "getInitialPolicies", "()", "summary", "df-manual"]
36+
- ["java.security.cert", "PKIXParameters", "getPolicyQualifiersRejected", "()", "summary", "df-manual"]
37+
- ["java.security.cert", "PKIXParameters", "getSigProvider", "()", "summary", "df-manual"]
38+
- ["java.security.cert", "PKIXParameters", "getTargetCertConstraints", "()", "summary", "df-manual"]
39+
- ["java.security.cert", "PKIXParameters", "getTrustAnchors", "()", "summary", "df-manual"]
40+
- ["java.security.cert", "PKIXParameters", "setAnyPolicyInhibited", "(boolean)", "summary", "df-manual"]
41+
- ["java.security.cert", "PKIXParameters", "setCertPathCheckers", "(List)", "summary", "df-manual"]
42+
- ["java.security.cert", "PKIXParameters", "setCertStores", "(List)", "summary", "df-manual"]
43+
- ["java.security.cert", "PKIXParameters", "setDate", "(Date)", "summary", "df-manual"]
44+
- ["java.security.cert", "PKIXParameters", "setSigProvider", "(String)", "summary", "df-manual"]
45+
- ["java.security.cert", "PKIXParameters", "setTargetConstraints", "(CertSelector)", "summary", "df-manual"]
46+
- ["java.security.cert", "PKIXParameters", "setTrustAnchors", "(Set)", "summary", "df-manual"]

java/ql/lib/ext/java.security.model.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ extensions:
1515
- ["java.security", "KeyStoreSpi", True, "engineSetKeyEntry", "(String,Key,char[],Certificate[])", "", "Argument[2]", "credentials-password", "hq-generated"]
1616
- ["java.security", "KeyStoreSpi", True, "engineStore", "(OutputStream,char[])", "", "Argument[1]", "credentials-password", "hq-generated"]
1717
- ["java.security", "KeyStoreSpi", True, "engineSetKeyEntry", "(String,byte[],Certificate[])", "", "Argument[1]", "credentials-key", "hq-generated"]
18+
- addsTo:
19+
pack: codeql/java-all
20+
extensible: summaryModel
21+
data:
22+
- ["java.security", "CodeSource", False, "CodeSource", "(URL,Certificate[])", "", "Argument[0]", "Argument[this]", "taint", "df-manual"]
23+
- ["java.security", "CodeSource", False, "CodeSource", "(URL,Certificate[])", "", "Argument[1].ArrayElement", "Argument[this].SyntheticField[java.security.CodeSource.certificates].ArrayElement", "value", "df-manual"]
24+
- ["java.security", "CodeSource", False, "CodeSource", "(URL,CodeSigner[])", "", "Argument[0]", "Argument[this]", "taint", "df-manual"]
25+
- ["java.security", "CodeSource", False, "CodeSource", "(URL,CodeSigner[])", "", "Argument[1].ArrayElement", "Argument[this].SyntheticField[java.security.CodeSource.codeSigners].ArrayElement", "value", "df-manual"]
26+
- ["java.security", "CodeSource", False, "getCertificates", "()", "", "Argument[this].SyntheticField[java.security.CodeSource.certificates].ArrayElement", "ReturnValue.ArrayElement", "value", "df-manual"]
27+
- ["java.security", "CodeSource", False, "getCodeSigners", "()", "", "Argument[this].SyntheticField[java.security.CodeSource.codeSigners].ArrayElement", "ReturnValue.ArrayElement", "value", "df-manual"]
28+
- ["java.security", "CodeSource", False, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"]
1829
- addsTo:
1930
pack: codeql/java-all
2031
extensible: neutralModel

0 commit comments

Comments
 (0)