|
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) |
|
11 | 13 | * The call graph has been improved to resolve method calls in more cases. This may produce more security alerts. |
12 | 14 | * Promises derived from a Deferred object are now recognized. |
13 | 15 |
|
| 16 | +* TypeScript 3.6 and 3.7 features are now supported. |
| 17 | + |
| 18 | +* Automatic classification of generated files has been improved, in particular files generated by Doxygen are now recognized. |
| 19 | + |
14 | 20 | ## New queries |
15 | 21 |
|
16 | 22 | | **Query** | **Tags** | **Purpose** | |
17 | 23 | |---------------------------------------------------------------------------|-------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
18 | 24 | | 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. | |
19 | | -| 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. | |
| 25 | +| 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. | |
20 | 26 | | 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. | |
| 27 | +| 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.| |
| 28 | +| 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. | |
| 29 | +| 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. | |
| 30 | +| 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. | |
21 | 31 |
|
22 | 32 | ## Changes to existing queries |
23 | 33 |
|
24 | 34 | | **Query** | **Expected impact** | **Change** | |
25 | 35 | |--------------------------------|------------------------------|---------------------------------------------------------------------------| |
| 36 | +| Double escaping or unescaping (`js/double-escaping`) | More results | This rule now detects additional escaping and unescaping functions. | |
26 | 37 | | Incomplete string escaping or encoding (`js/incomplete-sanitization`) | Fewer false-positive results | This rule now recognizes additional ways delimiters can be stripped away. | |
27 | 38 | | 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. | |
28 | 39 | | Code injection (`js/code-injection`) | More results | More potential vulnerabilities involving functions that manipulate DOM event handler attributes are now recognized. | |
|
35 | 46 | | Reflected cross-site scripting (`js/reflected-xss`) | Fewer false-positive results | The query now recognizes more sanitizers. | |
36 | 47 | | Stored cross-site scripting (`js/stored-xss`) | Fewer false-positive results | The query now recognizes more sanitizers. | |
37 | 48 | | Uncontrolled command line (`js/command-line-injection`) | More results | This query now treats responses from servers as untrusted. | |
| 49 | +| Uncontrolled data used in path expression (`js/path-injection`) | Fewer false-positive results | This query now recognizes calls to Express `sendFile` as safe in some cases. | |
| 50 | +| Unknown directive (`js/unknown-directive`) | Fewer false positive results | This query no longer flags uses of ":", which is sometimes used like a directive. | |
38 | 51 |
|
39 | 52 | ## Changes to QL libraries |
40 | 53 |
|
41 | 54 | * `Expr.getDocumentation()` now handles chain assignments. |
| 55 | + |
| 56 | +## Removal of deprecated queries |
| 57 | + |
| 58 | +The following queries (deprecated since 1.17) are no longer available in the distribution: |
| 59 | + |
| 60 | +* Builtin redefined (js/builtin-redefinition) |
| 61 | +* Inefficient method definition (js/method-definition-in-constructor) |
| 62 | +* Bad parity check (js/incomplete-parity-check) |
| 63 | +* Potentially misspelled property or variable name (js/wrong-capitalization) |
| 64 | +* Unknown JSDoc tag (js/jsdoc/unknown-tag-type) |
| 65 | +* Invalid JSLint directive (js/jslint/invalid-directive) |
| 66 | +* Malformed JSLint directive (js/jslint/malformed-directive) |
| 67 | +* Use of HTML comments (js/html-comment) |
| 68 | +* Multi-line string literal (js/multi-line-string) |
| 69 | +* Octal literal (js/octal-literal) |
| 70 | +* Reserved word used as variable name (js/use-of-reserved-word) |
| 71 | +* Trailing comma in array or object expressions (js/trailing-comma-in-array-or-object) |
| 72 | +* Call to parseInt without radix (js/parseint-without-radix) |
0 commit comments