Wallet-access revocation deletes by wallet_id instead of entry id #71
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Info
Severity: HIGH
Attack vector: network-only
Impact
Allows revocation requests to remove the wrong wallet-access entries, causing unintended loss of permissions for other principals.
Description
The SDK and user-agent API exposes wallet-access entries with distinct row IDs, and the revocation path forwards those integer IDs unchanged from gRPC. The handler then deletes rows where
evm_wallet_access.wallet_id == entryinstead of deleting by the access-entry primary key.Example flow
wallet_idinstead of access-entryid.Mitigation
Delete by access-entry ID, validate ownership before deletion, and add tests covering mismatched wallet IDs and access-entry IDs.