File tree Expand file tree Collapse file tree 4 files changed +44
-25
lines changed
lib/semmle/javascript/frameworks/helmet Expand file tree Collapse file tree 4 files changed +44
-25
lines changed Original file line number Diff line number Diff line change 11extensions :
22 - addsTo :
3- pack : codeql/javascript-queries
3+ pack : codeql/javascript-all
44 extensible : requiredHelmetSecuritySetting
55 data :
66 - ["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
2424name: my-org/javascript-helmet-insecure-config-model-pack
2525version: 1.0.0
2626extensionTargets:
27- codeql/java -all: '*'
27+ codeql/javascript -all: '*'
2828dataExtensions:
2929 - models/**/*.yml
3030` ` `
Original file line number Diff line number Diff line change 1212 */
1313
1414import javascript
15- import DataFlow
1615import 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
3917
4018from HelmetProperty helmetProperty , ExpressLibraries:: HelmetRouteHandler helmet
4119where
You can’t perform that action at this time.
0 commit comments