Skip to content

Commit e84dda4

Browse files
committed
Update JS helmet model structure
1 parent fb7b89f commit e84dda4

File tree

4 files changed

+30
-25
lines changed

4 files changed

+30
-25
lines changed

javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
extensions:
22
- addsTo:
3-
pack: codeql/javascript-queries
3+
pack: codeql/javascript-all
44
extensible: requiredHelmetSecuritySetting
55
data:
66
- ["frameguard"]
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Provides classes for working with Helmet
3+
*/
4+
5+
import javascript
6+
7+
class HelmetProperty extends DataFlow::Node instanceof DataFlow::PropWrite {
8+
ExpressLibraries::HelmetRouteHandler helmet;
9+
10+
HelmetProperty() {
11+
this = helmet.(DataFlow::CallNode).getAnArgument().getALocalSource().getAPropertyWrite()
12+
}
13+
14+
ExpressLibraries::HelmetRouteHandler getHelmet() { result = helmet }
15+
16+
predicate isFalse() { DataFlow::PropWrite.super.getRhs().mayHaveBooleanValue(false) }
17+
18+
string getName() { result = DataFlow::PropWrite.super.getPropertyName() }
19+
20+
predicate isImportantSecuritySetting() {
21+
// read from data extensions to allow enforcing custom settings
22+
// defaults are located in javascript/ql/lib/semmle/frameworks/helmet/Helmet.Required.Setting.model.yml
23+
requiredHelmetSecuritySetting(this.getName())
24+
}
25+
}
26+
27+
extensible predicate requiredHelmetSecuritySetting(string name);

javascript/ql/src/Security/CWE-693/CUSTOMIZING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ A suitable [model pack](https://docs.github.com/en/code-security/codeql-cli/usin
2424
name: my-org/javascript-helmet-insecure-config-model-pack
2525
version: 1.0.0
2626
extensionTargets:
27-
codeql/java-all: '*'
27+
codeql/javascript-all: '*'
2828
dataExtensions:
2929
- models/**/*.yml
3030
```

javascript/ql/src/Security/CWE-693/InsecureHelmet.ql

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,8 @@
1212
*/
1313

1414
import javascript
15-
import DataFlow
1615
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
3917

4018
from HelmetProperty helmetProperty, ExpressLibraries::HelmetRouteHandler helmet
4119
where

0 commit comments

Comments
 (0)