Skip to content

Commit 06ea829

Browse files
authored
Merge pull request #10636 from erik-krogh/fixHardcoded
JS: recognize another kind of dummy passwords to fix an FP in hardcoded-credentials
2 parents 82294c1 + 9f2d7df commit 06ea829

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

javascript/ql/lib/semmle/javascript/security/SensitiveActions.qll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,9 @@ module PasswordHeuristics {
213213
normalized
214214
.regexpMatch(".*(pass|test|sample|example|secret|root|admin|user|change|auth|fake|(my(token|password))|string|foo|bar|baz|qux|1234|3141|abcd).*")
215215
)
216+
or
217+
// repeats the same char more than 10 times
218+
password.regexpMatch(".*([a-zA-Z0-9])\\1{10,}.*")
216219
}
217220

218221
/**

javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,18 @@ nodes
259259
| HardcodedCredentials.js:286:36:286:55 | "user:custom string" |
260260
| HardcodedCredentials.js:286:36:286:55 | "user:custom string" |
261261
| HardcodedCredentials.js:286:36:286:55 | "user:custom string" |
262+
| HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` |
263+
| HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` |
264+
| HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` |
265+
| HardcodedCredentials.js:293:37:293:65 | `Basic ... xxxxxx` |
266+
| HardcodedCredentials.js:293:37:293:65 | `Basic ... xxxxxx` |
267+
| HardcodedCredentials.js:293:37:293:65 | `Basic ... xxxxxx` |
268+
| HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` |
269+
| HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` |
270+
| HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` |
271+
| HardcodedCredentials.js:295:37:295:66 | `Basic ... 000001` |
272+
| HardcodedCredentials.js:295:37:295:66 | `Basic ... 000001` |
273+
| HardcodedCredentials.js:295:37:295:66 | `Basic ... 000001` |
262274
edges
263275
| HardcodedCredentials.js:5:15:5:22 | 'dbuser' | HardcodedCredentials.js:5:15:5:22 | 'dbuser' |
264276
| HardcodedCredentials.js:8:19:8:28 | 'hgfedcba' | HardcodedCredentials.js:8:19:8:28 | 'hgfedcba' |
@@ -383,6 +395,10 @@ edges
383395
| HardcodedCredentials.js:284:36:284:52 | "user:fake token" | HardcodedCredentials.js:284:36:284:52 | "user:fake token" |
384396
| HardcodedCredentials.js:285:36:285:46 | "user:dcba" | HardcodedCredentials.js:285:36:285:46 | "user:dcba" |
385397
| HardcodedCredentials.js:286:36:286:55 | "user:custom string" | HardcodedCredentials.js:286:36:286:55 | "user:custom string" |
398+
| HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` | HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` |
399+
| HardcodedCredentials.js:293:37:293:65 | `Basic ... xxxxxx` | HardcodedCredentials.js:293:37:293:65 | `Basic ... xxxxxx` |
400+
| HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` | HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` |
401+
| HardcodedCredentials.js:295:37:295:66 | `Basic ... 000001` | HardcodedCredentials.js:295:37:295:66 | `Basic ... 000001` |
386402
#select
387403
| HardcodedCredentials.js:5:15:5:22 | 'dbuser' | HardcodedCredentials.js:5:15:5:22 | 'dbuser' | HardcodedCredentials.js:5:15:5:22 | 'dbuser' | The hard-coded value "dbuser" is used as $@. | HardcodedCredentials.js:5:15:5:22 | 'dbuser' | user name |
388404
| HardcodedCredentials.js:8:19:8:28 | 'hgfedcba' | HardcodedCredentials.js:8:19:8:28 | 'hgfedcba' | HardcodedCredentials.js:8:19:8:28 | 'hgfedcba' | The hard-coded value "hgfedcba" is used as $@. | HardcodedCredentials.js:8:19:8:28 | 'hgfedcba' | password |
@@ -446,3 +462,5 @@ edges
446462
| HardcodedCredentials.js:215:18:215:25 | 'sdsdag' | HardcodedCredentials.js:215:18:215:25 | 'sdsdag' | HardcodedCredentials.js:221:37:221:51 | `Basic ${AUTH}` | The hard-coded value "sdsdag" is used as $@. | HardcodedCredentials.js:221:37:221:51 | `Basic ${AUTH}` | authorization header |
447463
| HardcodedCredentials.js:231:22:231:29 | 'sdsdag' | HardcodedCredentials.js:231:22:231:29 | 'sdsdag' | HardcodedCredentials.js:237:24:237:91 | 'Basic ... ase64') | The hard-coded value "sdsdag" is used as $@. | HardcodedCredentials.js:237:24:237:91 | 'Basic ... ase64') | authorization header |
448464
| HardcodedCredentials.js:245:22:245:44 | "myHard ... ateKey" | HardcodedCredentials.js:245:22:245:44 | "myHard ... ateKey" | HardcodedCredentials.js:246:42:246:51 | privateKey | The hard-coded value "myHardCodedPrivateKey" is used as $@. | HardcodedCredentials.js:246:42:246:51 | privateKey | key |
465+
| HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` | HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` | HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` | The hard-coded value "Basic sdsdag:sdsdag" is used as $@. | HardcodedCredentials.js:292:37:292:57 | `Basic ... sdsdag` | authorization header |
466+
| HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` | HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` | HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` | The hard-coded value "Basic sdsdag:aaaiuogrweuibgbbbbb" is used as $@. | HardcodedCredentials.js:294:37:294:70 | `Basic ... gbbbbb` | authorization header |

javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,4 +284,13 @@
284284
require("http").request({auth: "user:fake token"}) // OK
285285
require("http").request({auth: "user:dcba"}) // OK
286286
require("http").request({auth: "user:custom string"}) // OK
287-
});
287+
});
288+
289+
(function () {
290+
// browser API
291+
var headers = new Headers();
292+
headers.append("Authorization", `Basic sdsdag:sdsdag`); // NOT OK
293+
headers.append("Authorization", `Basic sdsdag:xxxxxxxxxxxxxx`); // OK
294+
headers.append("Authorization", `Basic sdsdag:aaaiuogrweuibgbbbbb`); // NOT OK
295+
headers.append("Authorization", `Basic sdsdag:000000000000001`); // OK
296+
});

0 commit comments

Comments
 (0)