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
The DataPointRegistry::transferOwnership function permits a particular DataPoint to be transferred to a new owner, however, the DataPoint will retain all original authorized administrators.
This represents a flaw in the transfer process as the recipient of the DataPoint cannot react during its acceptance, requiring two separate blockchain blocks for a new owner to remove the administrators they wish.
Impact:
The DataPointRegistry::transferOwnership function necessitates two distinct interactions across two different blocks for a transfer to be accompanied with administrator removal which we consider an approach prone to errors and exploitation.
We advise the system to revoke all previous administrators during a transfer by using a nonce system or a similar approach, ensuring that the DataPoint is transferred in a fresh state and a rogue administrator cannot affect it after it has exchanged hands.
The text was updated successfully, but these errors were encountered:
We talked about the way to solve this, but since there isn't EnumerableMap.AddressToBool mapping, I went to the solution using EnumerableSet.AddressSet where if the address is contained is the True of the previous idea, but according to ethereum/solidity/pull/11843[https://github.com/ethereum/solidity/pull/11843] we cannot use delete to clean the set, a possible solution is still using the set idea but adding a clean() internal function that remove all the elements of an array one by one, but I want to know your opinions @pash7ka@galimba
DPR-01M: Inexistent Revocation of Administrators
Description:
The
DataPointRegistry::transferOwnership
function permits a particularDataPoint
to be transferred to a new owner, however, theDataPoint
will retain all original authorized administrators.This represents a flaw in the transfer process as the recipient of the
DataPoint
cannot react during its acceptance, requiring two separate blockchain blocks for a new owner to remove the administrators they wish.Impact:
The
DataPointRegistry::transferOwnership
function necessitates two distinct interactions across two different blocks for a transfer to be accompanied with administrator removal which we consider an approach prone to errors and exploitation.Example:
Recommendation:
We advise the system to revoke all previous administrators during a transfer by using a nonce system or a similar approach, ensuring that the
DataPoint
is transferred in a fresh state and a rogue administrator cannot affect it after it has exchanged hands.The text was updated successfully, but these errors were encountered: