Skip to content

Commit 55cf375

Browse files
committed
Rust: Add the cookies to jars, indicating that they're ready for use.
1 parent 7fe4877 commit 55cf375

File tree

3 files changed

+94
-23
lines changed

3 files changed

+94
-23
lines changed

rust/ql/test/query-tests/security/CWE-614/CookieSet.expected

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@
5252
| main.rs:180:29:180:66 | ...::build(...) | secure | true |
5353
| main.rs:186:9:186:22 | [SSA] secure_cookie2 | secure | true |
5454
| main.rs:186:9:186:22 | secure_cookie2 | secure | true |
55-
| main.rs:197:5:197:11 | [SSA] cookie1 | secure | false |
56-
| main.rs:197:5:197:11 | cookie1 | secure | false |
57-
| main.rs:202:5:202:11 | [SSA] cookie2 | secure | true |
58-
| main.rs:202:5:202:11 | cookie2 | secure | true |
59-
| main.rs:233:5:233:11 | [SSA] cookie1 | secure | false |
60-
| main.rs:233:5:233:11 | cookie1 | secure | false |
61-
| main.rs:238:5:238:11 | [SSA] cookie2 | secure | true |
62-
| main.rs:238:5:238:11 | cookie2 | secure | true |
55+
| main.rs:198:5:198:11 | [SSA] cookie1 | secure | false |
56+
| main.rs:198:5:198:11 | cookie1 | secure | false |
57+
| main.rs:203:5:203:11 | [SSA] cookie2 | secure | true |
58+
| main.rs:203:5:203:11 | cookie2 | secure | true |
59+
| main.rs:236:5:236:11 | [SSA] cookie1 | secure | false |
60+
| main.rs:236:5:236:11 | cookie1 | secure | false |
61+
| main.rs:241:5:241:11 | [SSA] cookie2 | secure | true |
62+
| main.rs:241:5:241:11 | cookie2 | secure | true |

rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,14 @@
7878
| main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. |
7979
| main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. |
8080
| main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. |
81+
| main.rs:199:9:199:11 | add | main.rs:197:23:197:38 | ...::new | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. |
82+
| main.rs:199:9:199:11 | add | main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. |
83+
| main.rs:199:9:199:11 | add | main.rs:198:5:198:11 | cookie1 | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. |
84+
| main.rs:208:9:208:11 | add | main.rs:207:19:207:34 | ...::new | main.rs:208:9:208:11 | add | Cookie attribute 'Secure' is not set to true. |
85+
| main.rs:237:9:237:11 | add | main.rs:235:23:235:42 | ...::new | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. |
86+
| main.rs:237:9:237:11 | add | main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. |
87+
| main.rs:237:9:237:11 | add | main.rs:236:5:236:11 | cookie1 | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. |
88+
| main.rs:246:9:246:11 | add | main.rs:245:19:245:38 | ...::new | main.rs:246:9:246:11 | add | Cookie attribute 'Secure' is not set to true. |
8189
edges
8290
| main.rs:8:19:8:31 | ...::build | main.rs:8:19:8:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 |
8391
| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:41 |
@@ -314,6 +322,38 @@ edges
314322
| main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 |
315323
| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:13 MaD:13 |
316324
| main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 |
325+
| main.rs:197:9:197:19 | mut cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | |
326+
| main.rs:197:9:197:19 | mut cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 |
327+
| main.rs:197:23:197:38 | ...::new | main.rs:197:23:197:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 |
328+
| main.rs:197:23:197:55 | ...::new(...) | main.rs:197:9:197:19 | mut cookie1 | provenance | |
329+
| main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | |
330+
| main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 |
331+
| main.rs:198:5:198:11 | cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | |
332+
| main.rs:198:5:198:11 | cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 |
333+
| main.rs:199:13:199:19 | cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 |
334+
| main.rs:199:13:199:27 | cookie1.clone() | main.rs:199:9:199:11 | add | provenance | MaD:4 Sink:MaD:4 |
335+
| main.rs:207:9:207:15 | cookie3 | main.rs:208:13:208:19 | cookie3 | provenance | |
336+
| main.rs:207:9:207:15 | cookie3 | main.rs:208:13:208:27 | cookie3.clone() | provenance | MaD:17 |
337+
| main.rs:207:19:207:34 | ...::new | main.rs:207:19:207:51 | ...::new(...) | provenance | Src:MaD:15 MaD:15 |
338+
| main.rs:207:19:207:51 | ...::new(...) | main.rs:207:9:207:15 | cookie3 | provenance | |
339+
| main.rs:208:13:208:19 | cookie3 | main.rs:208:13:208:27 | cookie3.clone() | provenance | MaD:17 |
340+
| main.rs:208:13:208:27 | cookie3.clone() | main.rs:208:9:208:11 | add | provenance | MaD:4 Sink:MaD:4 |
341+
| main.rs:235:9:235:19 | mut cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | |
342+
| main.rs:235:9:235:19 | mut cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 |
343+
| main.rs:235:23:235:42 | ...::new | main.rs:235:23:235:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 |
344+
| main.rs:235:23:235:59 | ...::new(...) | main.rs:235:9:235:19 | mut cookie1 | provenance | |
345+
| main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | |
346+
| main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 |
347+
| main.rs:236:5:236:11 | cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | |
348+
| main.rs:236:5:236:11 | cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 |
349+
| main.rs:237:13:237:19 | cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 |
350+
| main.rs:237:13:237:27 | cookie1.clone() | main.rs:237:9:237:11 | add | provenance | MaD:4 Sink:MaD:4 |
351+
| main.rs:245:9:245:15 | cookie3 | main.rs:246:13:246:19 | cookie3 | provenance | |
352+
| main.rs:245:9:245:15 | cookie3 | main.rs:246:13:246:27 | cookie3.clone() | provenance | MaD:17 |
353+
| main.rs:245:19:245:38 | ...::new | main.rs:245:19:245:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 |
354+
| main.rs:245:19:245:55 | ...::new(...) | main.rs:245:9:245:15 | cookie3 | provenance | |
355+
| main.rs:246:13:246:19 | cookie3 | main.rs:246:13:246:27 | cookie3.clone() | provenance | MaD:17 |
356+
| main.rs:246:13:246:27 | cookie3.clone() | main.rs:246:9:246:11 | add | provenance | MaD:4 Sink:MaD:4 |
317357
models
318358
| 1 | Sink: <biscotti::response_cookies::ResponseCookies>::insert; Argument[0]; cookie-use |
319359
| 2 | Sink: <cookie::builder::CookieBuilder>::build; Argument[self]; cookie-use |
@@ -594,4 +634,32 @@ nodes
594634
| main.rs:173:22:173:34 | ...::build | semmle.label | ...::build |
595635
| main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) |
596636
| main.rs:173:61:173:65 | build | semmle.label | build |
637+
| main.rs:197:9:197:19 | mut cookie1 | semmle.label | mut cookie1 |
638+
| main.rs:197:23:197:38 | ...::new | semmle.label | ...::new |
639+
| main.rs:197:23:197:55 | ...::new(...) | semmle.label | ...::new(...) |
640+
| main.rs:198:5:198:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 |
641+
| main.rs:198:5:198:11 | cookie1 | semmle.label | cookie1 |
642+
| main.rs:199:9:199:11 | add | semmle.label | add |
643+
| main.rs:199:13:199:19 | cookie1 | semmle.label | cookie1 |
644+
| main.rs:199:13:199:27 | cookie1.clone() | semmle.label | cookie1.clone() |
645+
| main.rs:207:9:207:15 | cookie3 | semmle.label | cookie3 |
646+
| main.rs:207:19:207:34 | ...::new | semmle.label | ...::new |
647+
| main.rs:207:19:207:51 | ...::new(...) | semmle.label | ...::new(...) |
648+
| main.rs:208:9:208:11 | add | semmle.label | add |
649+
| main.rs:208:13:208:19 | cookie3 | semmle.label | cookie3 |
650+
| main.rs:208:13:208:27 | cookie3.clone() | semmle.label | cookie3.clone() |
651+
| main.rs:235:9:235:19 | mut cookie1 | semmle.label | mut cookie1 |
652+
| main.rs:235:23:235:42 | ...::new | semmle.label | ...::new |
653+
| main.rs:235:23:235:59 | ...::new(...) | semmle.label | ...::new(...) |
654+
| main.rs:236:5:236:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 |
655+
| main.rs:236:5:236:11 | cookie1 | semmle.label | cookie1 |
656+
| main.rs:237:9:237:11 | add | semmle.label | add |
657+
| main.rs:237:13:237:19 | cookie1 | semmle.label | cookie1 |
658+
| main.rs:237:13:237:27 | cookie1.clone() | semmle.label | cookie1.clone() |
659+
| main.rs:245:9:245:15 | cookie3 | semmle.label | cookie3 |
660+
| main.rs:245:19:245:38 | ...::new | semmle.label | ...::new |
661+
| main.rs:245:19:245:55 | ...::new(...) | semmle.label | ...::new(...) |
662+
| main.rs:246:9:246:11 | add | semmle.label | add |
663+
| main.rs:246:13:246:19 | cookie3 | semmle.label | cookie3 |
664+
| main.rs:246:13:246:27 | cookie3.clone() | semmle.label | cookie3.clone() |
597665
subpaths

rust/ql/test/query-tests/security/CWE-614/main.rs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -191,56 +191,59 @@ fn test_qhelp_examples() {
191191
fn test_actix_web() {
192192
// actix-web re-exports the cookie crate
193193
use actix_web::cookie::Cookie as ActixCookie;
194+
let mut jar = actix_web::cookie::CookieJar::new();
194195

195196
// secure set to false
196-
let mut cookie1 = ActixCookie::new("name", "value");
197-
cookie1.set_secure(false); // $ MISSING: Source
198-
println!("actix-web cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie]
197+
let mut cookie1 = ActixCookie::new("name", "value"); // $ Source
198+
cookie1.set_secure(false); // $ Source
199+
jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie]
199200

200201
// secure set to true
201202
let mut cookie2 = ActixCookie::new("name", "value");
202203
cookie2.set_secure(true); // good
203-
println!("actix-web cookie2 = '{}'", cookie2.to_string());
204+
jar.add(cookie2.clone());
204205

205206
// secure left as default
206-
let cookie3 = ActixCookie::new("name", "value"); // $ MISSING: Source
207-
println!("actix-web cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie]
207+
let cookie3 = ActixCookie::new("name", "value"); // $ Source
208+
jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie]
208209
}
209210

210211
fn test_poem() {
211212
use poem::web::cookie::Cookie as PoemCookie;
213+
let mut jar = poem::web::cookie::CookieJar::default();
212214

213215
// secure set to false
214216
let mut cookie1 = PoemCookie::new_with_str("name", "value");
215217
cookie1.set_secure(false); // $ MISSING: Source
216-
println!("poem cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie]
218+
jar.add(cookie1.clone()); // $ MISSING: Alert[rust/insecure-cookie]
217219

218220
// secure set to true
219221
let mut cookie2 = PoemCookie::new_with_str("name", "value");
220222
cookie2.set_secure(true); // good
221-
println!("poem cookie2 = '{}'", cookie2.to_string());
223+
jar.add(cookie2.clone());
222224

223225
// secure left as default
224226
let cookie3 = PoemCookie::new_with_str("name", "value"); // $ MISSING: Source
225-
println!("poem cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie]
227+
jar.add(cookie3.clone()); // $ MISSING: Alert[rust/insecure-cookie]
226228
}
227229

228230
fn test_http_types() {
229231
use http_types::Cookie as HttpTypesCookie;
232+
let mut jar = http_types::cookies::CookieJar::default();
230233

231234
// secure set to false
232-
let mut cookie1 = HttpTypesCookie::new("name", "value");
233-
cookie1.set_secure(false); // $ MISSING: Source
234-
println!("http-types cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie]
235+
let mut cookie1 = HttpTypesCookie::new("name", "value"); // $ Source
236+
cookie1.set_secure(false); // $ Source
237+
jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie]
235238

236239
// secure set to true
237240
let mut cookie2 = HttpTypesCookie::new("name", "value");
238241
cookie2.set_secure(true); // good
239-
println!("http-types cookie2 = '{}'", cookie2.to_string());
242+
jar.add(cookie2.clone());
240243

241244
// secure left as default
242-
let cookie3 = HttpTypesCookie::new("name", "value"); // $ MISSING: Source
243-
println!("http-types cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie]
245+
let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source
246+
jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie]
244247
}
245248

246249
fn main() {

0 commit comments

Comments
 (0)