File tree Expand file tree Collapse file tree 4 files changed +33
-87
lines changed
javascript/ql/src/experimental/Security/CWE-347-noVerification Expand file tree Collapse file tree 4 files changed +33
-87
lines changed Original file line number Diff line number Diff line change 1212
1313import javascript
1414import 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
4517class Configuration extends TaintTracking:: Configuration {
4618 Configuration ( ) { this = "jsonwebtoken without any signature verification" }
Original file line number Diff line number Diff line change 1212
1313import javascript
1414import 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
4517class Configuration extends TaintTracking:: Configuration {
4618 Configuration ( ) { this = "jsonwebtoken without any signature verification" }
Original file line number Diff line number Diff line change 1212
1313import javascript
1414import 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
4517class ConfigurationUnverifiedDecode extends TaintTracking:: Configuration {
4618 ConfigurationUnverifiedDecode ( ) { this = "jsonwebtoken without any signature verification" }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments