File tree 4 files changed +44
-25
lines changed
lib/semmle/javascript/frameworks/helmet
4 files changed +44
-25
lines changed Original file line number Diff line number Diff line change 1
1
extensions :
2
2
- addsTo :
3
- pack : codeql/javascript-queries
3
+ pack : codeql/javascript-all
4
4
extensible : requiredHelmetSecuritySetting
5
5
data :
6
6
- ["frameguard"]
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Provides classes for working with Helmet
3
+ */
4
+
5
+ private import javascript
6
+
7
+ /**
8
+ * A write to a property of a route handler from the "helmet" module.
9
+ */
10
+ class HelmetProperty extends DataFlow:: Node instanceof DataFlow:: PropWrite {
11
+ ExpressLibraries:: HelmetRouteHandler helmet ;
12
+
13
+ HelmetProperty ( ) {
14
+ this = helmet .( DataFlow:: CallNode ) .getAnArgument ( ) .getALocalSource ( ) .getAPropertyWrite ( )
15
+ }
16
+
17
+ /**
18
+ * Gets the route handler associated to this property.
19
+ */
20
+ ExpressLibraries:: HelmetRouteHandler getHelmet ( ) { result = helmet }
21
+
22
+ /**
23
+ * Gets the boolean value of this property, if it may evaluate to a `Boolean`.
24
+ */
25
+ predicate isFalse ( ) { DataFlow:: PropWrite .super .getRhs ( ) .mayHaveBooleanValue ( false ) }
26
+
27
+ /**
28
+ * Gets the name of the `HelmetProperty`.
29
+ */
30
+ string getName ( ) { result = DataFlow:: PropWrite .super .getPropertyName ( ) }
31
+
32
+ /**
33
+ * read from data extensions to allow enforcing custom settings
34
+ */
35
+ predicate isImportantSecuritySetting ( ) { requiredHelmetSecuritySetting ( this .getName ( ) ) }
36
+ }
37
+
38
+ /**
39
+ * defaults are located in `javascript/ql/lib/semmle/frameworks/helmet/Helmet.Required.Setting.model.yml`
40
+ */
41
+ extensible predicate requiredHelmetSecuritySetting ( string name ) ;
Original file line number Diff line number Diff line change @@ -24,7 +24,7 @@ A suitable [model pack](https://docs.github.com/en/code-security/codeql-cli/usin
24
24
name: my-org/javascript-helmet-insecure-config-model-pack
25
25
version: 1.0.0
26
26
extensionTargets:
27
- codeql/java -all: '*'
27
+ codeql/javascript -all: '*'
28
28
dataExtensions:
29
29
- models/**/*.yml
30
30
` ` `
Original file line number Diff line number Diff line change 12
12
*/
13
13
14
14
import javascript
15
- import DataFlow
16
15
import semmle.javascript.frameworks.ExpressModules
17
-
18
- class HelmetProperty extends DataFlow:: Node instanceof DataFlow:: PropWrite {
19
- ExpressLibraries:: HelmetRouteHandler helmet ;
20
-
21
- HelmetProperty ( ) {
22
- this = helmet .( DataFlow:: CallNode ) .getAnArgument ( ) .getALocalSource ( ) .getAPropertyWrite ( )
23
- }
24
-
25
- ExpressLibraries:: HelmetRouteHandler getHelmet ( ) { result = helmet }
26
-
27
- predicate isFalse ( ) { DataFlow:: PropWrite .super .getRhs ( ) .mayHaveBooleanValue ( false ) }
28
-
29
- string getName ( ) { result = DataFlow:: PropWrite .super .getPropertyName ( ) }
30
-
31
- predicate isImportantSecuritySetting ( ) {
32
- // read from data extensions to allow enforcing custom settings
33
- // defaults are located in javascript/ql/lib/semmle/frameworks/helmet/Helmet.Required.Setting.model.yml
34
- requiredHelmetSecuritySetting ( this .getName ( ) )
35
- }
36
- }
37
-
38
- extensible predicate requiredHelmetSecuritySetting ( string name ) ;
16
+ import semmle.javascript.frameworks.helmet.Helmet
39
17
40
18
from HelmetProperty helmetProperty , ExpressLibraries:: HelmetRouteHandler helmet
41
19
where
You can’t perform that action at this time.
0 commit comments