Skip to content

Commit a6b4a18

Browse files
committed
Rust: Add negative patterns.
1 parent 8f95e26 commit a6b4a18

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

rust/ql/lib/codeql/rust/security/internal/SensitiveDataHeuristics.qll

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ module HeuristicNames {
5555
* or trusted data.
5656
*/
5757
string maybeSecret() {
58-
result = "(?is).*((?<!is|is_)secret|(?<!un|un_|is|is_)trusted|confidential).*"
58+
result = "(?is).*((?<!is|is_)secret|(?<!un|un_|is|is_)trusted(?!_iter)|confidential).*"
5959
}
6060

6161
/**
@@ -102,8 +102,8 @@ module HeuristicNames {
102102
// Geographic location - where the user is (or was)
103103
"latitude|longitude|nationality|" +
104104
// Financial data - such as credit card numbers, salary, bank accounts, and debts
105-
"(credit|debit|bank|visa).?(card|num|no|acc(ou)?nt)|acc(ou)?nt.?(no|num|credit)|routing.?num|" +
106-
"salary|billing|beneficiary|credit.?(rating|score)|([_-]|\\b)(ccn|cvv|iban)([_-]|\\b)|" +
105+
"(credit|debit|bank|visa).?(card|num|no|acc(ou)?nt)|acc(ou)?nt.?(no|num|credit)|routing.?num|"
106+
+ "salary|billing|beneficiary|credit.?(rating|score)|([_-]|\\b)(ccn|cvv|iban)([_-]|\\b)|" +
107107
// Communications - e-mail addresses, private e-mail messages, SMS text messages, chat logs, etc.
108108
// "e(mail|_mail)|" + // this seems too noisy
109109
// Health - medical conditions, insurance status, prescription records
@@ -148,7 +148,8 @@ module HeuristicNames {
148148
*/
149149
string notSensitiveRegexp() {
150150
result =
151-
"(?is).*([^\\w$.-]|redact|censor|obfuscate|hash|md5|sha|random|((?<!un)(en))?(crypt|(?<!pass)code)|certain|concert|secretar|accountant|accountab).*"
151+
"(?is).*([^\\w$.-]|redact|censor|obfuscate|hash|md5|sha|random|((?<!un)(en))?(crypt|(?<!pass)code)|"
152+
+ "certain|concert|secretar|account(ant|ab|ing|ed)|file|path|([_-]|\\b)url).*"
152153
}
153154

154155
/**

rust/ql/test/library-tests/sensitivedata/test.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ fn test_passwords(
6767
sink(harmless);
6868
sink(encrypted_password);
6969
sink(password_hash);
70-
sink(passwordFile); // $ SPURIOUS: sensitive=password
70+
sink(passwordFile);
7171

7272
sink(ms.harmless.as_str());
73-
sink(ms.password_file_path.as_str()); // $ SPURIOUS: sensitive=password
73+
sink(ms.password_file_path.as_str());
7474
sink(ms.password_enabled.as_str()); // $ SPURIOUS: sensitive=password
7575
sink(ms.numfailed.as_str());
7676

@@ -127,11 +127,11 @@ fn test_credentials(
127127

128128
sink(hashkey);
129129
sink(hash_key);
130-
sink(sessionkeypath); // $ SPURIOUS: sensitive=id
131-
sink(account_key_path); // $ SPURIOUS: sensitive=id
130+
sink(sessionkeypath);
131+
sink(account_key_path);
132132

133-
sink(ms.get_certificate_url()); // $ SPURIOUS: sensitive=certificate
134-
sink(ms.get_certificate_file()); // $ SPURIOUS: sensitive=certificate
133+
sink(ms.get_certificate_url());
134+
sink(ms.get_certificate_file());
135135

136136
sink(get_public_key());
137137
sink(get_next_token());
@@ -343,8 +343,8 @@ fn test_private_info(
343343
sink(info.financials.harmless.as_str());
344344
sink(info.financials.num_accounts); // $ SPURIOUS: sensitive=id
345345
sink(info.financials.total_accounts); // $ SPURIOUS: sensitive=id
346-
sink(info.financials.accounting); // $ SPURIOUS: sensitive=id
347-
sink(info.financials.unaccounted); // $ SPURIOUS: sensitive=id
346+
sink(info.financials.accounting);
347+
sink(info.financials.unaccounted);
348348
sink(info.financials.multiband);
349349

350350
sink(ContactDetails::FavouriteColor("blue".to_string()));
@@ -362,5 +362,5 @@ impl MyArray {
362362

363363
fn test_iterator() {
364364
let iter = std::iter::repeat(1).take(10);
365-
sink(MyArray::from_trusted_iterator(iter)); // $ SPURIOUS: sensitive=secret
365+
sink(MyArray::from_trusted_iterator(iter));
366366
}

0 commit comments

Comments
 (0)