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 12
12
13
13
import javascript
14
14
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
44
16
45
17
class Configuration extends TaintTracking:: Configuration {
46
18
Configuration ( ) { this = "jsonwebtoken without any signature verification" }
Original file line number Diff line number Diff line change 12
12
13
13
import javascript
14
14
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
44
16
45
17
class Configuration extends TaintTracking:: Configuration {
46
18
Configuration ( ) { this = "jsonwebtoken without any signature verification" }
Original file line number Diff line number Diff line change 12
12
13
13
import javascript
14
14
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
44
16
45
17
class ConfigurationUnverifiedDecode extends TaintTracking:: Configuration {
46
18
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