JS: Port Actions sources based on PR from R3x

This commit is contained in:
Asger F
2023-04-17 11:27:33 +02:00
parent fdd975b992
commit 3d208c0a62
2 changed files with 41 additions and 0 deletions

View File

@@ -67,6 +67,7 @@ import semmle.javascript.YAML
import semmle.javascript.dataflow.DataFlow
import semmle.javascript.dataflow.TaintTracking
import semmle.javascript.dataflow.TypeInference
import semmle.javascript.frameworks.ActionsLib
import semmle.javascript.frameworks.Angular2
import semmle.javascript.frameworks.AngularJS
import semmle.javascript.frameworks.Anser

View File

@@ -0,0 +1,40 @@
private import javascript
private API::Node payload() {
result = API::moduleImport("@actions/github").getMember("context").getMember("payload")
}
private API::Node workflowRun() { result = payload().getMember("workflow_run") }
private API::Node commitObj() {
result = workflowRun().getMember("head_commit")
or
result = payload().getMember("commits").getAMember()
}
private API::Node pullRequest() {
result = payload().getMember("pull_request")
or
result = commitObj().getMember("pull_requests").getAMember()
}
private API::Node taintSource() {
result = pullRequest().getMember("head").getMember(["ref", "label"])
or
result =
[pullRequest(), payload().getMember(["discussion", "issue"])].getMember(["title", "body"])
or
result = payload().getMember(["review", "review_comment", "comment"]).getMember("body")
or
result = workflowRun().getMember("head_branch")
or
result = commitObj().getMember("message")
or
result = commitObj().getMember("author").getMember(["name", "email"])
}
private class GitHubActionsSource extends RemoteFlowSource {
GitHubActionsSource() { this = taintSource().asSource() }
override string getSourceType() { result = "GitHub Actions input" }
}