Skip to content

XSJS queries and CodeQL update #129

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jul 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/codeql/codeql-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: "My CodeQL config"

queries:
- uses: security-extended
# for ui5/cap queries
- uses: ./javascript/frameworks/ui5/src/codeql-suites/javascript-security-extended.qls
- uses: ./javascript/frameworks/cap/src/codeql-suites/javascript-security-extended.qls
- uses: ./javascript/frameworks/xsjs/src/codeql-suites/javascript-security-extended.qls

paths-ignore:
- "**/frameworks/*/test/models"
29,390 changes: 1 addition & 29,389 deletions .github/workflows/javascript.sarif.expected

Large diffs are not rendered by default.

43 changes: 5 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,5 @@
# SAP UI5 with CodeQL

CodeQL queries and supporting models for the SAP UI5 JavaScript framework

### Queries
- [XSS](javascript/frameworks/UI5/src/UI5Xss/UI5Xss.ql)
- [Log Injection](javascript/frameworks/UI5/src/UI5LogInjection/UI5LogInjection.ql)
- [Clickjacking](javascript/frameworks/UI5/src/UI5Clickjacking/UI5Clickjacking.ql)

### Modeled UI5 framework elements
- UI5 AMD-style components (also via jQuery)
- MVC elements:
- UI5 Controllers and Data Models (literal/external JSON models)
- UI5 [declarative Views](DeclarativeApp.png) (XML/JSON/HTML/JS)
- Library/custom UI5 Controls
- Project naming conventions (e.g. Control-Renderer)
- Source/Sink definition via [ModelAsData extensions](javascript/frameworks/UI5/ext/ui5-data-extensions.yml#L61-L97)
- Controls inheritance via [ModelAsData extensions](javascript/frameworks/UI5/ext/ui5-data-extensions.yml#L42-L59)

### Supported Features with tests
The following tables list the main supported features with corresponding test cases
#### Detecting XSS and Log injection vulnerabilities
|test | library controls | [MaD sources sinks](javascript/frameworks/UI5/ext/ui5-data-extensions.yml#L61-L97) | custom controls | UI5View | JS dataflow | HTML APIs | sanitizer | acc.path via handler |
| - | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| [xss-html-control](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/1033) | ✅︎ | ✅︎ | | XMLView |
| [xss-custom-control-api1](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/1051)| ✅︎ | ✅︎ | ✅︎ | XMLView | | classic |
| [xss-custom-control-api2](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/250)| ✅︎ | ✅︎ | ✅︎ | XMLView | | DOM |
| [xss-json-view](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/247)<br/>[xss-html-view](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/245)<br/>[xss-js-view](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/246) | ✅︎ | ✅︎ | | JsonView<br/>HTMLView<br/>JSView |
| [log-html-control-df](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/275) | ✅︎ | ✅︎ | |XMLView| ✅︎ |
| [sanitized](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/277)| ✅︎ | ✅︎ | ✅︎ | XMLView | ✅︎ | DOM | ✅︎ |
| [xss-event-handlers](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/335)| ✅︎ | ✅︎ | ✅︎ | XMLView | | | | ✅︎ |

#### Detecting Clickjacking vulnerabilities
| test | secure | insecure frameOptions | missing frameOptions |
| - | :-: | :-: | :-: |
| [clickjacking-deny-all](javascript/frameworks/UI5/test/queries/UI5Clickjacking/clickjacking-deny-all/index.html#L10) | ✅︎ | |
| [clickjacking-allow-all:l9](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/240)<br/>[clickjacking-allow-all:l28](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/241) | | ✅︎ |
| [clickjacking-default-all](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/330) | | | ✅︎ |
# Overview
[CodeQL](https://codeql.github.com/) models and queries for the SAP frameworks:
- [CAP](javascript/frameworks/cap) (https://cap.cloud.sap/)
- [UI5](javascript/frameworks/ui5) (https://sapui5.hana.ondemand.com/)
- [XSJS](javascript/frameworks/xsjs) (https://www.npmjs.com/package/@sap/async-xsjs)
4 changes: 2 additions & 2 deletions javascript/frameworks/cap/ext/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ library: true
name: advanced-security/javascript-sap-cap-models
version: 0.2.0
extensionTargets:
codeql/javascript-all: "^0.9.1"
codeql/javascript-queries: "^0.8.16"
codeql/javascript-all: "^1.1.0"
codeql/javascript-queries: "^1.0.3"
dataExtensions:
- "*.model.yml"
20 changes: 10 additions & 10 deletions javascript/frameworks/cap/lib/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@
lockVersion: 1.0.0
dependencies:
codeql/dataflow:
version: 0.2.7
version: 1.0.3
codeql/javascript-all:
version: 0.9.1
version: 1.1.0
codeql/mad:
version: 0.2.16
version: 1.0.3
codeql/regex:
version: 0.2.16
version: 1.0.3
codeql/ssa:
version: 0.2.16
version: 1.0.3
codeql/tutorial:
version: 0.2.16
version: 1.0.3
codeql/typetracking:
version: 0.2.16
version: 1.0.3
codeql/util:
version: 0.2.16
version: 1.0.3
codeql/xml:
version: 0.0.3
version: 1.0.3
codeql/yaml:
version: 0.2.16
version: 1.0.3
compiled: false
2 changes: 1 addition & 1 deletion javascript/frameworks/cap/lib/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ version: 0.2.0
suites: codeql-suites
extractor: javascript
dependencies:
codeql/javascript-all: "^0.9.1"
codeql/javascript-all: "^1.1.0"
advanced-security/javascript-sap-cap-models: "^0.2.0"
20 changes: 10 additions & 10 deletions javascript/frameworks/cap/src/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@
lockVersion: 1.0.0
dependencies:
codeql/dataflow:
version: 0.2.7
version: 1.0.3
codeql/javascript-all:
version: 0.9.1
version: 1.1.0
codeql/mad:
version: 0.2.16
version: 1.0.3
codeql/regex:
version: 0.2.16
version: 1.0.3
codeql/ssa:
version: 0.2.16
version: 1.0.3
codeql/tutorial:
version: 0.2.16
version: 1.0.3
codeql/typetracking:
version: 0.2.16
version: 1.0.3
codeql/util:
version: 0.2.16
version: 1.0.3
codeql/xml:
version: 0.0.3
version: 1.0.3
codeql/yaml:
version: 0.2.16
version: 1.0.3
compiled: false
2 changes: 1 addition & 1 deletion javascript/frameworks/cap/src/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ version: 0.2.0
suites: codeql-suites
extractor: javascript
dependencies:
codeql/javascript-all: "^0.9.1"
codeql/javascript-all: "^1.1.0"
advanced-security/javascript-sap-cap-models: "^0.2.0"
advanced-security/javascript-sap-cap-all: "^0.2.0"
default-suite-file: codeql-suites/javascript-code-scanning.qls
26 changes: 13 additions & 13 deletions javascript/frameworks/cap/test/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,29 @@
lockVersion: 1.0.0
dependencies:
codeql/dataflow:
version: 0.2.7
version: 1.0.3
codeql/javascript-all:
version: 0.9.1
version: 1.1.0
codeql/javascript-queries:
version: 0.8.16
version: 1.0.3
codeql/mad:
version: 0.2.16
version: 1.0.3
codeql/regex:
version: 0.2.16
version: 1.0.3
codeql/ssa:
version: 0.2.16
version: 1.0.3
codeql/suite-helpers:
version: 0.7.16
version: 1.0.3
codeql/tutorial:
version: 0.2.16
version: 1.0.3
codeql/typetracking:
version: 0.2.16
version: 1.0.3
codeql/typos:
version: 0.2.16
version: 1.0.3
codeql/util:
version: 0.2.16
version: 1.0.3
codeql/xml:
version: 0.0.3
version: 1.0.3
codeql/yaml:
version: 0.2.16
version: 1.0.3
compiled: false
4 changes: 2 additions & 2 deletions javascript/frameworks/cap/test/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ name: advanced-security/javascript-sap-cap-queries-tests
version: 0.2.0
extractor: javascript
dependencies:
codeql/javascript-all: "^0.9.1"
codeql/javascript-queries: "^0.8.16"
codeql/javascript-all: "^1.1.0"
codeql/javascript-queries: "^1.0.3"
advanced-security/javascript-sap-cap-queries: "^0.2.0"
advanced-security/javascript-sap-cap-models: "^0.2.0"
advanced-security/javascript-sap-cap-all: "^0.2.0"
File renamed without changes
38 changes: 38 additions & 0 deletions javascript/frameworks/ui5/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# SAP UI5 with CodeQL

CodeQL queries and supporting models for the SAP UI5 JavaScript framework

### Queries
- [XSS](src/UI5Xss/UI5Xss.ql)
- [Log Injection](src/UI5LogInjection/UI5LogInjection.ql)
- [Clickjacking](src/UI5Clickjacking/UI5Clickjacking.ql)

### Modeled UI5 framework elements
- UI5 AMD-style components (also via jQuery)
- MVC elements:
- UI5 Controllers and Data Models (literal/external JSON models)
- UI5 [declarative Views](DeclarativeApp.png) (XML/JSON/HTML/JS)
- Library/custom UI5 Controls
- Project naming conventions (e.g. Control-Renderer)
- Source/Sink definition via [ModelAsData extensions](ext/ui5.model.yml#L61-L97)
- Controls inheritance via [ModelAsData extensions](ext/ui5.model.yml#L42-L59)

### Supported Features with tests
The following tables list the main supported features with corresponding test cases
#### Detecting XSS and Log injection vulnerabilities
|test | library controls | [MaD sources sinks](ext/ui5.model.yml#L61-L97) | custom controls | UI5View | JS dataflow | HTML APIs | sanitizer | acc.path via handler |
| - | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| [xss-html-control](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/1033) | ✅︎ | ✅︎ | | XMLView |
| [xss-custom-control-api1](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/1051)| ✅︎ | ✅︎ | ✅︎ | XMLView | | classic |
| [xss-custom-control-api2](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/250)| ✅︎ | ✅︎ | ✅︎ | XMLView | | DOM |
| [xss-json-view](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/247)<br/>[xss-html-view](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/245)<br/>[xss-js-view](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/246) | ✅︎ | ✅︎ | | JsonView<br/>HTMLView<br/>JSView |
| [log-html-control-df](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/275) | ✅︎ | ✅︎ | |XMLView| ✅︎ |
| [sanitized](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/277)| ✅︎ | ✅︎ | ✅︎ | XMLView | ✅︎ | DOM | ✅︎ |
| [xss-event-handlers](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/335)| ✅︎ | ✅︎ | ✅︎ | XMLView | | | | ✅︎ |

#### Detecting Clickjacking vulnerabilities
| test | secure | insecure frameOptions | missing frameOptions |
| - | :-: | :-: | :-: |
| [clickjacking-deny-all](test/queries/UI5Clickjacking/clickjacking-deny-all/index.html#L10) | ✅︎ | |
| [clickjacking-allow-all:l9](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/240)<br/>[clickjacking-allow-all:l28](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/241) | | ✅︎ |
| [clickjacking-default-all](https://github.com/advanced-security/codeql-sap-js/security/code-scanning/330) | | | ✅︎ |
2 changes: 1 addition & 1 deletion javascript/frameworks/ui5/ext/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ library: true
name: advanced-security/javascript-sap-ui5-models
version: 0.6.0
extensionTargets:
codeql/javascript-all: "^0.9.1"
codeql/javascript-all: "^1.1.0"
dataExtensions:
- "*.model.yml"
20 changes: 10 additions & 10 deletions javascript/frameworks/ui5/lib/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@
lockVersion: 1.0.0
dependencies:
codeql/dataflow:
version: 0.2.7
version: 1.0.3
codeql/javascript-all:
version: 0.9.1
version: 1.1.0
codeql/mad:
version: 0.2.16
version: 1.0.3
codeql/regex:
version: 0.2.16
version: 1.0.3
codeql/ssa:
version: 0.2.16
version: 1.0.3
codeql/tutorial:
version: 0.2.16
version: 1.0.3
codeql/typetracking:
version: 0.2.16
version: 1.0.3
codeql/util:
version: 0.2.16
version: 1.0.3
codeql/xml:
version: 0.0.3
version: 1.0.3
codeql/yaml:
version: 0.2.16
version: 1.0.3
compiled: false
2 changes: 1 addition & 1 deletion javascript/frameworks/ui5/lib/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ version: 0.6.0
suites: codeql-suites
extractor: javascript
dependencies:
codeql/javascript-all: "^0.9.1"
codeql/javascript-all: "^1.1.0"
advanced-security/javascript-sap-ui5-models: "^0.6.0"
20 changes: 10 additions & 10 deletions javascript/frameworks/ui5/src/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@
lockVersion: 1.0.0
dependencies:
codeql/dataflow:
version: 0.2.7
version: 1.0.3
codeql/javascript-all:
version: 0.9.1
version: 1.1.0
codeql/mad:
version: 0.2.16
version: 1.0.3
codeql/regex:
version: 0.2.16
version: 1.0.3
codeql/ssa:
version: 0.2.16
version: 1.0.3
codeql/tutorial:
version: 0.2.16
version: 1.0.3
codeql/typetracking:
version: 0.2.16
version: 1.0.3
codeql/util:
version: 0.2.16
version: 1.0.3
codeql/xml:
version: 0.0.3
version: 1.0.3
codeql/yaml:
version: 0.2.16
version: 1.0.3
compiled: false
2 changes: 1 addition & 1 deletion javascript/frameworks/ui5/src/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ version: 0.6.0
suites: codeql-suites
extractor: javascript
dependencies:
codeql/javascript-all: "^0.9.1"
codeql/javascript-all: "^1.1.0"
advanced-security/javascript-sap-ui5-models: "^0.6.0"
advanced-security/javascript-sap-ui5-all: "^0.6.0"
default-suite-file: codeql-suites/javascript-code-scanning.qls
26 changes: 13 additions & 13 deletions javascript/frameworks/ui5/test/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,29 @@
lockVersion: 1.0.0
dependencies:
codeql/dataflow:
version: 0.2.7
version: 1.0.3
codeql/javascript-all:
version: 0.9.1
version: 1.1.0
codeql/javascript-queries:
version: 0.8.16
version: 1.0.3
codeql/mad:
version: 0.2.16
version: 1.0.3
codeql/regex:
version: 0.2.16
version: 1.0.3
codeql/ssa:
version: 0.2.16
version: 1.0.3
codeql/suite-helpers:
version: 0.7.16
version: 1.0.3
codeql/tutorial:
version: 0.2.16
version: 1.0.3
codeql/typetracking:
version: 0.2.16
version: 1.0.3
codeql/typos:
version: 0.2.16
version: 1.0.3
codeql/util:
version: 0.2.16
version: 1.0.3
codeql/xml:
version: 0.0.3
version: 1.0.3
codeql/yaml:
version: 0.2.16
version: 1.0.3
compiled: false
4 changes: 2 additions & 2 deletions javascript/frameworks/ui5/test/qlpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ name: advanced-security/javascript-sap-ui5-queries-tests
version: 0.6.0
extractor: javascript
dependencies:
codeql/javascript-all: "^0.9.1"
codeql/javascript-queries: "^0.8.16"
codeql/javascript-all: "^1.1.0"
codeql/javascript-queries: "^1.0.3"
advanced-security/javascript-sap-ui5-queries: "^0.6.0"
advanced-security/javascript-sap-ui5-models: "^0.6.0"
advanced-security/javascript-sap-ui5-all: "^0.6.0"
4 changes: 4 additions & 0 deletions javascript/frameworks/xsjs/ext/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
lockVersion: 1.0.0
dependencies: {}
compiled: false
Loading