Wallet-access revocation deletes by wallet_id instead of entry id #71

Open
opened 2026-04-05 16:23:11 +00:00 by Skipper · 0 comments
Owner

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 == entry instead of deleting by the access-entry primary key.

Example flow

  1. Submit a revocation request containing wallet-access entry IDs.
  2. Forward those IDs into the server-side revocation handler.
  3. Delete rows by matching wallet_id instead of access-entry id.
  4. Remove unrelated principals' wallet permissions when an entry ID matches a wallet ID.

Mitigation

Delete by access-entry ID, validate ownership before deletion, and add tests covering mismatched wallet IDs and access-entry IDs.

# 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 == entry` instead of deleting by the access-entry primary key. ## Example flow 1. Submit a revocation request containing wallet-access entry IDs. 2. Forward those IDs into the server-side revocation handler. 3. Delete rows by matching `wallet_id` instead of access-entry `id`. 4. Remove unrelated principals' wallet permissions when an entry ID matches a wallet ID. ## Mitigation Delete by access-entry ID, validate ownership before deletion, and add tests covering mismatched wallet IDs and access-entry IDs.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MarketTakers/arbiter#71