Skip to content

Commit 082e16b

Browse files
committed
JS: More Alert comments in ReDoS/tst.js based on variable naming
Again just trying to translate the original intent behind the test, without taking actual query results into account
1 parent 607b184 commit 082e16b

1 file changed

Lines changed: 23 additions & 25 deletions

File tree

  • javascript/ql/test/query-tests/Security/CWE-400/ReDoS

javascript/ql/test/query-tests/Security/CWE-400/ReDoS/tst.js

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,22 @@ var good4 = /(\r\n|\r|\n)+/;
4141
// BAD - PoC: `node -e "/((?:[^\"\']|\".*?\"|\'.*?\')*?)([(,)]|$)/.test(\"'''''''''''''''''''''''''''''''''''''''''''''\\\"\");"`. It's complicated though, because the regexp still matches something, it just matches the empty-string after the attack string.
4242
var actuallyBad = /((?:[^"']|".*?"|'.*?')*?)([(,)]|$)/;
4343

44-
// NOT GOOD; attack: "a" + "[]".repeat(100) + ".b\n"
4544
// Adapted from Knockout (https://github.com/knockout/knockout), which is
4645
// licensed under the MIT license; see file knockout-LICENSE
47-
var bad6 = /^[\_$a-z][\_$a-z0-9]*(\[.*?\])*(\.[\_$a-z][\_$a-z0-9]*(\[.*?\])*)*$/i;
46+
var bad6 = /^[\_$a-z][\_$a-z0-9]*(\[.*?\])*(\.[\_$a-z][\_$a-z0-9]*(\[.*?\])*)*$/i; // $ Alert - attack: "a" + "[]".repeat(100) + ".b\n"
4847

4948

5049
var good6 = /(a|.)*/;
5150

5251
// Testing the NFA - only some of the below are detected.
53-
var bad7 = /^([a-z]+)+$/;
54-
var bad8 = /^([a-z]*)*$/;
55-
var bad9 = /^([a-zA-Z0-9])(([\\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$/;
56-
var bad10 = /^(([a-z])+.)+[A-Z]([a-z])+$/;
52+
var bad7 = /^([a-z]+)+$/; // $ Alert
53+
var bad8 = /^([a-z]*)*$/; // $ Alert
54+
var bad9 = /^([a-zA-Z0-9])(([\\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$/; // $ Alert
55+
var bad10 = /^(([a-z])+.)+[A-Z]([a-z])+$/; // $ Alert
5756

58-
// NOT GOOD; attack: "[" + "][".repeat(100) + "]!"
5957
// Adapted from Prototype.js (https://github.com/prototypejs/prototype), which
6058
// is licensed under the MIT license; see file Prototype.js-LICENSE.
61-
var bad11 = /(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/;
59+
var bad11 = /(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/; // $ Alert - attack: "[" + "][".repeat(100) + "]!"
6260

6361
// Adapted from Prism (https://github.com/PrismJS/prism), which is licensed
6462
// under the MIT license; see file Prism-LICENSE.
@@ -279,11 +277,11 @@ var bad78 = /^(b+.)+$/; // $ Alert
279277

280278
var good39 = /a*b/;
281279

282-
// All 4 bad combinations of nested * and +
283-
var bad79 = /(a*)*b/;
284-
var bad80 = /(a+)*b/;
285-
var bad81 = /(a*)+b/;
286-
var bad82 = /(a+)+b/;
280+
// All 4 bad combinations of nested * and +)
281+
var bad79 = /(a*)*b/; // $ Alert
282+
var bad80 = /(a+)*b/; // $ Alert
283+
var bad81 = /(a*)+b/; // $ Alert
284+
var bad82 = /(a+)+b/; // $ Alert
287285

288286

289287
var good40 = /(a|b)+/;
@@ -300,45 +298,45 @@ var bad86AndAHalf = /^((?:a{0,2}|-)|\w\{\d,\d\})+X$/; // $ MISSING: Alert
300298
var good43 = /("[^"]*?"|[^"\s]+)+(?=\s*|\s*$)/g;
301299

302300
var bad87 = /("[^"]*?"|[^"\s]+)+(?=\s*|\s*$)X/g; // $ Alert
303-
var bad88 = /("[^"]*?"|[^"\s]+)+(?=X)/g;
304-
var bad89 = /(x*)+(?=$)/
305-
var bad90 = /(x*)+(?=$|y)/
301+
var bad88 = /("[^"]*?"|[^"\s]+)+(?=X)/g; // $ Alert
302+
var bad89 = /(x*)+(?=$)/ // $ Alert
303+
var bad90 = /(x*)+(?=$|y)/ // $ Alert
306304

307305
// OK - but we spuriously conclude that a rejecting suffix exists.
308306
var good44 = /([\s\S]*)+(?=$)/;
309307
var good45 = /([\s\S]*)+(?=$|y)/;
310308

311309
var good46 = /(foo|FOO)*bar/;
312-
var bad91 = /(foo|FOO)*bar/i;
310+
var bad91 = /(foo|FOO)*bar/i; // $ Alert
313311

314312
var good47 = /([AB]|[ab])*C/;
315-
var bad92 = /([DE]|[de])*F/i;
313+
var bad92 = /([DE]|[de])*F/i; // $ Alert
316314

317-
var bad93 = /(?<=^v?|\sv?)(a|aa)*$/;
318-
var bad94 = /(a|aa)*$/;
315+
var bad93 = /(?<=^v?|\sv?)(a|aa)*$/; // $ Alert
316+
var bad94 = /(a|aa)*$/; // $ Alert
319317

320318
var bad95 = new RegExp(
321319
"(a" +
322320
"|" +
323321
"aa)*" +
324322
"b$"
325-
);
323+
); // $ Alert
326324

327325
var bad96 = new RegExp("(" +
328326
"(c|cc)*|" +
329327
"(d|dd)*|" +
330328
"(e|ee)*" +
331-
")f$");
329+
")f$"); // $ Alert
332330

333331
var bad97 = new RegExp(
334332
"(g|gg" +
335-
")*h$");
333+
")*h$"); // $ Alert
336334

337-
var bad98 = /^(?:\*\/\*|[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126}\/(?:\*|[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126})(?:\s* *; *[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126}(?:="?[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126}"?)?\s*)*)$/;
335+
var bad98 = /^(?:\*\/\*|[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126}\/(?:\*|[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126})(?:\s* *; *[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126}(?:="?[a-zA-Z0-9][a-zA-Z0-9!\#\$&\-\^_\.\+]{0,126}"?)?\s*)*)$/; // $ Alert
338336

339337
var good48 = /(\/(?:\/[\w.-]*)*){0,1}:([\w.-]+)/;
340338

341-
var bad99 = /(a{1,})*b/;
339+
var bad99 = /(a{1,})*b/; // $ Alert
342340

343341
var unicode = /^\n\u0000(\u0000|.)+$/;
344342

0 commit comments

Comments
 (0)