-
Improved modeling of data flow through destructuring assignments may give additional results for the security queries and other queries that rely on data flow.
-
Improved modeling of global variables may give more true-positive results and fewer false-positive results for a variety of queries.
-
Improved modeling of re-export declarations may result in fewer false-positive results for a variety of queries.
-
Improved modeling of taint flow through array operations may give additional results for the security queries.
-
The taint tracking library recognizes more ways in which taint propagates. In particular, some flow through string formatters is now recognized. This may give additional results for the security queries.
-
The taint tracking library now recognizes additional sanitization patterns. This may give fewer false-positive results for the security queries.
-
Type inference for simple function calls has been improved. This may give additional results for queries that rely on type inference.
-
Additional heuristics have been added to
semmle.javascript.heuristics. Addimport semmle.javascript.heuristics.allto a query in order to activate all of the heuristics at once. -
Handling of ambient TypeScript code has been improved. As a result, fewer false-positive results will be reported in
.d.tsfiles. -
Support for popular libraries has been improved. Consequently, queries may produce more results on code bases that use the following libraries: axios, bluebird, browserid-crypto, compose-function, cookie-parser, cookie-session, cross-fetch, crypto-js, deep-assign, deep-extend, deep-merge, deep, deepmerge, defaults-deep, defaults, dottie, dotty, ent, entities, escape-goat, express-jwt, express-session, extend-shallow, extend, extend2, fast-json-parse, forge, format-util, got, global, he, html-entities, isomorphic-fetch, jquery, js-extend, json-parse-better-errors, json-parse-safe, json-safe-parse, just-compose, just-extend, lodash, merge-deep, merge-options, merge, mixin-deep, mixin-object, MySQL2, node.extend, node-fetch, object-assign, object.assign, object.defaults, parse-json, printf, printj, q, ramda, request, request-promise, request-promise-any, request-promise-native, React Native, safe-json-parse, sanitize, sanitizer, smart-extend, sprintf.js, string-template, superagent, underscore, util-extend, utils-merge, validator, xss, xtend.
- HTTP and HTTPS requests made using the Node.js
http.requestandhttps.requestAPIs, and the ElectronElectron.net.requestandElectron.ClientRequestAPIs, are modeled asRemoteFlowSources. - HTTP header names are now always normalized to lower case to reflect the fact that they are case insensitive. In particular, the result of
HeaderDefinition.getAHeaderName, and the first parameter ofHeaderDefinition.defines,ExplicitHeaderDefinition.definesExplicitly, andRouteHandler.getAResponseHeaderare now always a lower-case string. - New AST nodes have been added for TypeScript 2.9 and 3.0 features.
- The class
JsonParseCallhas been deprecated. Update your queries to useJsonParserCallinstead. - The handling of spread arguments in the data flow library has been changed:
DataFlow::InvokeNode.getArgument(i)is now only defined when there is no spread argument at or before argument positioni, and similarlyInvokeNode.getNumArgumentis only defined for invocations without spread arguments.
