CVE-2021-41248 XSS vulnerability in GraphiQL

High 7.1 Published Updated

Attackers can inject malicious scripts via compromised GraphQL schemas in GraphiQL, potentially executing code if custom fetchers allow dynamic schema URLs.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
A user has to click or open something
Fix
Available

What is CVE-2021-41248?

CVE-2021-41248 is a high-severity cross-site scripting vulnerability in graphql graphiql, published on 4 Nov 2021. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

Official description

GraphiQL is the reference implementation of this monorepo, GraphQL IDE, an official project under the GraphQL Foundation. All versions of graphiql older than [email protected] are vulnerable to compromised HTTP schema introspection responses or schema prop values with malicious GraphQL type names, exposing a dynamic XSS attack surface that can allow code injection on operation autocomplete. In order for the attack to take place, the user must load a vulnerable schema in graphiql. There are a number of ways that can occur. By default, the schema URL is not attacker-controllable in graphiql or in its suggested implementations or examples, leaving only very complex attack vectors. If a custom implementation of graphiql's fetcher allows the schema URL to be set dynamically, such as a URL query parameter like ?endpoint= in graphql-playground, or a database provided value, then this custom graphiql implementation is vulnerable to phishing attacks, and thus much more readily available, low or no privelege level xss attacks. The URLs could look like any generic looking graphql schema URL. It should be noted that desktop clients such as Altair, Insomnia, Postwoman, do not appear to be impacted by this. This vulnerability does not impact codemirror-graphql, monaco-graphql or other dependents, as it exists in onHasCompletion.ts in graphiql. It does impact all forks of graphiql, and every released version of graphiql.

Weakness: CWE-79

Which versions are affected by CVE-2021-41248?

2 open source packages ship an affected version, including graphiql. It affects 1 product.

PackageAffectedFixed in
graphiql npmFrom 0.5.01.4.7
graphiql npmFrom 0.5.01.4.7

Products include Graphql Graphiql.

How do I fix CVE-2021-41248?

Upgrade graphiql to 1.4.7 or later.

Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.

Is CVE-2021-41248 being exploited?

There is no known exploitation of CVE-2021-41248 in the wild and no public exploit code.

Sources

Also known as GHSA-x4r7-m2q9-69c8.

Is CVE-2021-41248 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free