Skip to content

Commit cab1675

Browse files
Jami CogswellJami Cogswell
authored andcommitted
Convert XssReact.ql to use the new dataflow API
1 parent d29cb46 commit cab1675

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

javascript/src/security/CWE-079/XSSReact.ql

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,21 @@ import javascript
1616
private import semmle.javascript.security.dataflow.XssThroughDomCustomizations
1717
private import semmle.javascript.security.dataflow.DomBasedXssCustomizations
1818
private import semmle.javascript.security.dataflow.Xss::Shared as Shared
19-
import DataFlow::PathGraph
19+
import XssFlow::PathGraph
2020

2121
/**
2222
* A taint-tracking configuration for reasoning about XSS.
2323
*/
24-
class XssConfiguration extends TaintTracking::Configuration {
25-
XssConfiguration() { this = "XssReact" }
24+
module XssConfig implements DataFlow::ConfigSig {
25+
predicate isSource(DataFlow::Node source) { source instanceof XssThroughDom::Source }
2626

27-
override predicate isSource(DataFlow::Node source) { source instanceof XssThroughDom::Source }
27+
predicate isSink(DataFlow::Node sink) { sink instanceof DomBasedXss::Sink }
2828

29-
override predicate isSink(DataFlow::Node sink) { sink instanceof DomBasedXss::Sink }
30-
31-
override predicate isSanitizer(DataFlow::Node node) {
32-
super.isSanitizer(node) or
33-
node instanceof DomBasedXss::Sanitizer
34-
}
29+
predicate isBarrier(DataFlow::Node node) { node instanceof DomBasedXss::Sanitizer }
3530
}
3631

32+
module XssFlow = TaintTracking::Global<XssConfig>;
33+
3734
// Additional Source
3835
class ReactUseQueryParams extends XssThroughDom::Source {
3936
ReactUseQueryParams() {
@@ -42,7 +39,7 @@ class ReactUseQueryParams extends XssThroughDom::Source {
4239
}
4340
}
4441

45-
from XssConfiguration cfg, DataFlow::PathNode source, DataFlow::PathNode sink
46-
where cfg.hasFlowPath(source, sink)
42+
from XssFlow::PathNode source, XssFlow::PathNode sink
43+
where XssFlow::flowPath(source, sink)
4744
select sink.getNode(), source, sink, "Cross-site scripting vulnerability due to $@.",
4845
source.getNode(), "user-provided value"

0 commit comments

Comments
 (0)