Skip to content

Commit 08785a4

Browse files
committed
JS: Add sources from actions/core
1 parent cb95dbf commit 08785a4

3 files changed

Lines changed: 29 additions & 0 deletions

File tree

javascript/ql/lib/semmle/javascript/frameworks/ActionsLib.qll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ private API::Node taintSource() {
3333
result = commitObj().getMember("message")
3434
or
3535
result = commitObj().getMember(["author", "committer"]).getMember(["name", "email"])
36+
or
37+
result =
38+
API::moduleImport("@actions/core").getMember(["getInput", "getMultilineInput"]).getReturn()
3639
}
3740

3841
private class GitHubActionsSource extends RemoteFlowSource {

javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ nodes
1616
| actions.js:5:10:5:50 | github. ... message |
1717
| actions.js:5:10:5:50 | github. ... message |
1818
| actions.js:5:10:5:50 | github. ... message |
19+
| actions.js:6:10:6:33 | core.ge ... mbers') |
20+
| actions.js:6:10:6:33 | core.ge ... mbers') |
21+
| actions.js:6:10:6:33 | core.ge ... mbers') |
22+
| actions.js:7:10:7:42 | core.ge ... mbers') |
23+
| actions.js:7:10:7:42 | core.ge ... mbers') |
24+
| actions.js:7:10:7:53 | core.ge ... n('\\n') |
25+
| actions.js:7:10:7:53 | core.ge ... n('\\n') |
1926
| angularjs.js:10:22:10:36 | location.search |
2027
| angularjs.js:10:22:10:36 | location.search |
2128
| angularjs.js:10:22:10:36 | location.search |
@@ -195,6 +202,11 @@ edges
195202
| NoSQLCodeInjection.js:22:36:22:48 | req.body.name | NoSQLCodeInjection.js:22:24:22:48 | "name = ... dy.name |
196203
| NoSQLCodeInjection.js:22:36:22:48 | req.body.name | NoSQLCodeInjection.js:22:24:22:48 | "name = ... dy.name |
197204
| actions.js:5:10:5:50 | github. ... message | actions.js:5:10:5:50 | github. ... message |
205+
| actions.js:6:10:6:33 | core.ge ... mbers') | actions.js:6:10:6:33 | core.ge ... mbers') |
206+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
207+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
208+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
209+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
198210
| angularjs.js:10:22:10:36 | location.search | angularjs.js:10:22:10:36 | location.search |
199211
| angularjs.js:13:23:13:37 | location.search | angularjs.js:13:23:13:37 | location.search |
200212
| angularjs.js:16:28:16:42 | location.search | angularjs.js:16:28:16:42 | location.search |
@@ -311,6 +323,8 @@ edges
311323
| NoSQLCodeInjection.js:19:24:19:48 | "name = ... dy.name | NoSQLCodeInjection.js:19:36:19:43 | req.body | NoSQLCodeInjection.js:19:24:19:48 | "name = ... dy.name | This code execution depends on a $@. | NoSQLCodeInjection.js:19:36:19:43 | req.body | user-provided value |
312324
| NoSQLCodeInjection.js:22:24:22:48 | "name = ... dy.name | NoSQLCodeInjection.js:22:36:22:43 | req.body | NoSQLCodeInjection.js:22:24:22:48 | "name = ... dy.name | This code execution depends on a $@. | NoSQLCodeInjection.js:22:36:22:43 | req.body | user-provided value |
313325
| actions.js:5:10:5:50 | github. ... message | actions.js:5:10:5:50 | github. ... message | actions.js:5:10:5:50 | github. ... message | This code execution depends on a $@. | actions.js:5:10:5:50 | github. ... message | user-provided value |
326+
| actions.js:6:10:6:33 | core.ge ... mbers') | actions.js:6:10:6:33 | core.ge ... mbers') | actions.js:6:10:6:33 | core.ge ... mbers') | This code execution depends on a $@. | actions.js:6:10:6:33 | core.ge ... mbers') | user-provided value |
327+
| actions.js:7:10:7:53 | core.ge ... n('\\n') | actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') | This code execution depends on a $@. | actions.js:7:10:7:42 | core.ge ... mbers') | user-provided value |
314328
| angularjs.js:10:22:10:36 | location.search | angularjs.js:10:22:10:36 | location.search | angularjs.js:10:22:10:36 | location.search | This code execution depends on a $@. | angularjs.js:10:22:10:36 | location.search | user-provided value |
315329
| angularjs.js:13:23:13:37 | location.search | angularjs.js:13:23:13:37 | location.search | angularjs.js:13:23:13:37 | location.search | This code execution depends on a $@. | angularjs.js:13:23:13:37 | location.search | user-provided value |
316330
| angularjs.js:16:28:16:42 | location.search | angularjs.js:16:28:16:42 | location.search | angularjs.js:16:28:16:42 | location.search | This code execution depends on a $@. | angularjs.js:16:28:16:42 | location.search | user-provided value |

javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ nodes
1616
| actions.js:5:10:5:50 | github. ... message |
1717
| actions.js:5:10:5:50 | github. ... message |
1818
| actions.js:5:10:5:50 | github. ... message |
19+
| actions.js:6:10:6:33 | core.ge ... mbers') |
20+
| actions.js:6:10:6:33 | core.ge ... mbers') |
21+
| actions.js:6:10:6:33 | core.ge ... mbers') |
22+
| actions.js:7:10:7:42 | core.ge ... mbers') |
23+
| actions.js:7:10:7:42 | core.ge ... mbers') |
24+
| actions.js:7:10:7:53 | core.ge ... n('\\n') |
25+
| actions.js:7:10:7:53 | core.ge ... n('\\n') |
1926
| angularjs.js:10:22:10:36 | location.search |
2027
| angularjs.js:10:22:10:36 | location.search |
2128
| angularjs.js:10:22:10:36 | location.search |
@@ -199,6 +206,11 @@ edges
199206
| NoSQLCodeInjection.js:22:36:22:48 | req.body.name | NoSQLCodeInjection.js:22:24:22:48 | "name = ... dy.name |
200207
| NoSQLCodeInjection.js:22:36:22:48 | req.body.name | NoSQLCodeInjection.js:22:24:22:48 | "name = ... dy.name |
201208
| actions.js:5:10:5:50 | github. ... message | actions.js:5:10:5:50 | github. ... message |
209+
| actions.js:6:10:6:33 | core.ge ... mbers') | actions.js:6:10:6:33 | core.ge ... mbers') |
210+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
211+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
212+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
213+
| actions.js:7:10:7:42 | core.ge ... mbers') | actions.js:7:10:7:53 | core.ge ... n('\\n') |
202214
| angularjs.js:10:22:10:36 | location.search | angularjs.js:10:22:10:36 | location.search |
203215
| angularjs.js:13:23:13:37 | location.search | angularjs.js:13:23:13:37 | location.search |
204216
| angularjs.js:16:28:16:42 | location.search | angularjs.js:16:28:16:42 | location.search |

0 commit comments

Comments
 (0)