{"answers":{"affected":"2 open source packages ship an affected version, including graphiql. It affects 1 product.","exploited":"There is no known exploitation of CVE-2021-41248 in the wild and no public exploit code.","fix":"Upgrade graphiql to 1.4.7 or later.","what":"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."},"fix_prompt":"Check this codebase for CVE-2021-41248 and fix it if it is affected.\n\nWhat it is: 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.\nExploitation: There is no known exploitation of CVE-2021-41248 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- graphiql (npm): affected from 0.5.0; fixed in 1.4.7\n- graphiql (npm): affected from 0.5.0; fixed in 1.4.7\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2021-41248/ (Markdown: https://insights.sbomify.com/CVE-2021-41248/index.md)","id":"CVE-2021-41248","markdown":"https://insights.sbomify.com/CVE-2021-41248/index.md","name":"CVE-2021-41248","record":{"aliases":["GHSA-x4r7-m2q9-69c8"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["code_execution","security_bypass"],"network_reachable":"yes","non_default_config":true,"product_category":"GraphQL IDE library","requires_auth":"none","summary":"Attackers can inject malicious scripts via compromised GraphQL schemas in GraphiQL, potentially executing code if custom fetchers allow dynamic schema URLs.","user_interaction":"required","vuln_class":"xss"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"graphiql","vendor":"graphql"}],"cvss":{"score":7.1,"severity":"high","source":"cna","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:L","version":"3.1"},"cwes":[{"id":"CWE-79","name":"Improper Neutralization of Input During Web Page Generation"}],"description":"GraphiQL is the reference implementation of this monorepo, GraphQL IDE, an official project under the GraphQL Foundation. All versions of graphiql older than graphiql@1.4.7 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.","ecosystems":["npm"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"XSS vulnerability in GraphiQL","id":"CVE-2021-41248","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"npm","product":null,"products":[],"type":"xss","year":"2021"},"n_packages":2,"n_references":3,"next":{"headline":"XSS vulnerability in GraphQL Playground","id":"CVE-2021-41249"},"packages":[{"ecosystem":"npm","fixed":["1.4.7"],"introduced":["0.5.0"],"last_affected":[],"package":"graphiql","purl":null,"source":"GHSA-x4r7-m2q9-69c8"},{"ecosystem":"npm","fixed":["1.4.7"],"introduced":["0.5.0"],"last_affected":[],"package":"graphiql","purl":"pkg:npm/graphiql","source":"GHSA-x4r7-m2q9-69c8"}],"prev":{"headline":"incomplete logout in JupyterHub","id":"CVE-2021-41247"},"products":["graphiql"],"published":"2021-11-04","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":null,"exploitation":null,"technical_impact":null},"state":"PUBLISHED","updated":"2024-08-04","vendors":["graphql"]},"summary":"Attackers can inject malicious scripts via compromised GraphQL schemas in GraphiQL, potentially executing code if custom fetchers allow dynamic schema URLs.","url":"https://insights.sbomify.com/CVE-2021-41248/"}