#40770 [BC-Low] Unvalidated withdrawal events allow data manipulation and denial of service in Emily
Description
Brief/Intro
Vulnerability Details
// Create any new withdrawal instances. We do this before performing any updates
// because a withdrawal needs to exist in the Emily API database in order for it
// to be updated.
emily_client
.create_withdrawals(created_withdrawals)
.await
.into_iter()
.for_each(|create_withdrawal_result| {
if let Err(error) = create_withdrawal_result {
tracing::error!(%error, "failed to create withdrawal in Emily");
}
});
// Execute updates in parallel.
let futures = vec![
emily_client
.update_deposits(completed_deposits)
.map(UpdateResult::Deposit)
.boxed(),
emily_client
.update_withdrawals(updated_withdrawals)
.map(UpdateResult::Withdrawal)
.boxed(),
];Impact Details
References
Proof of Concept
Proof of Concept
Previous#40731 [BC-Medium] A malicious signer can force a panic in the coordinator by sending `DkgFailure::BadPrivateShares` with an invalid signer IDNext#41014 [BC-Low] The signer can submit multi-tx first to make the coordinator's submission fail
Was this helpful?