- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
## Impact ### What kind of vulnerability is it? Apollo Server can log sensitive information (Studio API keys) if they are passed incorrectly (with leading/trailing whitespace) or if they have any characters that are invalid as part of a header value.
### Who is impacted? Users who (all of the below): * use either the schema reporting or usage reporting feature * use an Apollo Studio API key which has invalid header values * use the default fetcher (`node-fetch`) or configured their own `node-fetch` fetcher
The following node snippet can test whether your API key has invalid header values. This code is taken directly from `node-fetch@2`'s header value validation code. ```js const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/; if (invalidHeaderCharRegex.test('<YOUR_API_KEY>')) { console.log('potentially affected'); } console.log('unaffected'); ```
If the provided API key is not a valid header value, whenever Apollo Server uses that API key in a request (to Studio, for example), `node-fetch` will throw an error _which contains the header value_. This error is logged in various ways depending on the user's configuration, but most likely the console or some configured logging service.
### Patches This problem is patched in the latest version of Apollo Server as soon as this advisory is published.
### Workarounds * Try retrieving a new API key from Studio. Note: this may not work if the invalid character is not part of the secret (it may be derived from identifiers like graph name, user name). * Override the `fetcher` * Disable schema reporting and/or usage reporting
### Solution * Apollo Server will now call `.trim()` on incoming API keys in order to eliminate leading/trailing whitespace and log a warning when it does so. * Apollo Server will now perform the same validation of API keys as `node-fetch@2` performs on header values on startup. Apollo Server will throw an error on startup (i.e., fail to start completely) and notify the user their API key is invalid along with the offending characters.
Patch / fix
- npm @apollo/server 4.9.3
- npm apollo-server-core 2.26.1, 3.12.1
Is GHSA-j5g3-5c8r-7qfx in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | @apollo/server | <4.9.3 |
4.9.3 |
| npm | apollo-server-core | >=3.0.0, <3.12.1 <2.26.1 |
3.12.1 2.26.1 |
Classification
- Weakness
-
- CWE-532 Insertion of Sensitive Information into Log File
References
-
github.com
/apollographql/apollo-server/commit/2c8106c433c4add4b43e2e2b2f5c5c4887b17314
web
-
github.com
/apollographql/apollo-server/commit/d38b43bac88acdef4295759d7dcc3d4c348d9575
web
-
github.com
/apollographql/apollo-server/security/advisories/GHSA-j5g3-5c8r-7qfx
web, advisory
-
github.com
/apollographql/apollo-server
package
Sources
- GitHub Advisory GHSA-j5g3-5c8r-7qfx
- Maintainer advisory GHSA-j5g3-5c8r-7qfx
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
The maintainers of apollographql/apollo-server published their own advisory on GitHub. Reviewed sources take precedence over it.