mirror of
https://github.com/github/codeql.git
synced 2026-04-26 09:15:12 +02:00
Merge pull request #12802 from erik-krogh/history-xss
JS: add browser history as XSS sink
This commit is contained in:
@@ -222,6 +222,8 @@ module ClientSideUrlRedirect {
|
||||
HistoryWriteUrlSink() {
|
||||
this = History::getBrowserHistory().getMember(["push", "replace"]).getACall().getArgument(0)
|
||||
}
|
||||
|
||||
override predicate isXssSink() { any() }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1115,6 +1115,10 @@ nodes
|
||||
| tst.js:491:23:491:35 | location.hash |
|
||||
| tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash |
|
||||
| tst.js:494:18:494:30 | location.hash |
|
||||
| tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| typeahead.js:20:13:20:45 | target |
|
||||
| typeahead.js:20:22:20:45 | documen ... .search |
|
||||
| typeahead.js:20:22:20:45 | documen ... .search |
|
||||
@@ -2263,6 +2267,10 @@ edges
|
||||
| tst.js:491:23:491:35 | location.hash | tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:491:23:491:35 | location.hash | tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:491:23:491:35 | location.hash | tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| typeahead.js:20:13:20:45 | target | typeahead.js:21:12:21:17 | target |
|
||||
| typeahead.js:20:22:20:45 | documen ... .search | typeahead.js:20:13:20:45 | target |
|
||||
| typeahead.js:20:22:20:45 | documen ... .search | typeahead.js:20:13:20:45 | target |
|
||||
@@ -2550,6 +2558,7 @@ edges
|
||||
| tst.js:476:20:476:22 | url | tst.js:471:13:471:36 | documen ... .search | tst.js:476:20:476:22 | url | Cross-site scripting vulnerability due to $@. | tst.js:471:13:471:36 | documen ... .search | user-provided value |
|
||||
| tst.js:486:22:486:24 | url | tst.js:471:13:471:36 | documen ... .search | tst.js:486:22:486:24 | url | Cross-site scripting vulnerability due to $@. | tst.js:471:13:471:36 | documen ... .search | user-provided value |
|
||||
| tst.js:491:23:491:45 | locatio ... bstr(1) | tst.js:491:23:491:35 | location.hash | tst.js:491:23:491:45 | locatio ... bstr(1) | Cross-site scripting vulnerability due to $@. | tst.js:491:23:491:35 | location.hash | user-provided value |
|
||||
| tst.js:494:18:494:40 | locatio ... bstr(1) | tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) | Cross-site scripting vulnerability due to $@. | tst.js:494:18:494:30 | location.hash | user-provided value |
|
||||
| typeahead.js:25:18:25:20 | val | typeahead.js:20:22:20:45 | documen ... .search | typeahead.js:25:18:25:20 | val | Cross-site scripting vulnerability due to $@. | typeahead.js:20:22:20:45 | documen ... .search | user-provided value |
|
||||
| v-html.vue:2:8:2:23 | v-html=tainted | v-html.vue:6:42:6:58 | document.location | v-html.vue:2:8:2:23 | v-html=tainted | Cross-site scripting vulnerability due to $@. | v-html.vue:6:42:6:58 | document.location | user-provided value |
|
||||
| various-concat-obfuscations.js:4:4:4:31 | "<div>" ... </div>" | various-concat-obfuscations.js:2:16:2:39 | documen ... .search | various-concat-obfuscations.js:4:4:4:31 | "<div>" ... </div>" | Cross-site scripting vulnerability due to $@. | various-concat-obfuscations.js:2:16:2:39 | documen ... .search | user-provided value |
|
||||
|
||||
@@ -1127,6 +1127,10 @@ nodes
|
||||
| tst.js:491:23:491:35 | location.hash |
|
||||
| tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash |
|
||||
| tst.js:494:18:494:30 | location.hash |
|
||||
| tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| typeahead.js:9:28:9:30 | loc |
|
||||
| typeahead.js:9:28:9:30 | loc |
|
||||
| typeahead.js:9:28:9:30 | loc |
|
||||
@@ -2325,6 +2329,10 @@ edges
|
||||
| tst.js:491:23:491:35 | location.hash | tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:491:23:491:35 | location.hash | tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:491:23:491:35 | location.hash | tst.js:491:23:491:45 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| tst.js:494:18:494:30 | location.hash | tst.js:494:18:494:40 | locatio ... bstr(1) |
|
||||
| typeahead.js:9:28:9:30 | loc | typeahead.js:10:16:10:18 | loc |
|
||||
| typeahead.js:9:28:9:30 | loc | typeahead.js:10:16:10:18 | loc |
|
||||
| typeahead.js:9:28:9:30 | loc | typeahead.js:10:16:10:18 | loc |
|
||||
|
||||
@@ -489,4 +489,7 @@ function urlStuff() {
|
||||
window.open(location.hash.substr(1)); // OK - any JavaScript is executed in another context
|
||||
|
||||
navigation.navigate(location.hash.substr(1)); // NOT OK
|
||||
|
||||
const myHistory = require('history').createBrowserHistory();
|
||||
myHistory.push(location.hash.substr(1)); // NOT OK
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user