Skip to content

Commit f5b53dc

Browse files
Jami CogswellJami Cogswell
authored andcommitted
Convert BrowserInjectionFieldQuery.ql to use the new dataflow API
1 parent 7527b7a commit f5b53dc

File tree

1 file changed

+19
-20
lines changed

1 file changed

+19
-20
lines changed

javascript/src/audit/browserAPI/BrowserInjectionFieldQuery.ql

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,36 @@
1111

1212

1313
import javascript
14-
import DataFlow::PathGraph
14+
import ConfigFlow::PathGraph
1515
import DataFlow
1616
import browserextension.BrowserInjectionFieldCustomizations::BrowserInjection
1717
private import semmle.javascript.security.dataflow.XssThroughDomCustomizations::XssThroughDom as XssThroughDom
18-
18+
1919
//private import semmle.javascript.security.dataflow.DomBasedXssCustomizations
2020
//private import semmle.javascript.security.dataflow.XssThroughDomCustomizations::XssThroughDom as XssThroughDom
21-
21+
2222
//private import semmle.javascript.security.dataflow.CodeInjectionCustomizations
23-
24-
class Configuration extends TaintTracking::Configuration {
25-
Configuration() { this = "BrowserInjection" }
26-
27-
override predicate isSource(DataFlow::Node source) {
23+
24+
module Config implements DataFlow::ConfigSig {
25+
26+
predicate isSource(DataFlow::Node source) {
2827
source instanceof Source
2928
}
30-
31-
override predicate isSink(DataFlow::Node sink) {
29+
30+
predicate isSink(DataFlow::Node sink) {
3231
sink instanceof Sink
3332
}
34-
35-
override predicate isAdditionalLoadStep(DataFlow::Node pred, DataFlow::Node succ, string prop) {
36-
(pred = succ) and
33+
34+
additional predicate isAdditionalLoadStep(DataFlow::Node pred, DataFlow::Node succ, string prop) {
35+
(pred = succ) and
3736
((pred instanceof Update and prop = ["url", "openerTabId"])
3837
or
3938
(pred instanceof DownloadsDangerous and prop = ["body", "conflictAction","filename", "url", "method"])
4039
or
4140
(pred instanceof Delete and prop = ["startTime", "endTime", "url"])
4241
//or
4342
//(pred instanceof SetContentSettings and succ instanceof SetContentSettings and prop = any(string s))
44-
//or
43+
//or
4544
//(pred instanceof GetContentSettings and succ instanceof GetContentSettings and prop = any(string s))
4645
//(pred instanceof StorageSet and succ instanceof StorageSet and prop = any(string s))
4746
//or
@@ -58,11 +57,11 @@
5857
(pred = succ and pred instanceof CreateWindows and prop = ["url"]))
5958
}
6059
}
61-
62-
63-
from Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink
64-
where cfg.hasFlowPath(source, sink)
60+
61+
module ConfigFlow = TaintTracking::Global<Config>;
62+
63+
64+
from ConfigFlow::PathNode source, ConfigFlow::PathNode sink
65+
where ConfigFlow::flowPath(source, sink)
6566
select sink.getNode(), source, sink, sink.getNode() + " depends on a $@.",
6667
source.getNode(), "user-provided value"
67-
68-

0 commit comments

Comments
 (0)