Beyond these "first aid" measures, there are two approaches to deal with the problem currently discussed:
Soft-fork, i.e. making previously valid transactions invalid:
Freeze the stolen ether in the contract it is currently in by no longer validating withdrawing transactions. No rollbacks would happen in this case and no valid blocks would be altered.
Hard-fork, i.e. making previously invalid transactions valid:
This means essentially agreeing on rolling back valid transactions and by that returning the stolen funds.
For explanation of forks, also see: https://bitcoin.stackexchange.com/questions/30817/what-is-a-soft-fork
Both can only happen by community consent, as soft forks require miners to update their nodes and hard-forks require updates of all clients.
Note, that this does not mean centralization, as sometimes suggested, but a choice of a decentralized community.