Skip to content

Commit ad14bba

Browse files
committed
create a customizations file for StoredXss
1 parent 162a499 commit ad14bba

3 files changed

Lines changed: 54 additions & 39 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Provides default sources, sinks and sanitizers for reasoning about
3+
* stored cross-site scripting vulnerabilities.
4+
*/
5+
6+
import javascript
7+
8+
module StoredXss {
9+
private import Xss::Shared as Shared
10+
11+
/** A data flow source for stored XSS vulnerabilities. */
12+
abstract class Source extends Shared::Source { }
13+
14+
/** A data flow sink for stored XSS vulnerabilities. */
15+
abstract class Sink extends Shared::Sink { }
16+
17+
/** A sanitizer for stored XSS vulnerabilities. */
18+
abstract class Sanitizer extends Shared::Sanitizer { }
19+
20+
/** A sanitizer guard for stored XSS vulnerabilities. */
21+
abstract class SanitizerGuard extends Shared::SanitizerGuard { }
22+
23+
/** An arbitrary XSS sink, considered as a flow sink for stored XSS. */
24+
private class AnySink extends Sink {
25+
AnySink() { this instanceof Shared::Sink }
26+
}
27+
28+
/**
29+
* A regexp replacement involving an HTML meta-character, viewed as a sanitizer for
30+
* XSS vulnerabilities.
31+
*
32+
* The XSS queries do not attempt to reason about correctness or completeness of sanitizers,
33+
* so any such replacement stops taint propagation.
34+
*/
35+
private class MetacharEscapeSanitizer extends Sanitizer, Shared::MetacharEscapeSanitizer { }
36+
37+
private class UriEncodingSanitizer extends Sanitizer, Shared::UriEncodingSanitizer { }
38+
39+
private class SerializeJavascriptSanitizer extends Sanitizer, Shared::SerializeJavascriptSanitizer {
40+
}
41+
42+
private class IsEscapedInSwitchSanitizer extends Sanitizer, Shared::IsEscapedInSwitchSanitizer { }
43+
44+
private class QuoteGuard extends SanitizerGuard, Shared::QuoteGuard { }
45+
46+
private class ContainsHtmlGuard extends SanitizerGuard, Shared::ContainsHtmlGuard { }
47+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
import javascript
7-
import Xss::StoredXss
7+
import StoredXssCustomizations::StoredXss
88

99
/**
1010
* A taint-tracking configuration for reasoning about XSS.

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

Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -162,44 +162,12 @@ deprecated module ReflectedXss {
162162
import ReflectedXssCustomizations::ReflectedXss
163163
}
164164

165-
/** Provides classes and predicates for the stored XSS query. */
166-
module StoredXss {
167-
/** A data flow source for stored XSS vulnerabilities. */
168-
abstract class Source extends Shared::Source { }
169-
170-
/** A data flow sink for stored XSS vulnerabilities. */
171-
abstract class Sink extends Shared::Sink { }
172-
173-
/** A sanitizer for stored XSS vulnerabilities. */
174-
abstract class Sanitizer extends Shared::Sanitizer { }
175-
176-
/** A sanitizer guard for stored XSS vulnerabilities. */
177-
abstract class SanitizerGuard extends Shared::SanitizerGuard { }
178-
179-
/** An arbitrary XSS sink, considered as a flow sink for stored XSS. */
180-
private class AnySink extends Sink {
181-
AnySink() { this instanceof Shared::Sink }
182-
}
183-
184-
/**
185-
* A regexp replacement involving an HTML meta-character, viewed as a sanitizer for
186-
* XSS vulnerabilities.
187-
*
188-
* The XSS queries do not attempt to reason about correctness or completeness of sanitizers,
189-
* so any such replacement stops taint propagation.
190-
*/
191-
private class MetacharEscapeSanitizer extends Sanitizer, Shared::MetacharEscapeSanitizer { }
192-
193-
private class UriEncodingSanitizer extends Sanitizer, Shared::UriEncodingSanitizer { }
194-
195-
private class SerializeJavascriptSanitizer extends Sanitizer, Shared::SerializeJavascriptSanitizer {
196-
}
197-
198-
private class IsEscapedInSwitchSanitizer extends Sanitizer, Shared::IsEscapedInSwitchSanitizer { }
199-
200-
private class QuoteGuard extends SanitizerGuard, Shared::QuoteGuard { }
201-
202-
private class ContainsHtmlGuard extends SanitizerGuard, Shared::ContainsHtmlGuard { }
165+
/**
166+
* DEPRECATED: Use the `StoredXssCustomizations.qll` file instead.
167+
* Provides classes and predicates for the stored XSS query.
168+
*/
169+
deprecated module StoredXss {
170+
import StoredXssCustomizations::StoredXss
203171
}
204172

205173
/** Provides classes and predicates for the XSS through DOM query. */

0 commit comments

Comments
 (0)