rust.lang.security.rustls-dangerous.rustls-dangerous

Author
unknown
Download Count*
License
Dangerous client config used, ensure SSL verification
Run Locally
Run in CI
Defintion
rules:
- id: rustls-dangerous
message: Dangerous client config used, ensure SSL verification
pattern-either:
- pattern: rustls::client::DangerousClientConfig
- pattern: $CLIENT.dangerous().set_certificate_verifier(...)
- pattern: |
let $CLIENT = rustls::client::ClientConfig::dangerous(...);
...
$CLIENT.set_certificate_verifier(...);
metadata:
references:
- https://docs.rs/rustls/latest/rustls/client/struct.DangerousClientConfig.html
- https://docs.rs/rustls/latest/rustls/client/struct.ClientConfig.html#method.dangerous
technology:
- rustls
category: security
cwe: "CWE-295: Improper Certificate Validation"
confidence: HIGH
likelihood: LOW
impact: MEDIUM
subcategory: vuln
license: Commons Clause License Condition v1.0[LGPL-2.1-only]
languages:
- rust
severity: WARNING
Examples
rustls-dangerous.rs
use rustls::{RootCertStore, Certificate, ServerCertVerified, TLSError, ServerCertVerifier};
let verifier = MyServerCertVerifie;
// ok: rustls-dangerous
let mut c1 = rustls::client::ClientConfig::new();
// Remove todo when Rust supports direct module references
// ruleid: rustls-dangerous
let mut c2 = rustls::client::DangerousClientConfig {cfg: &mut cfg};
c2.set_certificate_verifier(verifier);
let mut c3 = rustls::client::ClientConfig::new();
// ruleid: rustls-dangerous
c3.dangerous().set_certificate_verifier(verifier);
// ruleid: rustls-dangerous
let mut c4 = rustls::client::ClientConfig::dangerous(&mut ());
c4.set_certificate_verifier(verifier);
Short Link: https://sg.run/01Rw