Skip to content

Commit 1ee3fde

Browse files
committed
Added support for axios.interceptors.response.
1 parent 20bb831 commit 1ee3fde

File tree

4 files changed

+23
-2
lines changed

4 files changed

+23
-2
lines changed

javascript/ql/lib/ext/axios.model.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,9 @@ extensions:
44
extensible: sinkModel
55
data:
66
- ["axios", "Member[interceptors].Member[request].Member[use].Argument[0].Parameter[0].Member[url]", "request-forgery"]
7+
8+
- addsTo:
9+
pack: codeql/javascript-all
10+
extensible: sourceModel
11+
data:
12+
- ["axios", "Member[interceptors].Member[response].Member[use].Argument[0].Parameter[0]", "remote"]

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
| dragAndDrop.ts:73:29:73:39 | droppedHtml | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:73:29:73:39 | droppedHtml | Cross-site scripting vulnerability due to $@. | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | user-provided value |
6262
| 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>' | Cross-site scripting vulnerability due to $@. | event-handler-receiver.js:2:49:2:61 | location.href | user-provided value |
6363
| express.js:6:15:6:33 | req.param("wobble") | express.js:6:15:6:33 | req.param("wobble") | express.js:6:15:6:33 | req.param("wobble") | Cross-site scripting vulnerability due to $@. | express.js:6:15:6:33 | req.param("wobble") | user-provided value |
64+
| interceptors.js:9:56:9:72 | userGeneratedHtml | interceptors.js:7:6:7:13 | response | interceptors.js:9:56:9:72 | userGeneratedHtml | Cross-site scripting vulnerability due to $@. | interceptors.js:7:6:7:13 | response | user-provided value |
6465
| 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 |
6566
| jquery.js:8:18:8:34 | "XSS: " + tainted | jquery.js:2:17:2:40 | documen ... .search | jquery.js:8:18:8:34 | "XSS: " + tainted | Cross-site scripting vulnerability due to $@. | jquery.js:2:17:2:40 | documen ... .search | user-provided value |
6667
| jquery.js:10:5:10:40 | "<b>" + ... "</b>" | jquery.js:10:13:10:20 | location | jquery.js:10:5:10:40 | "<b>" + ... "</b>" | Cross-site scripting vulnerability due to $@. | jquery.js:10:13:10:20 | location | user-provided value |
@@ -351,6 +352,9 @@ edges
351352
| dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:71:13:71:61 | droppedHtml | provenance | |
352353
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | provenance | |
353354
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | provenance | Config |
355+
| interceptors.js:7:6:7:13 | response | interceptors.js:8:35:8:42 | response | provenance | |
356+
| interceptors.js:8:15:8:47 | userGeneratedHtml | interceptors.js:9:56:9:72 | userGeneratedHtml | provenance | |
357+
| interceptors.js:8:35:8:42 | response | interceptors.js:8:15:8:47 | userGeneratedHtml | provenance | |
354358
| jquery.js:2:7:2:40 | tainted | jquery.js:4:5:4:11 | tainted | provenance | |
355359
| jquery.js:2:7:2:40 | tainted | jquery.js:5:13:5:19 | tainted | provenance | |
356360
| jquery.js:2:7:2:40 | tainted | jquery.js:6:11:6:17 | tainted | provenance | |
@@ -952,6 +956,10 @@ nodes
952956
| event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | semmle.label | '<h2><a ... ></h2>' |
953957
| event-handler-receiver.js:2:49:2:61 | location.href | semmle.label | location.href |
954958
| express.js:6:15:6:33 | req.param("wobble") | semmle.label | req.param("wobble") |
959+
| interceptors.js:7:6:7:13 | response | semmle.label | response |
960+
| interceptors.js:8:15:8:47 | userGeneratedHtml | semmle.label | userGeneratedHtml |
961+
| interceptors.js:8:35:8:42 | response | semmle.label | response |
962+
| interceptors.js:9:56:9:72 | userGeneratedHtml | semmle.label | userGeneratedHtml |
955963
| jquery.js:2:7:2:40 | tainted | semmle.label | tainted |
956964
| jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search |
957965
| jquery.js:4:5:4:11 | tainted | semmle.label | tainted |

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ nodes
153153
| event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | semmle.label | '<h2><a ... ></h2>' |
154154
| event-handler-receiver.js:2:49:2:61 | location.href | semmle.label | location.href |
155155
| express.js:6:15:6:33 | req.param("wobble") | semmle.label | req.param("wobble") |
156+
| interceptors.js:7:6:7:13 | response | semmle.label | response |
157+
| interceptors.js:8:15:8:47 | userGeneratedHtml | semmle.label | userGeneratedHtml |
158+
| interceptors.js:8:35:8:42 | response | semmle.label | response |
159+
| interceptors.js:9:56:9:72 | userGeneratedHtml | semmle.label | userGeneratedHtml |
156160
| jquery.js:2:7:2:40 | tainted | semmle.label | tainted |
157161
| jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search |
158162
| jquery.js:4:5:4:11 | tainted | semmle.label | tainted |
@@ -791,6 +795,9 @@ edges
791795
| dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:71:13:71:61 | droppedHtml | provenance | |
792796
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | provenance | |
793797
| event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '<h2><a ... ></h2>' | provenance | Config |
798+
| interceptors.js:7:6:7:13 | response | interceptors.js:8:35:8:42 | response | provenance | |
799+
| interceptors.js:8:15:8:47 | userGeneratedHtml | interceptors.js:9:56:9:72 | userGeneratedHtml | provenance | |
800+
| interceptors.js:8:35:8:42 | response | interceptors.js:8:15:8:47 | userGeneratedHtml | provenance | |
794801
| jquery.js:2:7:2:40 | tainted | jquery.js:4:5:4:11 | tainted | provenance | |
795802
| jquery.js:2:7:2:40 | tainted | jquery.js:5:13:5:19 | tainted | provenance | |
796803
| jquery.js:2:7:2:40 | tainted | jquery.js:6:11:6:17 | tainted | provenance | |

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ const axios = require("axios");
44
const app = express();
55

66
axios.interceptors.response.use(
7-
(response) => { // $ MISSING: Source
7+
(response) => { // $ Source
88
const userGeneratedHtml = response.data;
9-
document.getElementById("content").innerHTML = userGeneratedHtml; // $ MISSING: Alert
9+
document.getElementById("content").innerHTML = userGeneratedHtml; // $ Alert
1010
return response;
1111
},
1212
(error) => {

0 commit comments

Comments
 (0)