Can't find dataflow for js in Vue module
- Vorherrschende Sprache
- CodeQL
- Sterne
- 10.1k
- Forks
- 2.1k
- Ø Merge
- 2 T. 15 Std.
- Gemergte PRs (30 T.)
- 141
Beschreibung
**Can't find dataflow for js in Vue module**
```
Vue xss test
网站列表
{{ site.name }}
{{reflect }}
new Vue({
el: '#app',
data() {
return {
info: null
}
},
mounted() {
axios
.get('http://127.0.0.1/test.json')
.then(response => (this.info = response.data.sites))
.catch(function(error) { // 请求失败处理
console.log(error);
});
}
})
```
There will be a xss Vulnerability if the test.json return an dangerous payload and data flows to v-html。
I try to find the dataflow to discover this kind of Vulnerability,but find the dataflow in Vue is none。
The rule is like this:
```
import javascript
import DataFlow::PathGraph
class XSSTracker extends TaintTracking::Configuration {
XSSTracker() {
// unique identifier for this configuration
this = "XSSTracker"
}
override predicate isSource(DataFlow::Node source) {
exists( MethodCallExpr m,Parameter p,VarRef v|
m.getCalleeName()="then"
and p.getParent() = m.getAnArgument()
and p.toString()=v.toString()|
source.asExpr() =v.getParent().getParent() )
}
override predicate isSink(DataFlow::Node sink) {
exists(Vue::VHtmlAttribute v, Label l,DotExpr p |
l.getParent() = p and
v.getFile() = p.getFile() and
v.getAttr().getValue().indexOf(l.toString())>=0
|l.getParent() = sink.asExpr()
)
}
}
from XSSTracker pt, DataFlow::PathNode source, DataFlow::PathNode sink
where pt.hasFlowPath(source, sink)
select sink.getNode(), source, sink, "find a xss dataflow"
```
The sink is **this.info** and the source is **response.data.sites** can be found
,but the dataflow from source to sink in code **this.info = response.data.sites** can't be found。
How can I solve this problem by codeql?
and i want to know if javascript code in Vue can be connect by TaintTracking analysis?
Thanks~
Beitragsleitfaden
Bewertung
Dieses Issue wurde noch nicht bewertet.