You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This means a malicious validator can impersonate another validator, by making the threshold_to_stash getter function resolve to its own validator ID rather than the validator ID of the TSS server who actually owns the private key to that TSS account ID.
This is dangerous because we use threshold_to_stash in several places in entropy-tss, for example to get our own subgroup ID:
This means validators can be tricked into thinking they are in a different subgroup, and therefore send keyshares to the wrong TSS nodes following DKG or proactive refresh. This is dangerous because it could be used to collect keyshares from other subgroups, and if repeatedly exploited, to get a full set of keyshares.
This could be mitigated by requiring that the caller prove ownership of the TSS account ID when calling change_threshold_accounts, for example with a signature.
The text was updated successfully, but these errors were encountered:
Im not 100% sure this exploit is possible, so please check this over.
ameba23
changed the title
Vulnerability in pallet-staking-extension's change_threshold_accounts extrinsic
Vulnerability in pallet-staking-extension's change_threshold_accounts and validate extrinsics
Feb 29, 2024
I think this issue also applies to validate as this also allows us to choose a TSS account ID which maybe already exists, without having to prove ownership of it:
change_threshold_accounts
allows a validator to change the TSS account ID and x25519 public key associated with their validator ID:entropy-core/pallets/staking/src/lib.rs
Line 286 in fe96ae4
It also does the reverse - it updates which Validator ID is associated with the newly given TSS account ID on this line:
entropy-core/pallets/staking/src/lib.rs
Line 301 in fe96ae4
This means a malicious validator can impersonate another validator, by making the
threshold_to_stash
getter function resolve to its own validator ID rather than the validator ID of the TSS server who actually owns the private key to that TSS account ID.This is dangerous because we use
threshold_to_stash
in several places inentropy-tss
, for example to get our own subgroup ID:entropy-core/crates/threshold-signature-server/src/helpers/substrate.rs
Line 47 in fe96ae4
This means validators can be tricked into thinking they are in a different subgroup, and therefore send keyshares to the wrong TSS nodes following DKG or proactive refresh. This is dangerous because it could be used to collect keyshares from other subgroups, and if repeatedly exploited, to get a full set of keyshares.
This could be mitigated by requiring that the caller prove ownership of the TSS account ID when calling
change_threshold_accounts
, for example with a signature.The text was updated successfully, but these errors were encountered: