mirror of
https://github.com/github/codeql.git
synced 2026-04-30 19:26:02 +02:00
JavaScript: Learn that receivers of DOM event handlers are themselves DOM nodes.
This commit is contained in:
@@ -353,6 +353,13 @@ module DOM {
|
||||
this = DataFlow::thisNode(eachCall.getCallback(0).getFunction()) or
|
||||
this = eachCall.getABoundCallbackParameter(0, 1)
|
||||
)
|
||||
or
|
||||
// A receiver node of an event handler on a DOM node
|
||||
exists(string handler | handler.matches("on%") |
|
||||
this = domValueRef().getAPropertySource(handler).(DataFlow::FunctionNode).getReceiver()
|
||||
)
|
||||
or
|
||||
this = DataFlow::thisNode(any(EventHandlerCode evt))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,11 @@ test_locationRef
|
||||
test_domValueRef
|
||||
| customization.js:4:3:4:20 | doc.getElementById |
|
||||
| customization.js:4:3:4:28 | doc.get ... 'test') |
|
||||
| event-handler-receiver.html:4:20:4:19 | this |
|
||||
| event-handler-receiver.js:1:1:1:23 | documen ... entById |
|
||||
| event-handler-receiver.js:1:1:1:32 | documen ... my-id') |
|
||||
| event-handler-receiver.js:1:44:1:43 | this |
|
||||
| event-handler-receiver.js:2:3:2:17 | this.parentNode |
|
||||
| nameditems.js:1:1:1:23 | documen ... entById |
|
||||
| nameditems.js:1:1:1:30 | documen ... ('foo') |
|
||||
| nameditems.js:1:1:2:19 | documen ... em('x') |
|
||||
|
||||
@@ -18,3 +18,14 @@ function WorkerGlobalScope() {}
|
||||
|
||||
/** @type {WorkerLocation} */
|
||||
WorkerGlobalScope.prototype.location;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {EventTarget}
|
||||
*/
|
||||
function Node() {}
|
||||
|
||||
/**
|
||||
* @type {Node}
|
||||
*/
|
||||
Node.prototype.parentNode;
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
| query-tests/Security/CWE-079/DomBasedXss/event-handler-receiver.js:2 | expected an alert, but found none | NOT OK | |
|
||||
|
||||
@@ -118,6 +118,11 @@ nodes
|
||||
| dates.js:18:31:18:66 | `Time i ... aint)}` |
|
||||
| dates.js:18:42:18:64 | datefor ... taint) |
|
||||
| dates.js:18:59:18:63 | taint |
|
||||
| event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| event-handler-receiver.js:2:49:2:56 | location |
|
||||
| event-handler-receiver.js:2:49:2:56 | location |
|
||||
| event-handler-receiver.js:2:49:2:61 | location.href |
|
||||
| express.js:7:15:7:33 | req.param("wobble") |
|
||||
| express.js:7:15:7:33 | req.param("wobble") |
|
||||
| express.js:7:15:7:33 | req.param("wobble") |
|
||||
@@ -751,6 +756,10 @@ edges
|
||||
| dates.js:18:42:18:64 | datefor ... taint) | dates.js:18:31:18:66 | `Time i ... aint)}` |
|
||||
| dates.js:18:42:18:64 | datefor ... taint) | dates.js:18:31:18:66 | `Time i ... aint)}` |
|
||||
| dates.js:18:59:18:63 | taint | dates.js:18:42:18:64 | datefor ... taint) |
|
||||
| event-handler-receiver.js:2:49:2:56 | location | event-handler-receiver.js:2:49:2:61 | location.href |
|
||||
| event-handler-receiver.js:2:49:2:56 | location | event-handler-receiver.js:2:49:2:61 | location.href |
|
||||
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| express.js:7:15:7:33 | req.param("wobble") | express.js:7:15:7:33 | req.param("wobble") |
|
||||
| jquery.js:2:7:2:40 | tainted | jquery.js:7:20:7:26 | tainted |
|
||||
| jquery.js:2:7:2:40 | tainted | jquery.js:8:28:8:34 | tainted |
|
||||
@@ -1255,6 +1264,7 @@ edges
|
||||
| dates.js:13:31:13:72 | `Time i ... time)}` | dates.js:9:36:9:50 | window.location | dates.js:13:31:13:72 | `Time i ... time)}` | Cross-site scripting vulnerability due to $@. | dates.js:9:36:9:50 | window.location | user-provided value |
|
||||
| dates.js:16:31:16:69 | `Time i ... aint)}` | dates.js:9:36:9:50 | window.location | dates.js:16:31:16:69 | `Time i ... aint)}` | Cross-site scripting vulnerability due to $@. | dates.js:9:36:9:50 | window.location | user-provided value |
|
||||
| dates.js:18:31:18:66 | `Time i ... aint)}` | dates.js:9:36:9:50 | window.location | dates.js:18:31:18:66 | `Time i ... aint)}` | Cross-site scripting vulnerability due to $@. | dates.js:9:36:9:50 | window.location | user-provided value |
|
||||
| event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | event-handler-receiver.js:2:49:2:56 | location | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | Cross-site scripting vulnerability due to $@. | event-handler-receiver.js:2:49:2:56 | location | user-provided value |
|
||||
| express.js:7:15:7:33 | req.param("wobble") | express.js:7:15:7:33 | req.param("wobble") | express.js:7:15:7:33 | req.param("wobble") | Cross-site scripting vulnerability due to $@. | express.js:7:15:7:33 | req.param("wobble") | user-provided value |
|
||||
| jquery.js:7:5:7:34 | "<div i ... + "\\">" | jquery.js:2:17:2:40 | documen ... .search | jquery.js:7:5:7:34 | "<div i ... + "\\">" | Cross-site scripting vulnerability due to $@. | jquery.js:2:17:2:40 | documen ... .search | user-provided value |
|
||||
| jquery.js:8:18:8:34 | "XSS: " + tainted | jquery.js:2:17:2:33 | document.location | jquery.js:8:18:8:34 | "XSS: " + tainted | Cross-site scripting vulnerability due to $@. | jquery.js:2:17:2:33 | document.location | user-provided value |
|
||||
|
||||
@@ -118,6 +118,11 @@ nodes
|
||||
| dates.js:18:31:18:66 | `Time i ... aint)}` |
|
||||
| dates.js:18:42:18:64 | datefor ... taint) |
|
||||
| dates.js:18:59:18:63 | taint |
|
||||
| event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| event-handler-receiver.js:2:49:2:56 | location |
|
||||
| event-handler-receiver.js:2:49:2:56 | location |
|
||||
| event-handler-receiver.js:2:49:2:61 | location.href |
|
||||
| express.js:7:15:7:33 | req.param("wobble") |
|
||||
| express.js:7:15:7:33 | req.param("wobble") |
|
||||
| express.js:7:15:7:33 | req.param("wobble") |
|
||||
@@ -762,6 +767,10 @@ edges
|
||||
| dates.js:18:42:18:64 | datefor ... taint) | dates.js:18:31:18:66 | `Time i ... aint)}` |
|
||||
| dates.js:18:42:18:64 | datefor ... taint) | dates.js:18:31:18:66 | `Time i ... aint)}` |
|
||||
| dates.js:18:59:18:63 | taint | dates.js:18:42:18:64 | datefor ... taint) |
|
||||
| event-handler-receiver.js:2:49:2:56 | location | event-handler-receiver.js:2:49:2:61 | location.href |
|
||||
| event-handler-receiver.js:2:49:2:56 | location | event-handler-receiver.js:2:49:2:61 | location.href |
|
||||
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' |
|
||||
| express.js:7:15:7:33 | req.param("wobble") | express.js:7:15:7:33 | req.param("wobble") |
|
||||
| jquery.js:2:7:2:40 | tainted | jquery.js:7:20:7:26 | tainted |
|
||||
| jquery.js:2:7:2:40 | tainted | jquery.js:8:28:8:34 | tainted |
|
||||
|
||||
@@ -46,3 +46,14 @@ DomObjectStub.prototype.value;
|
||||
* @type {!DomObjectStub}
|
||||
*/
|
||||
var document;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {EventTarget}
|
||||
*/
|
||||
function Node() {}
|
||||
|
||||
/**
|
||||
* @type {Node}
|
||||
*/
|
||||
Node.prototype.parentNode;
|
||||
|
||||
Reference in New Issue
Block a user