Skip to content

Commit 0ab1848

Browse files
Jami CogswellJami Cogswell
authored andcommitted
JS/Python/Ruby: use 'SharedModelValidation' file
1 parent ddb5d92 commit 0ab1848

File tree

3 files changed

+39
-27
lines changed

3 files changed

+39
-27
lines changed

javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -653,22 +653,26 @@ module ModelOutput {
653653

654654
import Cached
655655
import Specific::ModelOutputSpecific
656+
private import SharedModelValidation
656657

657658
private string getInvalidModelKind() {
659+
exists(string kind | summaryModel(_, _, _, _, kind) |
660+
not kind instanceof ValidSummaryKind and
661+
result = "Invalid kind \"" + kind + "\" in summary model."
662+
)
663+
or
658664
exists(string kind | sinkModel(_, _, kind) |
659-
not kind =
660-
[
661-
"request-forgery", "jndi-injection", "ldap-injection", "sql-injection", "log-injection",
662-
"mvel-injection", "xpath-injection", "groovy-injection", "html-injection", "js-injection",
663-
"ognl-injection", "intent-redirection", "pending-intents", "url-redirection",
664-
"path-injection", "file-content-store", "hostname-verification", "response-splitting",
665-
"information-leak", "xslt-injection", "jexl-injection", "bean-validation",
666-
"template-injection", "fragment-injection", "command-injection"
667-
] and
665+
not kind instanceof ValidSinkKind and
668666
not kind.matches("credentials-%") and
669667
not kind.matches("test-%") and
670668
result = "Invalid kind \"" + kind + "\" in sink model."
671669
)
670+
or
671+
exists(string kind | sourceModel(_, _, kind) |
672+
not kind instanceof ValidSourceKind and
673+
not kind.matches("qltest%") and
674+
result = "Invalid kind \"" + kind + "\" in source model."
675+
)
672676
}
673677

674678
/**

python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -653,22 +653,26 @@ module ModelOutput {
653653

654654
import Cached
655655
import Specific::ModelOutputSpecific
656+
private import SharedModelValidation
656657

657658
private string getInvalidModelKind() {
659+
exists(string kind | summaryModel(_, _, _, _, kind) |
660+
not kind instanceof ValidSummaryKind and
661+
result = "Invalid kind \"" + kind + "\" in summary model."
662+
)
663+
or
658664
exists(string kind | sinkModel(_, _, kind) |
659-
not kind =
660-
[
661-
"request-forgery", "jndi-injection", "ldap-injection", "sql-injection", "log-injection",
662-
"mvel-injection", "xpath-injection", "groovy-injection", "html-injection", "js-injection",
663-
"ognl-injection", "intent-redirection", "pending-intents", "url-redirection",
664-
"path-injection", "file-content-store", "hostname-verification", "response-splitting",
665-
"information-leak", "xslt-injection", "jexl-injection", "bean-validation",
666-
"template-injection", "fragment-injection", "command-injection"
667-
] and
665+
not kind instanceof ValidSinkKind and
668666
not kind.matches("credentials-%") and
669667
not kind.matches("test-%") and
670668
result = "Invalid kind \"" + kind + "\" in sink model."
671669
)
670+
or
671+
exists(string kind | sourceModel(_, _, kind) |
672+
not kind instanceof ValidSourceKind and
673+
not kind.matches("qltest%") and
674+
result = "Invalid kind \"" + kind + "\" in source model."
675+
)
672676
}
673677

674678
/**

ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -653,22 +653,26 @@ module ModelOutput {
653653

654654
import Cached
655655
import Specific::ModelOutputSpecific
656+
private import SharedModelValidation
656657

657658
private string getInvalidModelKind() {
659+
exists(string kind | summaryModel(_, _, _, _, kind) |
660+
not kind instanceof ValidSummaryKind and
661+
result = "Invalid kind \"" + kind + "\" in summary model."
662+
)
663+
or
658664
exists(string kind | sinkModel(_, _, kind) |
659-
not kind =
660-
[
661-
"request-forgery", "jndi-injection", "ldap-injection", "sql-injection", "log-injection",
662-
"mvel-injection", "xpath-injection", "groovy-injection", "html-injection", "js-injection",
663-
"ognl-injection", "intent-redirection", "pending-intents", "url-redirection",
664-
"path-injection", "file-content-store", "hostname-verification", "response-splitting",
665-
"information-leak", "xslt-injection", "jexl-injection", "bean-validation",
666-
"template-injection", "fragment-injection", "command-injection"
667-
] and
665+
not kind instanceof ValidSinkKind and
668666
not kind.matches("credentials-%") and
669667
not kind.matches("test-%") and
670668
result = "Invalid kind \"" + kind + "\" in sink model."
671669
)
670+
or
671+
exists(string kind | sourceModel(_, _, kind) |
672+
not kind instanceof ValidSourceKind and
673+
not kind.matches("qltest%") and
674+
result = "Invalid kind \"" + kind + "\" in source model."
675+
)
672676
}
673677

674678
/**

0 commit comments

Comments
 (0)