Skip to content

Commit eea11db

Browse files
committed
Rust: Relabel reqwest sinks as request-url
1 parent c5cb86a commit eea11db

File tree

4 files changed

+21
-21
lines changed

4 files changed

+21
-21
lines changed

rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ extensions:
99
pack: codeql/rust-all
1010
extensible: sinkModel
1111
data:
12-
- ["<reqwest::async_impl::client::Client>::request", "Argument[1]", "transmission", "manual"]
13-
- ["<reqwest::blocking::client::Client>::request", "Argument[1]", "transmission", "manual"]
12+
- ["<reqwest::async_impl::client::Client>::request", "Argument[1]", "request-url", "manual"]
13+
- ["<reqwest::blocking::client::Client>::request", "Argument[1]", "request-url", "manual"]
1414
- addsTo:
1515
pack: codeql/rust-all
1616
extensible: summaryModel

rust/ql/lib/codeql/rust/security/CleartextTransmissionExtensions.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@ module CleartextTransmission {
5353
* A sink defined through MaD.
5454
*/
5555
private class ModelsAsDataSink extends Sink {
56-
ModelsAsDataSink() { sinkNode(this, "transmission") }
56+
ModelsAsDataSink() { sinkNode(this, ["transmission", "request-url"]) }
5757
}
5858
}

rust/ql/lib/ext/generated/reqwest.model.yml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -424,21 +424,21 @@ extensions:
424424
pack: codeql/rust-all
425425
extensible: sinkModel
426426
data:
427-
- ["<reqwest::async_impl::client::Client>::delete", "Argument[0]", "transmission", "df-generated"]
428-
- ["<reqwest::async_impl::client::Client>::get", "Argument[0]", "transmission", "df-generated"]
429-
- ["<reqwest::async_impl::client::Client>::head", "Argument[0]", "transmission", "df-generated"]
430-
- ["<reqwest::async_impl::client::Client>::patch", "Argument[0]", "transmission", "df-generated"]
431-
- ["<reqwest::async_impl::client::Client>::post", "Argument[0]", "transmission", "df-generated"]
432-
- ["<reqwest::async_impl::client::Client>::put", "Argument[0]", "transmission", "df-generated"]
427+
- ["<reqwest::async_impl::client::Client>::delete", "Argument[0]", "request-url", "df-generated"]
428+
- ["<reqwest::async_impl::client::Client>::get", "Argument[0]", "request-url", "df-generated"]
429+
- ["<reqwest::async_impl::client::Client>::head", "Argument[0]", "request-url", "df-generated"]
430+
- ["<reqwest::async_impl::client::Client>::patch", "Argument[0]", "request-url", "df-generated"]
431+
- ["<reqwest::async_impl::client::Client>::post", "Argument[0]", "request-url", "df-generated"]
432+
- ["<reqwest::async_impl::client::Client>::put", "Argument[0]", "request-url", "df-generated"]
433433
- ["<reqwest::async_impl::multipart::Form>::into_stream", "Argument[self]", "log-injection", "df-generated"]
434434
- ["<reqwest::async_impl::multipart::Form>::stream", "Argument[self]", "log-injection", "df-generated"]
435435
- ["<reqwest::async_impl::request::RequestBuilder>::multipart", "Argument[0]", "log-injection", "df-generated"]
436-
- ["<reqwest::blocking::client::Client>::delete", "Argument[0]", "transmission", "df-generated"]
437-
- ["<reqwest::blocking::client::Client>::get", "Argument[0]", "transmission", "df-generated"]
438-
- ["<reqwest::blocking::client::Client>::head", "Argument[0]", "transmission", "df-generated"]
439-
- ["<reqwest::blocking::client::Client>::patch", "Argument[0]", "transmission", "df-generated"]
440-
- ["<reqwest::blocking::client::Client>::post", "Argument[0]", "transmission", "df-generated"]
441-
- ["<reqwest::blocking::client::Client>::put", "Argument[0]", "transmission", "df-generated"]
436+
- ["<reqwest::blocking::client::Client>::delete", "Argument[0]", "request-url", "df-generated"]
437+
- ["<reqwest::blocking::client::Client>::get", "Argument[0]", "request-url", "df-generated"]
438+
- ["<reqwest::blocking::client::Client>::head", "Argument[0]", "request-url", "df-generated"]
439+
- ["<reqwest::blocking::client::Client>::patch", "Argument[0]", "request-url", "df-generated"]
440+
- ["<reqwest::blocking::client::Client>::post", "Argument[0]", "request-url", "df-generated"]
441+
- ["<reqwest::blocking::client::Client>::put", "Argument[0]", "request-url", "df-generated"]
442442
- ["<reqwest::blocking::multipart::Form>::into_reader", "Argument[self]", "log-injection", "df-generated"]
443443
- ["<reqwest::blocking::multipart::Form>::reader", "Argument[self]", "log-injection", "df-generated"]
444444
- ["<reqwest::blocking::multipart::Reader as std::io::Read>::read", "Argument[self]", "log-injection", "df-generated"]
@@ -450,9 +450,9 @@ extensions:
450450
- ["<reqwest::blocking::response::Response>::text_with_charset", "Argument[self]", "pointer-access", "df-generated"]
451451
- ["<reqwest::connect::ConnectorService as tower_service::Service>::call", "Argument[0]", "log-injection", "df-generated"]
452452
- ["<reqwest::error::Error>::new", "Argument[1]", "pointer-access", "df-generated"]
453-
- ["reqwest::blocking::get", "Argument[0]", "transmission", "df-generated"]
453+
- ["reqwest::blocking::get", "Argument[0]", "request-url", "df-generated"]
454454
- ["reqwest::blocking::wait::timeout", "Argument[1]", "pointer-access", "df-generated"]
455-
- ["reqwest::get", "Argument[0]", "transmission", "df-generated"]
455+
- ["reqwest::get", "Argument[0]", "request-url", "df-generated"]
456456
- addsTo:
457457
pack: codeql/rust-all
458458
extensible: sourceModel

rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ edges
5151
| main.rs:33:50:33:57 | password | main.rs:33:23:33:57 | MacroExpr | provenance | |
5252
| main.rs:35:33:35:35 | url | main.rs:35:12:35:18 | request | provenance | MaD:2 Sink:MaD:2 |
5353
models
54-
| 1 | Sink: <reqwest::async_impl::client::Client>::post; Argument[0]; transmission |
55-
| 2 | Sink: <reqwest::async_impl::client::Client>::request; Argument[1]; transmission |
56-
| 3 | Sink: <reqwest::blocking::client::Client>::request; Argument[1]; transmission |
57-
| 4 | Sink: reqwest::blocking::get; Argument[0]; transmission |
54+
| 1 | Sink: <reqwest::async_impl::client::Client>::post; Argument[0]; request-url |
55+
| 2 | Sink: <reqwest::async_impl::client::Client>::request; Argument[1]; request-url |
56+
| 3 | Sink: <reqwest::blocking::client::Client>::request; Argument[1]; request-url |
57+
| 4 | Sink: reqwest::blocking::get; Argument[0]; request-url |
5858
| 5 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
5959
| 6 | Summary: <url::Url>::parse; Argument[0].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
6060
| 7 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |

0 commit comments

Comments
 (0)