Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ME-01 Untrusted Address Book Could Lead to Unavailability #71

Open
xoloki opened this issue May 8, 2024 · 1 comment
Open

ME-01 Untrusted Address Book Could Lead to Unavailability #71

xoloki opened this issue May 8, 2024 · 1 comment
Assignees
Labels

Comments

@xoloki
Copy link
Collaborator

xoloki commented May 8, 2024

The library receives as part of its configuration sensitive information including maps linking
key_id values and key_ids to public keys that are not validated. This is a very sensitive
point, as an attacker controlling this address book could gain complete control over the
signing process. Moreover, the config object is missing the coordinator’ s public key, so it
appears there is no way to specify this at signer creation (e.g., you will need to manually set
the variable).

@xoloki xoloki added the audit label May 8, 2024
@xoloki xoloki self-assigned this May 8, 2024
@xoloki
Copy link
Collaborator Author

xoloki commented Dec 19, 2024

The library must receive the address book from somewhere, and even if it is signed the library would have to receive the signing public key as well. stacks-signer uses contracts to provide some semblance of verification of this critical data. sbtc-signer simply puts the relevant data into the config, then parses it and passes it to the library.

As for the Coordinator public key, it is not possible to specify this at signer creation because in all applications it rotates over time. sbtc-signer for example has a new coordinator for every bitcoin anchor block. stacks-signer never found an adequate solution to this, eventually resorting to building a bft-paxos library so it could have a consistent view of who is the coordinator in an adversarial context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant