aragon / aragonOS

(Aragon 1) Reference implementation for aragonOS: a Solidity framework for building complex dApps and protocols
https://hack.aragon.org/docs/aragonos-intro.html
GNU General Public License v3.0
686 stars 245 forks source link

Emergency stop for apps #151

Open izqui opened 7 years ago

izqui commented 7 years ago

Option 1

Allow app developers to selfdestruct an app contract (the deployed library that proxies rely on). This would force all organizations using the app to upgrade (kernel.setAppCode(...)) to a new version (with the vulnerability fixed) to keep on using it.

Reference @3esmit https://github.com/3esmit/Hive-Democracy/commit/2d5641be6b53159124710cf372fe873f841f0799

Problem: organizations might remove the ability to update apps in order to guarantee immutability. In that case a destructed app could be fatal, because selfdestructing a contract is irreversible.

Something to keep in mind is that an app developer can unilaterally implement this option in their app.

Option 2

Implement a list at the network level of contracts that have been emergency stopped. In order to add a contract to the list, a significant amount of tokens are staked to immediately pause the contract for the entire network. A period would follow in which more stakeholders would decide whether it was a real threat (and reward the submitter) or if it was just a spam attack (slashing the deposit and removing the contract from the stopped contracts list).

Problem: would require to extend the Kernel so it could fail before returning an stopped app address.

onbjerg commented 7 years ago

I like option 2 a lot better.

izqui commented 7 years ago

I like option 2 better too. If the incentives are set up correctly it could work as a live bug bounty program.

lkngtn commented 7 years ago

I think option 2 is very promising, though I think that this must be an opt-in service not a requirement for using aragon core. It can be on by default if we are providing templates, but it should be trivial to remove if organizations prefer to assess and manage application security themselves.

Perhaps something like this would work:

3esmit commented 6 years ago

I detailed the option 1 here: https://github.com/status-im/ideas/issues/25

onbjerg commented 6 years ago

@lkngtn The subscription to the list (at least as I understood it when we talked about it) would be a part of the network, so it is already opt-in. I do agree that organisations should have the option to override the list, though.