Skip to content

Commit 2739b9c

Browse files
authored
Merge pull request #10390 from erik-krogh/unmentionedGuard
QL: add unmentioned guard class query
2 parents 86417ce + a567c13 commit 2739b9c

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

javascript/ql/lib/semmle/javascript/security/dataflow/DomBasedXssQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class Configuration extends TaintTracking::Configuration {
7575
}
7676

7777
override predicate isSanitizerGuard(TaintTracking::SanitizerGuardNode guard) {
78-
guard instanceof PrefixStringSanitizer or
78+
guard instanceof PrefixStringSanitizerActivated or
7979
guard instanceof QuoteGuard or
8080
guard instanceof ContainsHtmlGuard
8181
}

javascript/ql/lib/semmle/javascript/security/dataflow/UnsafeHtmlConstructionQuery.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ class Configration extends TaintTracking::Configuration {
4343
override predicate isSanitizerGuard(TaintTracking::SanitizerGuardNode guard) {
4444
guard instanceof PrefixStringSanitizer or
4545
guard instanceof QuoteGuard or
46-
guard instanceof ContainsHtmlGuard
46+
guard instanceof ContainsHtmlGuard or
47+
guard instanceof TypeTestGuard
4748
}
4849
}
4950

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @name Unmentioned guard class
3+
* @description A sanitizer guard should be included in the `isSanitizerGuard` predicate.
4+
* @kind problem
5+
* @problem.severity warning
6+
* @id ql/unmentioned-guard
7+
* @tags correctness
8+
* maintainability
9+
* @precision medium
10+
*/
11+
12+
import ql
13+
14+
class SanGuard extends Class {
15+
SanGuard() {
16+
exists(Class sup |
17+
sup = this.getASuperType().getResolvedType().(ClassType).getDeclaration() and
18+
sup.getName() = ["SanitizerGuardNode", "SanitizerGuard", "BarrierGuardNode", "BarrierGuard"] and
19+
sup.getLocation().getFile() != this.getLocation().getFile()
20+
)
21+
}
22+
}
23+
24+
from SanGuard guard
25+
where
26+
not exists(TypeExpr t | t.getResolvedType().(ClassType).getDeclaration() = guard) and
27+
not guard.hasAnnotation("deprecated")
28+
select guard, "Guard class is not mentioned anywhere"

0 commit comments

Comments
 (0)