core
core copied to clipboard
[address-book-controller, ens-controller] Fix prototype-polluting delete operations
Fix the following CodeQL security alerts:
- https://github.com/MetaMask/core/security/code-scanning/2
- https://github.com/MetaMask/core/security/code-scanning/3
Approach 1
Replace the flagged property assignments by returning an updated object in the enclosing this.update() call, or mutating the state object without using the delete keyword.
Object.assign and spread operator syntax are both safe to use for this purpose as they only enumerate "own" properties of object literals.
For an example of this approach, see: https://github.com/MetaMask/core/pull/3963/files#diff-1eb134c9c5a9dd0a4e4838f719ba67723f61fdacd8bfc1a9acef96366b7578fbR207-R236
Approach 2
Validate that the dynamic string property in question does not evaluate to __proto__ before performing the assignment operation.