Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: add a list of attacks

...

Potential attacks

...

Recursive call

 

Recursive calling vulnerability or race to empty is  is the kind of attack seen on Friday 2016-06-17. Here is what happens:

...

The process is draining the ether contained in the DAO into a child DAO.

 

  

 

The dao exploit followed this pattern: propose a split. Execute the split. When the DAO goes to withdraw your reward, call the function to execute a split before that withdrawal finishes. The source code, TokenCreation.sol, transfers tokens from the parent DAO to the child DAO. Basically the attacker is using this to transfer more tokens than they should be able to into their child DAO.

In essence, a call that looks like a regular call can easily be turned into a recursive call, and unless the application is coded very carefully, it can be used to make multiple withdrawals when only one should be allowed.

Callstack depth limit

call stack depth limit

 

Send with throw

Send with Throw

Race to empty

Race to Empty

Unchecked send

Unchecked Send

Re-entrancy

Re-entrancy

Loss of state

Loss of State

 

Copycat

 

Solutions

...

Soft fork

...