16 KiB
0.8.7
Minor Analysis Improvements
- Deleted many deprecated predicates and classes with uppercase
CPU,TLD,SSA,ASMetc. in their names. Use the PascalCased versions instead. - Deleted the deprecated
getMessageSuffixpredicates inCodeInjectionCustomizations.qll. - Deleted the deprecated
semmle/javascript/security/dataflow/ExternalAPIUsedWithUntrustedData.qllfile. - Deleted the deprecated
getANonHtmlHeaderDefinitionandnonHtmlContentTypeHeaderpredicates fromReflectedXssCustomizations.qll. - Deleted the deprecated
semmle/javascript/security/OverlyLargeRangeQuery.qll,semmle/javascript/security/regexp/ExponentialBackTracking.qll,semmle/javascript/security/regexp/NfaUtils.qll, andsemmle/javascript/security/regexp/NfaUtils.qllfiles. - Deleted the deprecated
Expressions/TypoDatabase.qllfile. - The diagnostic query
js/diagnostics/successfully-extracted-files, and therefore the Code Scanning UI measure of scanned JavaScript and TypeScript files, now considers any JavaScript and TypeScript file seen during extraction, even one with some errors, to be extracted / scanned.
0.8.6
No user-facing changes.
0.8.5
No user-facing changes.
0.8.4
Minor Analysis Improvements
- Added models for the
sqliteandbetter-sqlite3npm packages. - TypeScript 5.3 is now supported.
0.8.3
No user-facing changes.
0.8.2
No user-facing changes.
0.8.1
Minor Analysis Improvements
- The contents of
.jspfiles are now extracted, and any<script>tags inside these files will be parsed as JavaScript. - Import attributes are now supported in JavaScript code.
Note that import attributes are an evolution of an earlier proposal called "import assertions", which were implemented in TypeScript 4.5.
The QL library includes new predicates named
getImportAttributes()that should be used in favor of the now deprecatedgetImportAssertion(); in addition, thegetImportAttributes()method of theDynamicImportExprhas been renamed togetImportOptions(). - Deleted the deprecated
getAnImmediateUse,getAUse,getARhs, andgetAValueReachingRhspredicates from theAPI::Nodeclass. - Deleted the deprecated
mayReferToParameterpredicate fromDataFlow::Node. - Deleted the deprecated
getStaticMethodandgetAStaticMethodpredicates fromDataFlow::ClassNode. - Deleted the deprecated
isLibaryFilepredicate fromClassifyFiles.qll, useisLibraryFileinstead. - Deleted many library models that were build on the AST. Use the new models that are build on the dataflow library instead.
- Deleted the deprecated
semmle.javascript.security.performancefolder, usesemmle.javascript.security.regexpinstead. - Tagged template literals have been added to
DataFlow::CallNode. This allows the analysis to find flow into functions called with a tagged template literal, and the arguments to a tagged template literal are part of the API-graph inApiGraphs.qll.
0.8.0
No user-facing changes.
0.7.5
No user-facing changes.
0.7.4
Major Analysis Improvements
- Added support for TypeScript 5.2.
0.7.3
No user-facing changes.
0.7.2
Minor Analysis Improvements
- Added
log-injectionas a customizable sink kind for log injection.
0.7.1
No user-facing changes.
0.7.0
Minor Analysis Improvements
- Added models for the Webix Framework.
0.6.4
No user-facing changes.
0.6.3
Major Analysis Improvements
- Added support for TypeScript 5.1.
Minor Analysis Improvements
- Deleted many deprecated predicates and classes with uppercase
XML,JSON,URL,API, etc. in their names. Use the PascalCased versions instead. - Deleted the deprecated
localTaintSteppredicate fromDataFlow.qll. - Deleted the deprecated
stringStep, andlocalTaintSteppredicates fromTaintTracking.qll. - Deleted many modules that started with a lowercase letter. Use the versions that start with an uppercase letter instead.
- Deleted the deprecated
HtmlInjectionConfigurationandJQueryHtmlOrSelectorInjectionConfigurationclasses fromDomBasedXssQuery.qll, useConfigurationinstead. - Deleted the deprecated
DefiningIdentifierclass and theDefinitions.qllfile it was in. UseSsaDefinitioninstead. - Deleted the deprecated
definitionReaches,localDefinitionReaches,getAPseudoDefinitionInput,nextDefAfter, andlocalDefinitionOverwritespredicates fromDefUse.qll. - Updated the following JavaScript sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working.
command-line-injectiontocommand-injectioncredentials[kind]tocredentials-kind
- Added a support of sub modules in
node_modules.
0.6.2
Minor Analysis Improvements
- Improved the queries for injection vulnerabilities in GitHub Actions workflows (
js/actions/command-injectionandjs/actions/pull-request-target) and the associated librarysemmle.javascript.Actions. These now support steps defined in composite actions, in addition to steps defined in Actions workflow files. It supports more potentially untrusted input values. Additionally to the shell injections it now also detects injections inactions/github-script. It also detects simple injections from user controlled${{ env.name }}. Additionally to theymlextension now it also supports workflows with theyamlextension.
0.6.1
Major Analysis Improvements
- The Yaml.qll library was moved into a shared library pack named
codeql/yamlto make it possible for other languages to re-use it. This change should be backwards compatible for existing JavaScript queries.
0.6.0
Major Analysis Improvements
- Added support for TypeScript 5.0.
Minor Analysis Improvements
router.pushandrouter.replaceinNext.jsare now considered as XSS sink.- The crypto-js module in
CryptoLibraries.qllnow supports progressive hashing with algo.update().
0.5.2
No user-facing changes.
0.5.1
Minor Analysis Improvements
- Deleted the deprecated
getPathandgetFolderpredicates from theXmlFileclass. - Deleted the deprecated
getIdfrom theFunction,NamespaceDefinition, andImportEqualsDeclarationclasses. - Deleted the deprecated
flowsTopredicate from theHTTP::Servers::RequestSourceandHTTP::Servers::ResponseSourceclass. - Deleted the deprecated
getEventNamepredicate from theSocketIO::ReceiveNode,SocketIO::SendNode,SocketIOClient::SendNodeclasses. - Deleted the deprecated
RateLimitedRouteHandlerExprandRouteHandlerExpressionWithRateLimiterclasses. - Import assertions are now supported. Previously this feature was only supported in TypeScript code, but is now supported for plain JavaScript as well and is also accessible in the AST.
0.5.0
Breaking Changes
- The
CryptographicOperationconcept has been changed to use a range pattern. This is a breaking change and existing implementations ofCryptographicOperationwill need to be updated in order to compile. These implementations can be updated by:- Extending
CryptographicOperation::Rangerather thanCryptographicOperation - Renaming the
getInput()member predicate asgetAnInput() - Implementing the
BlockMode getBlockMode()member predicate. The implementation for this can benone()if the operation is a hashing operation or an encryption operation using a stream cipher.
- Extending
0.4.3
Minor Analysis Improvements
- Added dataflow sources for the express-ws library.
0.4.2
Minor Analysis Improvements
- Added sinks from the
node-ptylibrary to thejs/code-injectionquery.
0.4.1
No user-facing changes.
0.4.0
New Features
- Improved support for Restify framework, leading to more results when scanning applications developed with this framework.
- Added support for the Spife framework.
Minor Analysis Improvements
- Deleted the deprecated
Instanceclass from theVuemodule. - Deleted the deprecated
VHtmlSourceWriteclass fromDomBasedXssQuery.qll. - Deleted all the deprecated
[QueryName].qllfiles from thejavascript/ql/lib/semmle/javascript/security/dataflowfolder, use the corresponding[QueryName]Query.qllfiles instead. - The ReDoS libraries in
semmle.code.javascript.security.regexphas been moved to a shared pack inside theshared/folder, and the previous location has been deprecated.
0.3.6
No user-facing changes.
0.3.5
No user-facing changes.
0.3.4
Major Analysis Improvements
- Added support for TypeScript 4.9.
0.3.3
No user-facing changes.
0.3.2
No user-facing changes.
0.3.1
Minor Analysis Improvements
- Several of the SQL and NoSQL library models have improved, leading to more results for the
js/sql-injectionquery, and in some cases thejs/missing-rate-limitingquery.
0.3.0
Breaking Changes
-
Many library models have been rewritten to use dataflow nodes instead of the AST. The types of some classes have been changed, and these changes may break existing code. Other classes and predicates have been renamed, in these cases the old name is still available as a deprecated feature.
-
The basetype of the following list of classes has changed from an expression to a dataflow node, and thus code using these classes might break. The fix to these breakages is usually to use
asExpr()to get an expression from a dataflow node, or to use.flow()to get a dataflow node from an expression.- DOM.qll#WebStorageWrite
- CryptoLibraries.qll#CryptographicOperation
- Express.qll#Express::RequestBodyAccess
- HTTP.qll#HTTP::ResponseBody
- HTTP.qll#HTTP::CookieDefinition
- HTTP.qll#HTTP::ServerDefinition
- HTTP.qll#HTTP::RouteSetup
- NoSQL.qll#NoSql::Query
- SQL.qll#SQL::SqlString
- SQL.qll#SQL::SqlSanitizer
- HTTP.qll#ResponseBody
- HTTP.qll#CookieDefinition
- HTTP.qll#ServerDefinition
- HTTP.qll#RouteSetup
- HTTP.qll#HTTP::RedirectInvocation
- HTTP.qll#RedirectInvocation
- Express.qll#Express::RouterDefinition
- AngularJSCore.qll#LinkFunction
- Connect.qll#Connect::StandardRouteHandler
- CryptoLibraries.qll#CryptographicKeyCredentialsExpr
- AWS.qll#AWS::Credentials
- Azure.qll#Azure::Credentials
- Connect.qll#Connect::Credentials
- DigitalOcean.qll#DigitalOcean::Credentials
- Express.qll#Express::Credentials
- NodeJSLib.qll#NodeJSLib::Credentials
- PkgCloud.qll#PkgCloud::Credentials
- Request.qll#Request::Credentials
- ServiceDefinitions.qll#InjectableFunctionServiceRequest
- SensitiveActions.qll#SensitiveVariableAccess
- SensitiveActions.qll#CleartextPasswordExpr
- Connect.qll#Connect::ServerDefinition
- Restify.qll#Restify::ServerDefinition
- Connect.qll#Connect::RouteSetup
- Express.qll#Express::RouteSetup
- Fastify.qll#Fastify::RouteSetup
- Hapi.qll#Hapi::RouteSetup
- Koa.qll#Koa::RouteSetup
- Restify.qll#Restify::RouteSetup
- NodeJSLib.qll#NodeJSLib::RouteSetup
- Express.qll#Express::StandardRouteHandler
- Express.qll#Express::SetCookie
- Hapi.qll#Hapi::RouteHandler
- HTTP.qll#HTTP::Servers::StandardHeaderDefinition
- HTTP.qll#Servers::StandardHeaderDefinition
- Hapi.qll#Hapi::ServerDefinition
- Koa.qll#Koa::AppDefinition
- SensitiveActions.qll#SensitiveCall
Deprecated APIs
- Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias.
Major Analysis Improvements
- Added support for TypeScript 4.8.
Minor Analysis Improvements
- A model for the
mermaidlibrary has been added. XSS queries can now detect flow through therendermethod of themermaidlibrary.
0.2.5
0.2.4
Deprecated APIs
- Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias.
- The utility files previously in the
semmle.javascript.security.performancepackage have been moved to thesemmle.javascript.security.regexppackage.
The previous files still exist as deprecated aliases.
Minor Analysis Improvements
- Most deprecated predicates/classes/modules that have been deprecated for over a year have been deleted.
Bug Fixes
- Fixed that top-level
for awaitstatements would produce a syntax error. These statements are now parsed correctly.
0.2.3
0.2.2
0.2.1
Minor Analysis Improvements
- The
chownrlibrary is now modeled as a sink for thejs/path-injectionquery. - Improved modeling of sensitive data sources, so common words like
certainandsecretaryare no longer considered a certificate and a secret (respectively). - The
gray-matterlibrary is now modeled as a sink for thejs/code-injectionquery.
0.2.0
Major Analysis Improvements
- Added support for TypeScript 4.7.
Minor Analysis Improvements
- All new ECMAScript 2022 features are now supported.
0.1.4
0.1.3
Minor Analysis Improvements
- The
isLibaryFilepredicate fromClassifyFiles.qllhas been renamed toisLibraryFileto fix a typo.
0.1.2
Deprecated APIs
- The
ReflectedXss,StoredXss,XssThroughDom, andExceptionXssmodules fromXss.qllhave been deprecated.
Use theCustomizations.qllfile belonging to the query instead.
Minor Analysis Improvements
- The cash library is now modelled as an alias for JQuery.
Sinks and sources from cash should now be handled by all XSS queries. - Added the
Selectionapi as a DOM text source in thejs/xss-through-domquery. - The security queries now recognize drag and drop data as a source, enabling the queries to flag additional alerts.
- The security queries now recognize ClipboardEvent function parameters as a source, enabling the queries to flag additional alerts.
0.1.1
0.1.0
Bug Fixes
- The following predicates on
API::Nodehave been changed so as not to include the receiver. The receiver should now only be accessed viagetReceiver().getParameter(int i)previously included the receiver wheni = -1getAParameter()previously included the receivergetLastParameter()previously included the receiver for calls with no arguments
0.0.14
0.0.13
Deprecated APIs
- Some predicates from
DefUse.qll,DataFlow.qll,TaintTracking.qll,DOM.qll,Definitions.qllthat weren't used by any query have been deprecated. The documentation for each predicate points to an alternative. - Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias.
- Some modules that started with a lowercase letter have been renamed to follow our style-guide. The old name still exists as a deprecated alias.
Minor Analysis Improvements
- All deprecated predicates/classes/modules that have been deprecated for over a year have been deleted.
0.0.12
Major Analysis Improvements
- Added support for TypeScript 4.6.
Minor Analysis Improvements
- Added sources from the
jsziplibrary to thejs/zipslipquery.
0.0.11
0.0.10
0.0.9
Deprecated APIs
- The
codeql/javascript-upgradesCodeQL pack has been removed. All upgrades scripts have been merged into thecodeql/javascript-allCodeQL pack.
0.0.8
0.0.7
0.0.6
New Features
- TypeScript 4.5 is now supported.