Skip to content

Commit c258e44

Browse files
committed
add failing test for spurious edge through sanitizer
1 parent 26d5fb2 commit c258e44

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/XssThroughDom.expected

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ nodes
157157
| xss-through-dom.js:140:19:140:21 | src |
158158
| xss-through-dom.js:141:25:141:27 | src |
159159
| xss-through-dom.js:141:25:141:27 | src |
160+
| xss-through-dom.js:148:25:148:65 | DOMPuri ... ) : src |
161+
| xss-through-dom.js:148:25:148:65 | DOMPuri ... ) : src |
162+
| xss-through-dom.js:148:37:148:59 | DOMPuri ... ze(src) |
163+
| xss-through-dom.js:148:56:148:58 | src |
160164
edges
161165
| forms.js:8:23:8:28 | values | forms.js:9:31:9:36 | values |
162166
| forms.js:8:23:8:28 | values | forms.js:9:31:9:36 | values |
@@ -257,8 +261,12 @@ edges
257261
| xss-through-dom.js:139:11:139:52 | src | xss-through-dom.js:140:19:140:21 | src |
258262
| xss-through-dom.js:139:11:139:52 | src | xss-through-dom.js:141:25:141:27 | src |
259263
| xss-through-dom.js:139:11:139:52 | src | xss-through-dom.js:141:25:141:27 | src |
264+
| xss-through-dom.js:139:11:139:52 | src | xss-through-dom.js:148:56:148:58 | src |
260265
| xss-through-dom.js:139:17:139:52 | documen ... k").src | xss-through-dom.js:139:11:139:52 | src |
261266
| xss-through-dom.js:139:17:139:52 | documen ... k").src | xss-through-dom.js:139:11:139:52 | src |
267+
| xss-through-dom.js:148:37:148:59 | DOMPuri ... ze(src) | xss-through-dom.js:148:25:148:65 | DOMPuri ... ) : src |
268+
| xss-through-dom.js:148:37:148:59 | DOMPuri ... ze(src) | xss-through-dom.js:148:25:148:65 | DOMPuri ... ) : src |
269+
| xss-through-dom.js:148:56:148:58 | src | xss-through-dom.js:148:37:148:59 | DOMPuri ... ze(src) |
262270
#select
263271
| forms.js:9:31:9:40 | values.foo | forms.js:8:23:8:28 | values | forms.js:9:31:9:40 | values.foo | $@ is reinterpreted as HTML without escaping meta-characters. | forms.js:8:23:8:28 | values | DOM text |
264272
| forms.js:12:31:12:40 | values.bar | forms.js:11:24:11:29 | values | forms.js:12:31:12:40 | values.bar | $@ is reinterpreted as HTML without escaping meta-characters. | forms.js:11:24:11:29 | values | DOM text |
@@ -302,3 +310,4 @@ edges
302310
| xss-through-dom.js:132:16:132:23 | linkText | xss-through-dom.js:130:42:130:62 | dSelect ... tring() | xss-through-dom.js:132:16:132:23 | linkText | $@ is reinterpreted as HTML without escaping meta-characters. | xss-through-dom.js:130:42:130:62 | dSelect ... tring() | DOM text |
303311
| xss-through-dom.js:140:19:140:21 | src | xss-through-dom.js:139:17:139:52 | documen ... k").src | xss-through-dom.js:140:19:140:21 | src | $@ is reinterpreted as HTML without escaping meta-characters. | xss-through-dom.js:139:17:139:52 | documen ... k").src | DOM text |
304312
| xss-through-dom.js:141:25:141:27 | src | xss-through-dom.js:139:17:139:52 | documen ... k").src | xss-through-dom.js:141:25:141:27 | src | $@ is reinterpreted as HTML without escaping meta-characters. | xss-through-dom.js:139:17:139:52 | documen ... k").src | DOM text |
313+
| xss-through-dom.js:148:25:148:65 | DOMPuri ... ) : src | xss-through-dom.js:139:17:139:52 | documen ... k").src | xss-through-dom.js:148:25:148:65 | DOMPuri ... ) : src | $@ is reinterpreted as HTML without escaping meta-characters. | xss-through-dom.js:139:17:139:52 | documen ... k").src | DOM text |

javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/xss-through-dom.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,4 +139,11 @@ const cashDom = require("cash-dom");
139139
const src = document.getElementById("#link").src;
140140
cash("#id").html(src); // NOT OK.
141141
cashDom("#id").html(src); // NOT OK
142+
143+
var DOMPurify = {
144+
sanitize: function (src) {
145+
return src; // to model spuriously finding an edge. The below is still OK.
146+
}
147+
};
148+
cashDom("#id").html(DOMPurify ? DOMPurify.sanitize(src) : src); // OK - but currently flagged [INCONSISTENCY]
142149
})();

0 commit comments

Comments
 (0)