Skip to content

Commit 056e1a8

Browse files
authored
Merge pull request github#3599 from asger-semmle/js/nameditem
Approved by esbena
2 parents b759856 + b867512 commit 056e1a8

File tree

6 files changed

+18
-1
lines changed

6 files changed

+18
-1
lines changed

javascript/ql/src/semmle/javascript/DOM.qll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,9 @@ module DOM {
340340
t.start() and
341341
result = domValueSource()
342342
or
343+
t.start() and
344+
result = domValueRef().getAMethodCall(["item", "namedItem"])
345+
or
343346
exists(DataFlow::TypeTracker t2 | result = domValueRef(t2).track(t2, t))
344347
}
345348

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
test_documentRef
22
| customization.js:2:13:2:31 | customGetDocument() |
3+
| nameditems.js:1:1:1:8 | document |
34
test_locationRef
45
| customization.js:3:3:3:14 | doc.location |
56
test_domValueRef
67
| customization.js:4:3:4:28 | doc.get ... 'test') |
8+
| nameditems.js:1:1:1:30 | documen ... ('foo') |
9+
| nameditems.js:1:1:2:19 | documen ... em('x') |
710
| tst.js:49:3:49:8 | window |
811
| tst.js:50:3:50:8 | window |
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
document.getElementById('foo')
2+
.namedItem('x');

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,8 @@ nodes
331331
| tst.js:194:54:194:60 | tainted |
332332
| tst.js:195:45:195:51 | tainted |
333333
| tst.js:195:45:195:51 | tainted |
334+
| tst.js:196:49:196:55 | tainted |
335+
| tst.js:196:49:196:55 | tainted |
334336
| tst.js:200:9:200:42 | tainted |
335337
| tst.js:200:19:200:35 | document.location |
336338
| tst.js:200:19:200:35 | document.location |
@@ -749,6 +751,8 @@ edges
749751
| tst.js:187:9:187:42 | tainted | tst.js:194:54:194:60 | tainted |
750752
| tst.js:187:9:187:42 | tainted | tst.js:195:45:195:51 | tainted |
751753
| tst.js:187:9:187:42 | tainted | tst.js:195:45:195:51 | tainted |
754+
| tst.js:187:9:187:42 | tainted | tst.js:196:49:196:55 | tainted |
755+
| tst.js:187:9:187:42 | tainted | tst.js:196:49:196:55 | tainted |
752756
| tst.js:187:19:187:35 | document.location | tst.js:187:19:187:42 | documen ... .search |
753757
| tst.js:187:19:187:35 | document.location | tst.js:187:19:187:42 | documen ... .search |
754758
| tst.js:187:19:187:42 | documen ... .search | tst.js:187:9:187:42 | tainted |
@@ -925,6 +929,7 @@ edges
925929
| tst.js:192:33:192:39 | tainted | tst.js:187:19:187:35 | document.location | tst.js:192:33:192:39 | tainted | Cross-site scripting vulnerability due to $@. | tst.js:187:19:187:35 | document.location | user-provided value |
926930
| tst.js:194:54:194:60 | tainted | tst.js:187:19:187:35 | document.location | tst.js:194:54:194:60 | tainted | Cross-site scripting vulnerability due to $@. | tst.js:187:19:187:35 | document.location | user-provided value |
927931
| tst.js:195:45:195:51 | tainted | tst.js:187:19:187:35 | document.location | tst.js:195:45:195:51 | tainted | Cross-site scripting vulnerability due to $@. | tst.js:187:19:187:35 | document.location | user-provided value |
932+
| tst.js:196:49:196:55 | tainted | tst.js:187:19:187:35 | document.location | tst.js:196:49:196:55 | tainted | Cross-site scripting vulnerability due to $@. | tst.js:187:19:187:35 | document.location | user-provided value |
928933
| tst.js:202:67:202:73 | tainted | tst.js:200:19:200:35 | document.location | tst.js:202:67:202:73 | tainted | Cross-site scripting vulnerability due to $@. | tst.js:200:19:200:35 | document.location | user-provided value |
929934
| tst.js:203:67:203:73 | tainted | tst.js:200:19:200:35 | document.location | tst.js:203:67:203:73 | tainted | Cross-site scripting vulnerability due to $@. | tst.js:200:19:200:35 | document.location | user-provided value |
930935
| tst.js:215:28:215:46 | this.state.tainted1 | tst.js:200:19:200:35 | document.location | tst.js:215:28:215:46 | this.state.tainted1 | Cross-site scripting vulnerability due to $@. | tst.js:200:19:200:35 | document.location | user-provided value |

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,8 @@ nodes
331331
| tst.js:194:54:194:60 | tainted |
332332
| tst.js:195:45:195:51 | tainted |
333333
| tst.js:195:45:195:51 | tainted |
334+
| tst.js:196:49:196:55 | tainted |
335+
| tst.js:196:49:196:55 | tainted |
334336
| tst.js:200:9:200:42 | tainted |
335337
| tst.js:200:19:200:35 | document.location |
336338
| tst.js:200:19:200:35 | document.location |
@@ -753,6 +755,8 @@ edges
753755
| tst.js:187:9:187:42 | tainted | tst.js:194:54:194:60 | tainted |
754756
| tst.js:187:9:187:42 | tainted | tst.js:195:45:195:51 | tainted |
755757
| tst.js:187:9:187:42 | tainted | tst.js:195:45:195:51 | tainted |
758+
| tst.js:187:9:187:42 | tainted | tst.js:196:49:196:55 | tainted |
759+
| tst.js:187:9:187:42 | tainted | tst.js:196:49:196:55 | tainted |
756760
| tst.js:187:19:187:35 | document.location | tst.js:187:19:187:42 | documen ... .search |
757761
| tst.js:187:19:187:35 | document.location | tst.js:187:19:187:42 | documen ... .search |
758762
| tst.js:187:19:187:42 | documen ... .search | tst.js:187:9:187:42 | tainted |

javascript/ql/test/query-tests/Security/CWE-079/tst.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ function references() {
193193

194194
document.getElementsByClassName()[0].innerHTML = tainted; // NOT OK
195195
getElementsByClassName()[0].innerHTML = tainted; // NOT OK
196-
getElementsByClassName().item().innerHTML = tainted; // NOT OK, but not supported
196+
getElementsByClassName().item().innerHTML = tainted; // NOT OK
197197
}
198198

199199
function react(){

0 commit comments

Comments
 (0)