|
2 | 2 |
|
3 | 3 | ## General improvements |
4 | 4 |
|
| 5 | +* Suppor for `globalThis` has been added. |
| 6 | + |
5 | 7 | * Support for the following frameworks and libraries has been improved: |
6 | 8 | - [firebase](https://www.npmjs.com/package/firebase) |
7 | 9 | - [mongodb](https://www.npmjs.com/package/mongodb) |
8 | 10 | - [mongoose](https://www.npmjs.com/package/mongoose) |
| 11 | + - [rate-limiter-flexible](https://www.npmjs.com/package/rate-limiter-flexible) |
9 | 12 |
|
10 | 13 | * The call graph has been improved to resolve method calls in more cases. This may produce more security alerts. |
11 | 14 |
|
| 15 | +* TypeScript 3.6 features are supported. |
| 16 | + |
| 17 | + |
12 | 18 | ## New queries |
13 | 19 |
|
14 | 20 | | **Query** | **Tags** | **Purpose** | |
15 | 21 | |---------------------------------------------------------------------------|-------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
16 | | -| Unused index variable (`js/unused-index-variable`) | correctness | Highlights loops that iterate over an array, but do not use the index variable to access array elements, indicating a possible typo or logic error. | |
17 | | - |
| 22 | +| Unused index variable (`js/unused-index-variable`) | correctness | Highlights loops that iterate over an array, but do not use the index variable to access array elements, indicating a possible typo or logic error. Results are shown on LGTM by default. | |
| 23 | +| Loop bound injection (`js/loop-bound-injection`) | security, external/cwe/cwe-834 | Highlights loops where a user-controlled object with an arbitrary .length value can trick the server to loop indefinitely. Results are shown on LGTM by default. | |
| 24 | +| Suspicious method name (`js/suspicious-method-name-declaration`) | correctness, typescript, methods | Highlights suspiciously named methods where the developer likely meant to write a constructor or function. Results are shown on LGTM by default. | |
| 25 | +| Shell command built from environment values (`js/shell-command-injection-from-environment`) | correctness, security, external/cwe/cwe-078, external/cwe/cwe-088 | Highlights shell commands that may change behavior inadvertently depending on the execution environment, indicating a possible violation of [CWE-78](https://cwe.mitre.org/data/definitions/78.html). Results are shown on LGTM by default.| |
| 26 | +| Use of returnless function (`js/use-of-returnless-function`) | maintainability, correctness | Highlights calls where the return value is used, but the callee never returns a value. Results are shown on LGTM by default. | |
| 27 | +| Useless regular expression character escape (`js/useless-regexp-character-escape`) | correctness, security, external/cwe/cwe-20 | Highlights regular expression strings with useless character escapes, indicating a possible violation of [CWE-20](https://cwe.mitre.org/data/definitions/20.html). Results are shown on LGTM by default. | |
| 28 | +| Unreachable method overloads (`js/unreachable-method-overloads`) | correctness, typescript | Highlights method overloads that are impossible to use from client code. Results are shown on LGTM by default. | |
18 | 29 |
|
19 | 30 | ## Changes to existing queries |
20 | 31 |
|
21 | 32 | | **Query** | **Expected impact** | **Change** | |
22 | 33 | |--------------------------------|------------------------------|---------------------------------------------------------------------------| |
23 | 34 | | Incomplete string escaping or encoding (`js/incomplete-sanitization`) | Fewer false-positive results | This rule now recognizes additional ways delimiters can be stripped away. | |
24 | | -| Client-side cross-site scripting (`js/xss`) | More results | More potential vulnerabilities involving functions that manipulate DOM attributes are now recognized. | |
| 35 | +| Client-side cross-site scripting (`js/xss`) | More results, fewer false-positive results | More potential vulnerabilities involving functions that manipulate DOM attributes are now recognized, and more sanitizers are detected. | |
25 | 36 | | Code injection (`js/code-injection`) | More results | More potential vulnerabilities involving functions that manipulate DOM event handler attributes are now recognized. | |
26 | 37 | | Hard-coded credentials (`js/hardcoded-credentials`) | Fewer false-positive results | This rule now flags fewer password examples. | |
27 | | -| Incorrect suffix check (`js/incorrect-suffix-check`) | Fewer false-positive results | The query recognizes valid checks in more cases. |
| 38 | +| Illegal invocation (`js/illegal-invocation`) | Fewer false-positive results | This rule now correctly handles methods named `call` and `apply`. | |
| 39 | +| Incorrect suffix check (`js/incorrect-suffix-check`) | Fewer false-positive results | The query recognizes valid checks in more cases. | |
28 | 40 | | Network data written to file (`js/http-to-file-access`) | Fewer false-positive results | This query has been renamed to better match its intended purpose, and now only considers network data untrusted. | |
29 | 41 | | Password in configuration file (`js/password-in-configuration-file`) | Fewer false-positive results | This rule now flags fewer password examples. | |
30 | 42 | | Prototype pollution (`js/prototype-pollution`) | More results | The query now highlights vulnerable uses of jQuery and Angular, and the results are shown on LGTM by default. | |
| 43 | +| Reflected cross-site scripting (`js/reflected-xss`) | Fewer false-positive results | The query now recognizes more sanitizers. | |
| 44 | +| Stored cross-site scripting (`js/stored-xss`) | Fewer false-positive results | The query now recognizes more sanitizers. | |
31 | 45 | | Uncontrolled command line (`js/command-line-injection`) | More results | This query now treats responses from servers as untrusted. | |
32 | 46 |
|
33 | 47 | ## Changes to QL libraries |
34 | 48 |
|
35 | 49 | * `Expr.getDocumentation()` now handles chain assignments. |
| 50 | + |
| 51 | +## Removal of deprecated queries |
| 52 | + |
| 53 | +The following queries (deprecated since 1.17) are no longer available in the distribution: |
| 54 | + |
| 55 | +* Builtin redefined (js/builtin-redefinition) |
| 56 | +* Inefficient method definition (js/method-definition-in-constructor) |
| 57 | +* Bad parity check (js/incomplete-parity-check) |
| 58 | +* Potentially misspelled property or variable name (js/wrong-capitalization) |
| 59 | +* Unknown JSDoc tag (js/jsdoc/unknown-tag-type) |
| 60 | +* Invalid JSLint directive (js/jslint/invalid-directive) |
| 61 | +* Malformed JSLint directive (js/jslint/malformed-directive) |
| 62 | +* Use of HTML comments (js/html-comment) |
| 63 | +* Multi-line string literal (js/multi-line-string) |
| 64 | +* Octal literal (js/octal-literal) |
| 65 | +* Reserved word used as variable name (js/use-of-reserved-word) |
| 66 | +* Trailing comma in array or object expressions (js/trailing-comma-in-array-or-object) |
| 67 | +* Call to parseInt without radix (js/parseint-without-radix) |
0 commit comments