Client key is not integrity-protected #58

Closed
opened 2026-04-05 16:15:41 +00:00 by Skipper · 0 comments
Owner

Info

Severity: CRITICAL
Attack vector: offline

Impact

Allows an attacker with database write access to insert or replace SDK client keys and bypass the intended approval flow.

Description

Unlike user-agent records and grants, program_client rows are created without an integrity envelope and are not verified before challenge issuance. This makes SDK client identities directly tamperable at the database level.

Example flow

  1. Insert a new program_client row or replace an existing public key in the database.
  2. Authenticate using the attacker-controlled key.
  3. Reuse the victim client's grants and wallet access.
  4. Request signatures as that SDK client.

Mitigation

Sign program_client rows on insertion and verify them before authentication, mirroring the user-agent integrity pattern.

# Info **Severity**: **CRITICAL** Attack vector: offline ## Impact Allows an attacker with database write access to insert or replace SDK client keys and bypass the intended approval flow. ## Description Unlike user-agent records and grants, `program_client` rows are created without an integrity envelope and are not verified before challenge issuance. This makes SDK client identities directly tamperable at the database level. ## Example flow 1. Insert a new `program_client` row or replace an existing public key in the database. 2. Authenticate using the attacker-controlled key. 3. Reuse the victim client's grants and wallet access. 4. Request signatures as that SDK client. ## Mitigation Sign `program_client` rows on insertion and verify them before authentication, mirroring the user-agent integrity pattern.
Skipper added the
Difficulty
High
3
Kind
Security
Priority
Critical
1
labels 2026-04-05 16:15:51 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MarketTakers/arbiter#58