|
6 | 6 | - [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
|
7 | 7 | - [bluebird](http://bluebirdjs.com/)
|
8 | 8 | - [express](https://www.npmjs.com/package/express)
|
| 9 | + - [fancy-log](https://www.npmjs.com/package/fancy-log) |
9 | 10 | - [fastify](https://www.npmjs.com/package/fastify)
|
10 | 11 | - [fstream](https://www.npmjs.com/package/fstream)
|
11 | 12 | - [jGrowl](https://github.com/stanlemon/jGrowl)
|
12 | 13 | - [jQuery](https://jquery.com/)
|
13 | 14 | - [marsdb](https://www.npmjs.com/package/marsdb)
|
| 15 | + - [micro](https://www.npmjs.com/package/micro/) |
14 | 16 | - [minimongo](https://www.npmjs.com/package/minimongo/)
|
15 | 17 | - [mssql](https://www.npmjs.com/package/mssql)
|
16 | 18 | - [mysql](https://www.npmjs.com/package/mysql)
|
| 19 | + - [npmlog](https://www.npmjs.com/package/npmlog) |
17 | 20 | - [pg](https://www.npmjs.com/package/pg)
|
18 | 21 | - [sequelize](https://www.npmjs.com/package/sequelize)
|
19 | 22 | - [spanner](https://www.npmjs.com/package/spanner)
|
20 | 23 | - [sqlite](https://www.npmjs.com/package/sqlite)
|
21 | 24 | - [ssh2-streams](https://www.npmjs.com/package/ssh2-streams)
|
22 | 25 | - [ssh2](https://www.npmjs.com/package/ssh2)
|
| 26 | + - [vue](https://www.npmjs.com/package/vue) |
| 27 | + - [yargs](https://www.npmjs.com/package/yargs) |
| 28 | + - [webpack-dev-server](https://www.npmjs.com/package/webpack-dev-server) |
23 | 29 |
|
24 | 30 | * TypeScript 3.9 is now supported.
|
25 | 31 |
|
| 32 | +* TypeScript code embedded in HTML and Vue files is now extracted and analyzed. |
| 33 | + |
| 34 | +* The analysis of sanitizers has improved, leading to more accurate |
| 35 | + results from the security queries. |
| 36 | + |
26 | 37 | ## New queries
|
27 | 38 |
|
28 | 39 | | **Query** | **Tags** | **Purpose** |
|
29 | 40 | |---------------------------------------------------------------------------------|-------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
30 |
| -| Cross-site scripting through DOM (`js/xss-through-dom`) | security, external/cwe/cwe-079, external/cwe/cwe-116 | Highlights potential XSS vulnerabilities where existing text from the DOM is used as HTML. Results are not shown on LGTM by default. | |
| 41 | +| DOM text reinterpreted as HTML (`js/xss-through-dom`) | security, external/cwe/cwe-079, external/cwe/cwe-116 | Highlights potential XSS vulnerabilities where existing text from the DOM is used as HTML. Results are shown on LGTM by default. | |
31 | 42 | | Incomplete HTML attribute sanitization (`js/incomplete-html-attribute-sanitization`) | security, external/cwe/cwe-20, external/cwe/cwe-079, external/cwe/cwe-116 | Highlights potential XSS vulnerabilities due to incomplete sanitization of HTML meta-characters. Results are shown on LGTM by default. |
|
32 | 43 | | Unsafe expansion of self-closing HTML tag (`js/unsafe-html-expansion`) | security, external/cwe/cwe-079, external/cwe/cwe-116 | Highlights potential XSS vulnerabilities caused by unsafe expansion of self-closing HTML tags. |
|
33 | 44 | | Unsafe shell command constructed from library input (`js/shell-command-constructed-from-input`) | correctness, security, external/cwe/cwe-078, external/cwe/cwe-088 | Highlights potential command injections due to a shell command being constructed from library inputs. Results are shown on LGTM by default. |
|
| 45 | +| Download of sensitive file through insecure connection (`js/insecure-download`) | security, external/cwe/cwe-829 | Highlights downloads of sensitive files through an unencrypted protocol. Results are shown on LGTM by default. | |
| 46 | +| Exposure of private files (`js/exposure-of-private-files`) | security, external/cwe/cwe-200 | Highlights servers that serve private files. Results are shown on LGTM by default. | |
| 47 | +| Creating biased random numbers from a cryptographically secure source (`js/biased-cryptographic-random`) | security, external/cwe/cwe-327 | Highlights mathematical operations on cryptographically secure numbers that can create biased results. Results are shown on LGTM by default. | |
| 48 | +| Storage of sensitive information in build artifact (`js/build-artifact-leak`) | security, external/cwe/cwe-312 | Highlights storage of sensitive information in build artifacts. Results are shown on LGTM by default. | |
| 49 | +| Improper code sanitization (`js/bad-code-sanitization`) | security, external/cwe/cwe-094, external/cwe/cwe-079, external/cwe/cwe-116 | Highlights string concatenation where code is constructed without proper sanitization. Results are shown on LGTM by default. | |
| 50 | +| Disabling certificate validation (`js/disabling-certificate-validation`) | security, external/cwe-295 | Highlights locations where SSL certificate validation is disabled. Results are shown on LGTM by default. | |
| 51 | +| Incomplete multi-character sanitization (`js/incomplete-multi-character-sanitization`) | correctness, security, external/cwe/cwe-20, external/cwe/cwe-116 | Highlights sanitizers that fail to remove dangerous substrings completely. Results are shown on LGTM by default. | |
34 | 52 |
|
35 | 53 | ## Changes to existing queries
|
36 | 54 |
|
37 | 55 | | **Query** | **Expected impact** | **Change** |
|
38 | 56 | |--------------------------------|------------------------------|---------------------------------------------------------------------------|
|
39 |
| -| Client-side cross-site scripting (`js/xss`) | Fewer results | This query no longer flags optionally sanitized values. | |
40 |
| -| Client-side URL redirect (`js/client-side-unvalidated-url-redirection`) | Fewer results | This query now recognizes additional safe patterns of doing URL redirects. | |
41 | 57 | | Client-side cross-site scripting (`js/xss`) | Fewer results | This query now recognizes additional safe patterns of constructing HTML. |
|
| 58 | +| Client-side URL redirect (`js/client-side-unvalidated-url-redirection`) | Fewer results | This query now recognizes additional safe patterns of doing URL redirects. | |
42 | 59 | | Code injection (`js/code-injection`) | More results | More potential vulnerabilities involving NoSQL code operators are now recognized. |
|
| 60 | +| Exception text reinterpreted as HTML (`js/exception-xss`) | Rephrased and changed visibility | Rephrased name and alert message. Severity lowered from error to warning. Results are now shown on LGTM by default. | |
43 | 61 | | Expression has no effect (`js/useless-expression`) | Fewer results | This query no longer flags an expression when that expression is the only content of the containing file. |
|
| 62 | +| Hard-coded credentials (`js/hardcoded-credentials`) | More results | This query now recognizes hard-coded credentials sent via HTTP authorization headers. | |
44 | 63 | | Incomplete URL scheme check (`js/incomplete-url-scheme-check`) | More results | This query now recognizes additional url scheme checks. |
|
| 64 | +| Insecure randomness (`js/insecure-randomness`) | Fewer results | This query now recognizes when an insecure random value is used as a fallback when secure random values are unsupported. | |
45 | 65 | | Misspelled variable name (`js/misspelled-variable-name`) | Message changed | The message for this query now correctly identifies the misspelled variable in additional cases. |
|
| 66 | +| Non-linear pattern (`js/non-linear-pattern`) | Fewer duplicates and message changed | This query now generates fewer duplicate alerts and has a clearer explanation in case of type annotations used in a pattern. | |
46 | 67 | | Prototype pollution in utility function (`js/prototype-pollution-utility`) | More results | This query now recognizes additional utility functions as vulnerable to prototype polution. |
|
47 |
| -| Prototype pollution in utility function (`js/prototype-pollution-utility`) | More results | This query now recognizes more coding patterns that are vulnerable to prototype pollution. | |
48 | 68 | | Uncontrolled command line (`js/command-line-injection`) | More results | This query now recognizes additional command execution calls. |
|
49 | 69 | | Uncontrolled data used in path expression (`js/path-injection`) | More results | This query now recognizes additional file system calls. |
|
| 70 | +| Uncontrolled data used in path expression (`js/path-injection`) | Fewer results | This query no longer flags paths that have been checked to be part of a collection. | |
50 | 71 | | Unknown directive (`js/unknown-directive`) | Fewer results | This query no longer flags directives generated by the Babel compiler. |
|
| 72 | +| Unneeded defensive code (`js/unneeded-defensive-code`) | Fewer false-positive results | This query now recognizes checks meant to handle the `document.all` object. | |
51 | 73 | | Unused property (`js/unused-property`) | Fewer results | This query no longer flags properties of objects that are operands of `yield` expressions. |
|
52 | 74 | | Zip Slip (`js/zipslip`) | More results | This query now recognizes additional vulnerabilities. |
|
53 | 75 |
|
@@ -83,3 +105,4 @@ The following low-precision queries are no longer run by default on LGTM (their
|
83 | 105 | - `ParameterNode.asExpr()` and `.getAstNode()` now gets the parameter's AST node, whereas previously it had no result.
|
84 | 106 | - `Expr.flow()` now has a more meaningful result for destructuring patterns. Previously this node was disconnected from the data flow graph. Now it represents the values being destructured by the pattern.
|
85 | 107 | * The global data-flow and taint-tracking libraries now model indirect parameter accesses through the `arguments` object in some cases, which may lead to additional results from some of the security queries, particularly "Prototype pollution in utility function".
|
| 108 | +* The predicates `Type.getProperty()` and variants of `Type.getMethod()` have been deprecated due to lack of use-cases. Looking up a named property of a static type is no longer supported, favoring faster extraction times instead. |
0 commit comments