Security Home
Information about Yearn's security processes, team members, disclosures, PGP keys and more can be found in the /yearn-security repo on Github.
Vulnerability disclosure process
Potential vulnerabilities are welcome to be disclosed following the guidelines established in /yearn-security/SECURITY.md. Valid vulnerabilities may be eligible for bounty rewards.
Third-party audits
The core contracts found in yearn-vaults repository have been audited by multiple independent third-party firms:
- MixBytes has audited v0.2.1, public report available here
- ChainSecurity has audited v0.3.5, public report unavailable
- Trail of Bits has audited v0.4.2, public report available here
Yearn is much bigger than its core, the DAO has a rigorous review process for its contracts, and retains independent auditors which review Strategies and other protocol components.
Other public reports can be found under yearn-security/audits.
Security assumption
Yearn as a protocol hinges on the critical assumption that the Governance
role is honest. This role is currently controlled by a 6 of 9 Gnosis Safe multisig.
A compromised or malicious Governance can cause catastrophic damage across the entire protocol.
It is a conscious design decision that this role is not behind a time lock. Priority is given to the ability to rapidly update and iterate on live vaults, strategies, and other components. Both so as not to advertise new investment strategies in advance, but also to rapidly improve our existing components without interruption. It also avoids downtimes whenever there is a bug or security vulnerability that needs to be fixed.
Trusting Governance
to be honest is a prerequisite to trusting Yearn's vaults.
Modifications to these design decisions can be proposed in the forum through Yearn's governance process.
Testing
Vault tests are done using brownie and the ganache CLI development network.
To see test coverage you can have a look at the CI you must look for a run that runs Run build test_duration
. The tests are run once a month together to compute the duration cache, then they are split into several test pipelines to speed up testing.