OpenZeppelin Confidential Contracts VestingWalletConfidential: a malicious ERC-7984 token is able to extract private data from the vesting wallet
GHSA-29h2-jr22-frmh
- Affected
- npm @openzeppelin/confidential-contracts < 0.3.2; >= 0.4.0-rc.0, < 0.4.2; >= 0.5.0-rc.0, < 0.5.2
- Fixed in
- 0.5.20.3.20.4.2· Vendor fix available
- Issue
- Impact Two locations consume an encrypted handle returned by an untrusted external party and use it without verifying that the party is ACL-authorized on it. VestingWalletConfidential Malicious users can call release with a malicious token. This token could return an alternative handle on confidentialBalanceOf, which represents the balance of the vesting wallet on an alternative ERC-7984 token (or any other handle that the vesting wallet has access to). The vesting wallet does not check that the token has ACL access and grants access to a new handle derived from the returned handle. Effectively, this bug allows a malicious user to gain information about any private euint64 handle that the vesting wallet has access to via a malicious ERC-7984 token. There is no loss of funds. ERC7984 On a transfer with callback, ERC7984 uses the ebool returned by the recipient's IERC7984Receiver.onConfidentialTransferReceived to drive the refund logic, without checking that the recipient has ACL…
Recommended action: Upgrade to 0.5.2, 0.4.2 or 0.3.2 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.