GHSA-w42g-7vfc-xf37

Suggest an improvement
Source
https://github.com/advisories/GHSA-w42g-7vfc-xf37
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-w42g-7vfc-xf37
Published
2020-06-05T19:38:14Z
Modified
2020-08-31T19:02:14Z
Summary
Introspection in schema validation in Apollo Server
Details

We encourage all users of Apollo Server to read this advisory in its entirety to understand the impact. The Resolution section contains details on patched versions.

Impact

If subscriptions: false is passed to the ApolloServer constructor options, there is no impact. If implementors were not expecting validation rules to be enforced on the WebSocket subscriptions transport and are unconcerned about introspection being enabled on the WebSocket subscriptions transport (or were not expecting that), then this advisory is not applicable. If introspection: true is passed to the ApolloServer constructor options, the impact is limited to user-provided validation rules (i.e., using validationRules) since there would be no expectation that introspection was disabled.

The enforcement of user-provided validation rules on the HTTP transport is working as intended and is unaffected by this advisory. Similarly, disabling introspection on the HTTP transport is working as intended and is unaffected by this advisory.

Note: Unless subscriptions: false is explicitly passed to the constructor parameters of new ApolloServer({ ... }), subscriptions are enabled by default, whether or not there is a Subscription type present in the schema. As an alternative to upgrading to a patched version, see the Workarounds section below to disable subscriptions if it is not necessary.

In cases where subscriptions: false is not explicitly set, the subscription server is impacted since validation rules which are enforced on the main request pipeline within Apollo Server were not being passed to the SubscriptionServer.create invocation (seen here, prior to the patch).

The omitted validation rules for the subscription server include any validationRules passed by implementors to the ApolloServer constructor which were expected to be enforced on the subscriptions WebSocket endpoint. Additionally, because an internal NoIntrospection validation rule is used to disable introspection, it would have been possible to introspect a server on the WebSocket endpoint that the SubscriptionServer creates even though it was not possible on other transports (e.g. HTTP).

The severity of risk depends on whether sensitive information is being stored in the schema itself. The contents of schema descriptions, or secrets which might be revealed by the names of types or field names within those types, will determine the risk to individual implementors.

Affected packages

The bug existed in apollo-server-core versions prior to version 2.14.2, however, this means all integration packages (e.g., apollo-server-express, etc.) prior to version 2.14.2 which depend on apollo-server-core for their subscriptions support are affected. This includes the apollo-server package that automatically provides an Express server.

Therefore, for officially published Apollo Server packages, the full list of affected packages includes: apollo-server, apollo-server-azure-functions, apollo-server-cache-memcached, apollo-server-core, apollo-server-cloud-functions, apollo-server-cloudflare, apollo-server-express, apollo-server-fastify, apollo-server-hapi, apollo-server-koa, apollo-server-lambda, and apollo-server-micro.

Note: The full list included here doesn't fit into the box provided by the GitHub Security Advisories form.

Resolution

The problem is resolved in Apollo Server versions 2.14.2 or higher. If upgrading is not an option, see Workarounds below. When upgrading, ensure that the affected integration package (e.g., apollo-server-express) and the apollo-server-core package are both updated to the patched versions. (The version numbers should both be 2.14.2.)

Workarounds

Upgrading to a patched version is the recommended solution. If upgrading is not an option, subscriptions can be disabled with subscriptions: false to resolve the impact. Disabling subscriptions in this way will disable all subscriptions support and the WebSocket transport:

const server = new ApolloServer({
  subscriptions: false,
  /* Other options, such as typeDefs, resolvers, schema, etc. */
});

For more information

If you have any questions or comments about this advisory, please open an issue and the maintainers will try to assist.

Credit and appreciation

Apollo fully believes in ethical disclosure of vulnerabilities by security researchers who notify us with details and provide us time to address and fix the issues before publicly disclosing.

Credit for this discovery goes to the team at Bitwala, who reported the concern to us responsibly after discovering it during their own auditing.

Database specific
{
    "cwe_ids":  [],
    "github_reviewed":  true,
    "github_reviewed_at":  "2020-06-05T19:37:38Z",
    "nvd_published_at":  null,
    "severity":  "MODERATE"
}
References

Affected packages

npm
apollo-server

Package

Name
apollo-server
View open source insights on deps.dev
Purl
pkg:npm/apollo-server

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-azure-functions

Package

Name
apollo-server-azure-functions
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-azure-functions

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-cache-memcached

Package

Name
apollo-server-cache-memcached
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-cache-memcached

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-core

Package

Name
apollo-server-core
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-core

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-cloud-functions

Package

Name
apollo-server-cloud-functions
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-cloud-functions

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-cloudflare

Package

Name
apollo-server-cloudflare
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-cloudflare

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-express

Package

Name
apollo-server-express
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-express

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-fastify

Package

Name
apollo-server-fastify
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-fastify

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-hapi

Package

Name
apollo-server-hapi
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-hapi

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-koa

Package

Name
apollo-server-koa
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-koa

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-lambda

Package

Name
apollo-server-lambda
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-lambda

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"
apollo-server-micro

Package

Name
apollo-server-micro
View open source insights on deps.dev
Purl
pkg:npm/apollo-server-micro

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2.14.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/06/GHSA-w42g-7vfc-xf37/GHSA-w42g-7vfc-xf37.json"