AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 45 Bitcoin

Add granular wallet permissions and move wallet to plugin (#7329)

Public commit record

What the developer wrote

Authored by thgO.O

58/100 · Thin
Add granular wallet permissions and move wallet to plugin (#7329)
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
The short version

What changed, and why it matters

This is a large refactoring commit that splits BTCPay Server's wallet functionality into a separate plugin and introduces finer-grained wallet permissions (view, create transactions, sign, broadcast, manage settings, etc.). It also adds new tests that verify users with only wallet permissions can access wallet pages and cannot perform actions outside their role. The change is primarily a security-hardening/permission-separation feature, not an obvious vulnerability fix, though it does include one small bug fix for pending-transaction broadcast matching.

Recommended action

Review the new permission matrix carefully for over/under-privilege, especially the implied/implied-by relationships in PermissionService and the authorization attributes on every moved wallet action. Ensure the plugin area routing does not bypass existing authorization filters or antiforgery protections. Verify that the pending-transaction broadcast matching fix is deployed and that no other pending-transaction operations rely solely on IDs without transaction-hash verification.

Security signals we found

01

Introduction of granular wallet permissions and role-based access control

02

Relocation of wallet controllers into a plugin area with updated authorization attributes

03

New tests assert that wallet-only users cannot access invoices, reports, payment requests, pull payments, payouts, or another store's wallet settings

04

New test asserts that a pending transaction is only marked broadcast when the broadcast transaction actually matches (hash), preventing cross-pending-transaction state changes

05

Removal of broad Policies.CanModifyStoreSettings requirement for wallet navigation; replaced with wallet-specific permissions

Risk score

Why this scored 45/100

Our methodology →
Potential impact 12/30
Exploitability 8/25
Stealth signal 6/15
Affected reach 10/15
Confidence 6/10
Evidence quality 3/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.