|
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) |
|
16 | 18 | |---------------------------------------------------------------------------|-------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
17 | 19 | | 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. | |
18 | 20 | | 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 not shown on LGTM by default. | |
| 21 | +| 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. | |
| 22 | +| 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.| |
| 23 | +| 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. | |
| 24 | +| 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. | |
| 25 | +| 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. | |
19 | 26 |
|
20 | 27 | ## Changes to existing queries |
21 | 28 |
|
22 | 29 | | **Query** | **Expected impact** | **Change** | |
23 | 30 | |--------------------------------|------------------------------|---------------------------------------------------------------------------| |
24 | 31 | | Incomplete string escaping or encoding (`js/incomplete-sanitization`) | Fewer false-positive results | This rule now recognizes additional ways delimiters can be stripped away. | |
25 | | -| Client-side cross-site scripting (`js/xss`) | More results | More potential vulnerabilities involving functions that manipulate DOM attributes are now recognized. | |
| 32 | +| 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. | |
26 | 33 | | Code injection (`js/code-injection`) | More results | More potential vulnerabilities involving functions that manipulate DOM event handler attributes are now recognized. | |
27 | 34 | | Hard-coded credentials (`js/hardcoded-credentials`) | Fewer false-positive results | This rule now flags fewer password examples. | |
28 | 35 | | Illegal invocation (`js/illegal-invocation`) | Fewer false-positive results | This rule now correctly handles methods named `call` and `apply`. | |
29 | | -| Incorrect suffix check (`js/incorrect-suffix-check`) | Fewer false-positive results | The query recognizes valid checks in more cases. |
| 36 | +| Incorrect suffix check (`js/incorrect-suffix-check`) | Fewer false-positive results | The query recognizes valid checks in more cases. | |
30 | 37 | | 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. | |
31 | 38 | | Password in configuration file (`js/password-in-configuration-file`) | Fewer false-positive results | This rule now flags fewer password examples. | |
32 | 39 | | 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. | |
| 40 | +| Reflected cross-site scripting (`js/reflected-xss`) | Fewer false-positive results | The query now recognizes more sanitizers. | |
| 41 | +| Stored cross-site scripting (`js/stored-xss`) | Fewer false-positive results | The query now recognizes more sanitizers. | |
33 | 42 | | Uncontrolled command line (`js/command-line-injection`) | More results | This query now treats responses from servers as untrusted. | |
34 | 43 |
|
35 | 44 | ## Changes to QL libraries |
36 | 45 |
|
37 | 46 | * `Expr.getDocumentation()` now handles chain assignments. |
| 47 | + |
| 48 | +## Removal of deprecated queries |
| 49 | + |
| 50 | +The following queries (deprecated since 1.17) are no longer available in the distribution: |
| 51 | + |
| 52 | +* Builtin redefined (js/builtin-redefinition) |
| 53 | +* Inefficient method definition (js/method-definition-in-constructor) |
| 54 | +* Bad parity check (js/incomplete-parity-check) |
| 55 | +* Potentially misspelled property or variable name (js/wrong-capitalization) |
| 56 | +* Unknown JSDoc tag (js/jsdoc/unknown-tag-type) |
| 57 | +* Invalid JSLint directive (js/jslint/invalid-directive) |
| 58 | +* Malformed JSLint directive (js/jslint/malformed-directive) |
| 59 | +* Use of HTML comments (js/html-comment) |
| 60 | +* Multi-line string literal (js/multi-line-string) |
| 61 | +* Octal literal (js/octal-literal) |
| 62 | +* Reserved word used as variable name (js/use-of-reserved-word) |
| 63 | +* Trailing comma in array or object expressions (js/trailing-comma-in-array-or-object) |
| 64 | +* Call to parseInt without radix (js/parseint-without-radix) |
0 commit comments