Skip to content

Commit f905ac1

Browse files
committed
add jsonWebToken library file to remove duplicate predicate declrations
1 parent 0895f7d commit f905ac1

File tree

4 files changed

+33
-87
lines changed

4 files changed

+33
-87
lines changed

javascript/ql/src/experimental/Security/CWE-347-noVerification/JsonWebToken.ql

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,7 @@
1212

1313
import javascript
1414
import DataFlow::PathGraph
15-
16-
DataFlow::Node unverifiedDecode() {
17-
result = API::moduleImport("jsonwebtoken").getMember("decode").getParameter(0).asSink()
18-
or
19-
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
20-
verify
21-
.getParameter(2)
22-
.getMember("algorithms")
23-
.getUnknownMember()
24-
.asSink()
25-
.mayHaveStringValue("none") and
26-
result = verify.getParameter(0).asSink()
27-
)
28-
}
29-
30-
DataFlow::Node verifiedDecode() {
31-
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
32-
(
33-
not verify
34-
.getParameter(2)
35-
.getMember("algorithms")
36-
.getUnknownMember()
37-
.asSink()
38-
.mayHaveStringValue("none") or
39-
not exists(verify.getParameter(2).getMember("algorithms"))
40-
) and
41-
result = verify.getParameter(0).asSink()
42-
)
43-
}
15+
import jsonWebToken
4416

4517
class Configuration extends TaintTracking::Configuration {
4618
Configuration() { this = "jsonwebtoken without any signature verification" }

javascript/ql/src/experimental/Security/CWE-347-noVerification/JsonWebTokenLocalSource.ql

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,7 @@
1212

1313
import javascript
1414
import DataFlow::PathGraph
15-
16-
DataFlow::Node unverifiedDecode() {
17-
result = API::moduleImport("jsonwebtoken").getMember("decode").getParameter(0).asSink()
18-
or
19-
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
20-
verify
21-
.getParameter(2)
22-
.getMember("algorithms")
23-
.getUnknownMember()
24-
.asSink()
25-
.mayHaveStringValue("none") and
26-
result = verify.getParameter(0).asSink()
27-
)
28-
}
29-
30-
DataFlow::Node verifiedDecode() {
31-
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
32-
(
33-
not verify
34-
.getParameter(2)
35-
.getMember("algorithms")
36-
.getUnknownMember()
37-
.asSink()
38-
.mayHaveStringValue("none") or
39-
not exists(verify.getParameter(2).getMember("algorithms"))
40-
) and
41-
result = verify.getParameter(0).asSink()
42-
)
43-
}
15+
import jsonWebToken
4416

4517
class Configuration extends TaintTracking::Configuration {
4618
Configuration() { this = "jsonwebtoken without any signature verification" }

javascript/ql/src/experimental/Security/CWE-347-noVerification/JsonWebTokenNotWorking.ql

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,7 @@
1212

1313
import javascript
1414
import DataFlow::PathGraph
15-
16-
DataFlow::Node unverifiedDecode() {
17-
result = API::moduleImport("jsonwebtoken").getMember("decode").getParameter(0).asSink()
18-
or
19-
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
20-
verify
21-
.getParameter(2)
22-
.getMember("algorithms")
23-
.getUnknownMember()
24-
.asSink()
25-
.mayHaveStringValue("none") and
26-
result = verify.getParameter(0).asSink()
27-
)
28-
}
29-
30-
DataFlow::Node verifiedDecode() {
31-
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
32-
(
33-
not verify
34-
.getParameter(2)
35-
.getMember("algorithms")
36-
.getUnknownMember()
37-
.asSink()
38-
.mayHaveStringValue("none") or
39-
not exists(verify.getParameter(2).getMember("algorithms"))
40-
) and
41-
result = verify.getParameter(0).asSink()
42-
)
43-
}
15+
import jsonWebToken
4416

4517
class ConfigurationUnverifiedDecode extends TaintTracking::Configuration {
4618
ConfigurationUnverifiedDecode() { this = "jsonwebtoken without any signature verification" }
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import javascript
2+
3+
DataFlow::Node unverifiedDecode() {
4+
result = API::moduleImport("jsonwebtoken").getMember("decode").getParameter(0).asSink()
5+
or
6+
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
7+
verify
8+
.getParameter(2)
9+
.getMember("algorithms")
10+
.getUnknownMember()
11+
.asSink()
12+
.mayHaveStringValue("none") and
13+
result = verify.getParameter(0).asSink()
14+
)
15+
}
16+
17+
DataFlow::Node verifiedDecode() {
18+
exists(API::Node verify | verify = API::moduleImport("jsonwebtoken").getMember("verify") |
19+
(
20+
not verify
21+
.getParameter(2)
22+
.getMember("algorithms")
23+
.getUnknownMember()
24+
.asSink()
25+
.mayHaveStringValue("none") or
26+
not exists(verify.getParameter(2).getMember("algorithms"))
27+
) and
28+
result = verify.getParameter(0).asSink()
29+
)
30+
}

0 commit comments

Comments
 (0)