Headline
CVE-2022-39382: Test that process.env.NODE_ENV is production when set to that in production by mitchellhamilton · Pull Request #8063 · keystonejs/keystone
Keystone is a headless CMS for Node.js — built with GraphQL and React.@keystone-6/[email protected] || 3.0.1
users that use NODE_ENV
to trigger security-sensitive functionality in their production builds are vulnerable to NODE_ENV
being inlined to "development"
for user code, irrespective of what your environment variables. If you do not use NODE_ENV
in your user code to trigger security-sensitive functionality, you are not impacted by this vulnerability. Any dependencies that use NODE_ENV
to trigger particular behaviors (optimizations, security or otherwise) should still respect your environment’s configured NODE_ENV
variable. The application’s dependencies, as found in node_modules
(including @keystone-6/core
), are typically not compiled as part of this process, and thus should be unaffected. We have tested this assumption by verifying that NODE_ENV=production yarn keystone start
still uses secure cookies when using statelessSessions
. This vulnerability has been fixed in @keystone-6/[email protected], regression tests have been added for this vulnerability in #8063.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
Pick a username
Email Address
Password
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Related news
### Impact `@keystone-6/[email protected] || 3.0.1` users that use `NODE_ENV` in their own code (**not dependencies**) to trigger security-sensitive functionality in a production build are vulnerable to `NODE_ENV` being inlined to `"development"` for user code. If your dependencies use `NODE_ENV` to trigger particular behaviours (optimisations, security or otherwise), they should still respect your environment's configured `NODE_ENV` variable and thereby be unaffected. If you do not use `NODE_ENV` in your own code to trigger security-sensitive functionality, **you are not impacted** by this vulnerability. An example of code that would be affected, might be the following: ```typescript if (process.env.NODE_ENV !== 'production') { // this code would unintentionally run in your production builds } ``` ### Technical Description The problem comes from esbuild defaulting `NODE_ENV` to `"development"` when a platform configuration is undefined. You can read about why [`esbuild` has that behavi...