Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Cannot redefine property when accessing properties of freezed global #46788

Open
plesiecki opened this issue Feb 22, 2023 · 2 comments
Open

Cannot redefine property when accessing properties of freezed global #46788

plesiecki opened this issue Feb 22, 2023 · 2 comments
Labels
confirmed-bug Issues with confirmed bugs.

Comments

@plesiecki
Copy link

Version

19.3.0

Platform

Darwin * 21.6.0 Darwin Kernel Version 21.6.0: Sat Jun 18 17:07:22 PDT 2022; root:xnu-8020.140.41~1/RELEASE_ARM64_T6000 arm64

Subsystem

No response

What steps will reproduce the bug?

Run node and enter
Object.freeze(global);console.log(AbortController)
or
Object.freeze(global);console.log(MessageChannel)

How often does it reproduce? Is there a required condition?

since v19.3

What is the expected behavior?

No error, just like for v19.2

What do you see instead?

Welcome to Node.js v19.3.0.
Type ".help" for more information.
> Object.freeze(global);console.log(MessageChannel)
Uncaught TypeError: Cannot redefine property: MessageChannel
    at defineProperty (<anonymous>)
    at set MessageChannel (node:internal/util:511:7)
    at get MessageChannel (node:internal/util:525:9)

Additional information

No response

@cjihrig
Copy link
Contributor

cjihrig commented Feb 22, 2023

My guess is that #45659 is the change responsible - it lazy loads globals, causing problems when you freeze global before the lazy load.

@threema-lenny
Copy link

The NodeJS docs recommend Object.freeze(globalThis) as a security best practice (see: https://nodejs.org/en/learn/getting-started/security-best-practices#monkey-patching-cwe-349), so it is somewhat alarming to see that heavily used APIs create these issues.

@avivkeller avivkeller added the confirmed-bug Issues with confirmed bugs. label Apr 20, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
confirmed-bug Issues with confirmed bugs.
Projects
None yet
Development

No branches or pull requests

4 participants