|
2 | 2 |
|
3 | 3 | ## General improvements |
4 | 4 |
|
| 5 | +* TypeScript 3.8 is now supported. |
| 6 | + |
5 | 7 | * Alert suppression can now be done with single-line block comments (`/* ... */`) as well as line comments (`// ...`). |
6 | 8 |
|
7 | 9 | * Imports with the `.js` extension can now be resolved to a TypeScript file, |
8 | 10 | when the import refers to a file generated by TypeScript. |
9 | 11 |
|
10 | 12 | * Imports that rely on path-mappings from a `tsconfig.json` file can now be resolved. |
11 | 13 |
|
| 14 | +* Export declarations of the form `export * as ns from "x"` are now analyzed more precisely. |
| 15 | + |
12 | 16 | * The analysis of sanitizer guards has improved, leading to fewer false-positive results from the security queries. |
13 | 17 |
|
| 18 | +* The call graph construction has been improved, leading to more results from the security queries: |
| 19 | + - Calls can now be resolved to indirectly-defined class members in more cases. |
| 20 | + - Calls through partial invocations such as `.bind` can now be resolved in more cases. |
| 21 | + |
| 22 | +* Support for flow summaries has been more clearly marked as being experimental and moved to the new `experimental` folder. |
| 23 | + |
14 | 24 | * Support for the following frameworks and libraries has been improved: |
15 | 25 | - [Electron](https://electronjs.org/) |
16 | 26 | - [Handlebars](https://www.npmjs.com/package/handlebars) |
|
24 | 34 | - [http2](https://nodejs.org/api/http2.html) |
25 | 35 | - [lazy-cache](https://www.npmjs.com/package/lazy-cache) |
26 | 36 | - [react](https://www.npmjs.com/package/react) |
| 37 | + - [request](https://www.npmjs.com/package/request) |
27 | 38 | - [send](https://www.npmjs.com/package/send) |
28 | 39 | - [typeahead.js](https://www.npmjs.com/package/typeahead.js) |
29 | 40 | - [ws](https://github.com/websockets/ws) |
|
35 | 46 | | Cross-site scripting through exception (`js/xss-through-exception`) | security, external/cwe/cwe-079, external/cwe/cwe-116 | Highlights potential XSS vulnerabilities where an exception is written to the DOM. Results are not shown on LGTM by default. | |
36 | 47 | | Regular expression always matches (`js/regex/always-matches`) | correctness, regular-expressions | Highlights regular expression checks that trivially succeed by matching an empty substring. Results are shown on LGTM by default. | |
37 | 48 | | Missing await (`js/missing-await`) | correctness | Highlights expressions that operate directly on a promise object in a nonsensical way, instead of awaiting its result. Results are shown on LGTM by default. | |
38 | | -| Prototype pollution in utility function (`js/prototype-pollution-utility`) | security, external/cwe/cwe-400, external/cwe/cwe-471 | Highlights recursive copying operations that are susceptible to prototype pollution. Results are shown on LGTM by default. | |
| 49 | +| Polynomial regular expression used on uncontrolled data (`js/polynomial-redos`) | security, external/cwe/cwe-730, external/cwe/cwe-400 | Highlights expensive regular expressions that may be used on malicious input. Results are shown on LGTM by default. | |
| 50 | +| Prototype pollution in utility function (`js/prototype-pollution-utility`) | security, external/cwe/cwe-400, external/cwe/cwe-471 | Highlights recursive assignment operations that are susceptible to prototype pollution. Results are shown on LGTM by default. | |
| 51 | +| Unsafe jQuery plugin (`js/unsafe-jquery-plugin`) | Highlights potential XSS vulnerabilities in unsafely designed jQuery plugins. Results are shown on LGTM by default. | |
| 52 | +| Unnecessary use of `cat` process (`js/unnecessary-use-of-cat`) | correctness, security, maintainability | Highlights command executions of `cat` where the fs API should be used instead. Results are shown on LGTM by default. | |
| 53 | + |
39 | 54 |
|
40 | 55 | ## Changes to existing queries |
41 | 56 |
|
|
48 | 63 | | Expression has no effect (`js/useless-expression`) | Fewer false positive results | The query now recognizes block-level flow type annotations and ignores the first statement of a try block. | |
49 | 64 | | Use of call stack introspection in strict mode (`js/strict-mode-call-stack-introspection`) | Fewer false positive results | The query no longer flags expression statements. | |
50 | 65 | | Missing CSRF middleware (`js/missing-token-validation`) | Fewer false positive results | The query reports fewer duplicates and only flags handlers that explicitly access cookie data. | |
51 | | -| Uncontrolled data used in path expression (`js/path-injection`) | More results | This query now recognizes additional ways dangerous paths can be constructed. | |
| 66 | +| Uncontrolled data used in path expression (`js/path-injection`) | More results | This query now recognizes additional ways dangerous paths can be constructed and used. | |
52 | 67 | | Uncontrolled command line (`js/command-line-injection`) | More results | This query now recognizes additional ways of constructing arguments to `cmd.exe` and `/bin/sh`. | |
| 68 | +| Syntax error (`js/syntax-error`) | Lower severity | This results of this query are now displayed with lower severity. | |
| 69 | +| Use of password hash with insufficient computational effort (`js/insufficient-password-hash`) | Fewer false positive results | This query now recognizes additional cases that do not require secure hashing. | |
53 | 70 |
|
54 | 71 | ## Changes to libraries |
55 | 72 |
|
|
0 commit comments