Description
Altair is a GraphQL client for all platforms. From 7.2.4 until 8.5.8, packages/altair-iframe-sandbox/src/main.ts reads plugin_sandbox_opts from the iframe-sandbox query string and passes attacker-controlled scriptUrls to injectScript() in packages/altair-core/src/utils/inject.ts, which creates script elements in the page. The intended parent iframe flow places the page in an iframe with sandbox allow-scripts and without allow-same-origin, but direct navigation to a crafted iframe-sandbox URL omits that isolation and executes the supplied script in the origin serving Altair. Exploitation requires a victim to open the crafted URL, and the resulting script can access script-readable storage and make same-origin requests according to the deployment's authentication and cookie controls. This issue is fixed in version 8.5.8.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| altair-graphql | altair | >= 7.2.4, < 8.5.8 | — |
| altair-graphql | altair-express-middleware | >= 7.2.4, < 8.5.8 | — |
| altair-graphql | altair-fastify-plugin | >= 7.2.4, < 8.5.8 | — |
| altair-graphql | altair-koa-middleware | >= 7.2.4, < 8.5.8 | — |
| altair-graphql | altair-static | >= 7.2.4, < 8.5.8 | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| npm | altair-express-middleware | >= 7.2.4, < 8.5.8 | 8.5.8 | GHSA-752m-7p75-49gf |
| npm | altair-fastify-plugin | >= 7.2.4, < 8.5.8 | 8.5.8 | GHSA-752m-7p75-49gf |
| npm | altair-koa-middleware | >= 7.2.4, < 8.5.8 | 8.5.8 | GHSA-752m-7p75-49gf |
| npm | altair-static | >= 7.2.4, < 8.5.8 | 8.5.8 | GHSA-752m-7p75-49gf |
References
- https://github.com/altair-graphql/altair/security/advisories/GHSA-752m-7p75-49gf
- https://github.com/altair-graphql/altair/commit/53a19183ce11ca147bb990c355e14ecb1dd7cd3e
- https://github.com/altair-graphql/altair/commit/bdf422bdaaaf3186170ba7f22e22c259072133d9
- https://github.com/altair-graphql/altair/releases/tag/v8.5.8