Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add DAO Governance Controls Section (DAOstar, eth.limo, Tally) #81

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# SUMMARY

Check failure on line 1 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Headings should be surrounded by blank lines

src/SUMMARY.md:1 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "# SUMMARY"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md022.md
# Security Frameworks by SEAL

Check failure on line 2 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Headings should be surrounded by blank lines

src/SUMMARY.md:2 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Above] [Context: "# Security Frameworks by SEAL"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md022.md

Check failure on line 2 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Headings should be surrounded by blank lines

src/SUMMARY.md:2 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "# Security Frameworks by SEAL"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md022.md

Check failure on line 2 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Multiple top-level headings in the same document

src/SUMMARY.md:2 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "# Security Frameworks by SEAL"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md025.md
- [Introduction to the Frameworks](./intro/introduction.md)

Check failure on line 3 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Lists should be surrounded by blank lines

src/SUMMARY.md:3 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- [Introduction to the Framewo..."] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md032.md
- [What It Is](./intro/what-is-it.md)
- [What It Isn't](./intro/what-it-isnt.md)
- [How to Navigate the Website](./intro/how-to-navigate-the-website.md)
- [Overview of Each Framework](./intro/overview-of-each-framework.md)

# Frameworks

Check failure on line 9 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Headings should be surrounded by blank lines

src/SUMMARY.md:9 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "# Frameworks"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md022.md

Check failure on line 9 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Multiple top-level headings in the same document

src/SUMMARY.md:9 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "# Frameworks"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md025.md
- [Infrastructure](./infrastructure/README.md)

Check failure on line 10 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Lists should be surrounded by blank lines

src/SUMMARY.md:10 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- [Infrastructure](./infrastru..."] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md032.md
- [Cloud Infrastructure](./infrastructure/cloud.md)
- [DDoS Protection](./infrastructure/ddos-protection.md)
- [DNS and Domain Registration](./infrastructure/dns-and-domain-registration.md)
Expand Down Expand Up @@ -104,6 +104,7 @@
- [Risk Management](./governance/risk-management.md)
- [Compliance with Regulatory Requirements](./governance/compliance-regulatory-requirements.md)
- [Security Metrics and KPIs](./governance/security-metrics-kpis.md)
- [DAO Governance Controls](./governance/dao-governance-controls.md)

- [Security Automation](./security-automation/README.md)
- [Threat Detection and Response](./security-automation/threat-detection-response.md)
Expand Down Expand Up @@ -135,11 +136,11 @@
- [Security-Aware Culture](./user-team-security/security-aware-culture.md)
- [Phishing and Social Engineering](./user-team-security/phishing-social-engineering.md)

# Practical Guides

Check failure on line 139 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Multiple top-level headings in the same document

src/SUMMARY.md:139 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "# Practical Guides"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md025.md
<!-- - Step-by-step implementation — can be omitted
- Case studies — an idea -->

# Additional Resources

Check failure on line 143 in src/SUMMARY.md

View workflow job for this annotation

GitHub Actions / lint

Headings should be surrounded by blank lines

src/SUMMARY.md:143 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "# Additional Resources"] https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md022.md
- [Contributing](./contribute/contributing.md)
- [Contributors](contribute/contributors.md)
<!-- - Tools and software recommendations
Expand Down
1 change: 1 addition & 0 deletions src/governance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ Good governance practices involve setting clear policies, establishing accountab
1. [Compliance with Regulatory Requirements](./compliance-regulatory-requirements.md)
2. [Risk Management](./risk-management.md)
3. [Security Metrics and KPIs](./security-metrics-kpis.md)
4. [DAO Governance Controls](./dao-governance-controls.md)
34 changes: 34 additions & 0 deletions src/governance/dao-governance-controls.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## DAO Governance

DAO security is a multi-faceted concept. In the analysis below, we have considered multiple angles, including data transparency, decentralized ownership, vendor management, defense against governance attacks, physical security policy, etc. While the absence of some of these (for example, a physical security policy for delegates and key stakeholders) can lead to a critical security incident, others (for example, data transparency) may not have an immediate side effect. Even so, it may lead to second-order effects (e.g., low data transparency → loss of quality contributors → governance takeover).

Note that we also have a separate section for protocol DAOs, i.e., DAOs that control an on-chain protocol. All DAOs, whether or not they are a protocol DAO, are advised to consider the controls detailed in the first section.

## DAO Controls

| Control | Description |
| :--- | :--- |
| Data transparency | `[MANDATORY]` The DAO should publish an up to date governance document, outlining the steps and stakeholders involved in governance. <br><br>`[RECOMMENDED]` The DAO should maintain a repository of all DAO-related artifacts. This could include DAO-run grant programs, list of all smart contracts, list of functional committees, councils and multisigs, trusted service providers, financials, etc. We recommend using the EIP-4824 standard to facilitate this, as it allows decentralized control of data by the DAO.|
| Ownership of digital assets | `[MANDATORY]` The DAO should release a public list of digital assets it owns and controls. The list could include ENS names and other naming services, dApps, front-ends, etc. |
| Self defense and incident response plan for governance incidents and attacks | `[MANDATORY]` The DAO must publish a self-defense and emergency management plan that outlines events it considers emergencies or governance attacks. A template is provided [here](https://www.michigan.gov/-/media/Project/Websites/msp/cjic/pdfs6/Example_Incident_Response_Policy.pdf?rev=4bf335b6d1344226a92a0947bc8688ec). |
| Vendor/service provider management Policy | `[MANDATORY]` The DAO should publish a list of vendors/service providers it relies on. <br><br>`[RECOMMENDED]` The DAO should publish a vendor management policy, incorporating security standards from SEAL’s security framework.<br><br>Vendors include all 3rd party service providers that provide a good or service to the DAO, including software services that are not paid by the DAO, but used for operations, governance or other avenues. |
| Proposal safety | `[RECOMMENDED]` It is recommended to: <br><br> use a timelock before upgrading protocols that hold funds simulate proposals before executing them<br><br> perform automated checks on proposals for common attacks |
| Vulnerability management | `[RECOMMENDED]` The DAO should publish a vulnerability management plan. Sample [template](https://frsecure.com/vulnerability-management-policy-template/). |
| Physical security policy | `[MANDATORY]` The DAO should publish a physical security policy, and provide training to combat wrench attacks. It should describe the steps that should be taken by delegates, multisig signers, members of the foundation, and other important stakeholders to ensure security while traveling to conferences and other events. Inspiration taken from [here](https://github.com/OffcierCia/Crypto-OpSec-SelfGuard-RoadMap). |
| Decentralization | `[MANDATORY]` Open proposal system (i.e. anyone with enough governance power can make a proposal)<br><br>`[MANDATORY]` No admin backdoor - proposals can’t be vetoed by an unelected party<br><br>`[RECOMMENDED]` Anyone can execute a proposal/proposals execute autonomously.<br><br>`[RECOMMENDED]` There is sufficient delegate/voter diversity such that founders/investors don’t control the majority voting power.<br><br>`[RECOMMENDED]` Take active efforts to maintain a healthy minimum number of accounts needed to reach quorum. |
| Community management | `[MANDATORY]` The DAO should follow secure community management processes, to secure community accounts on Twitter, Discord, Telegram, and other applications. |
| Compliance | `[MANDATORY]` The DAO must keep a record of its compliance efforts, including policies, procedures, and audit results. It should make its best efforts to comply with the regulatory frameworks applicable to its areas of operation. |

## Protocol Controls

The following set of controls are authored for protocol DAOs, i.e DAOs that control an on-chain protocol. All DAOs, irrespective of whether they are a protocol DAO, are advised to follow the controls detailed in the previous section.

| Control | Description |
| :--- | :--- |
| Data transparency | `[MANDATORY]` Code that the DAO governs should be available somewhere publicly, even if it is not open source. <br><br>`[RECOMMENDED]` All DAO related smart contracts including protocol, token, governance and treasury related smart contracts, should be verified on block explorers, if the provision exists.<br><br>`[RECOMMENDED]` There should be publicly accessible documentation on the protocol components, along with flow diagrams, design choices, dependencies and a record of critical privileged roles. |
| Subdomains for contracts and dApps | `[RECOMMENDED]` Provide all contracts with ENS names. dApps should enforce ENS subdomain versioning (v1, v2, etc) as mentioned [here](https://ethglobal.com/showcase/undefined-0ejxp). |
| [Safe harbor agreement](https://github.com/security-alliance/safe-harbor) | `[RECOMMENDED]` The DAO should execute a white hat Safe Harbor agreement. |
| Proposal safety | `[RECOMMENDED]` It is recommended to:<br><br>use a timelock before upgrading protocols that hold funds<br><br>perform automated tests on code commits |
| Key management | `[MANDATORY]` Use isolated and purpose specific hardware wallets for multisig key holders and delegates. |
| Operational Security Policy for Key Entities| `[RECOMMENDED]` The DAO should require entities, including its foundation, founding company, or service providers with a long-term service agreement, to publish and adhere to an operational security policy. Inspiration for the policy can be found [here](https://docs.google.com/document/d/1Aggn3oqT3lpTFyVmlncBTOowdpTsrGtPqCmdKcQnEdA/edit?usp=sharing).
| Code security | `[MANDATORY]` The DAO must conduct regular external security reviews and publish:<br><br>A comprehensive report detailing findings and suggested improvements.<br><br>A review of changes implemented to mitigate identified risks.<br><br>At least one copy of the documents mentioned above should be publicly available for the latest protocol version.|
6 changes: 6 additions & 0 deletions wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ customizable
CyberSec
Cybersecurity
DAI
DAO
dapp
Darknet
DAST
Expand All @@ -72,6 +73,7 @@ DSS
Dyno
EE
Efani
EIP
encrypt
Enigmail
EOA
Expand All @@ -86,6 +88,7 @@ FDE
fedcba
Fernández
Fi
financials
Fredrik
Fuzzer
Fuzzers
Expand Down Expand Up @@ -144,6 +147,7 @@ MTTD
MTTR
MullvadVPN
multisig
multisigs
Multisignature
MVNO
Mythril
Expand Down Expand Up @@ -209,6 +213,7 @@ tfsec
Threema
timeframe
timeframes
timelock
TLS
TOTP
TPM
Expand All @@ -217,6 +222,7 @@ TVL
TXT
UI
underflows
unelected
Unrekt
untrusted
USDC
Expand Down