Document how voters can currently safely validate a governance proposal to instantiate a contract #6086
Labels
documentation
Improvements or additions to documentation
Governance
Governance
vaults_triage
DO NOT USE
What is the Problem Being Solved?
We currently lack documentation for the workflow for proposing and validating governance proposals that would, for example, upgrade a contract.
Description of the Design
By way of a preliminary sketch:
To propose a new contract installation, one would need to
@endo/bundle-source
’sbundle-source
commandagd swingset install-bundle
to send the source to the chain.jq -r .endoZipBase64Sha512 bundle.json
.To verify a governance proposal that includes a E(zoe).install({ endoZipBase64Sha512 }) command in a bootstrap script:
and/or verify the bundle is consistent with the sources of the contract from a repository and hash:
yarn
ornpm
, since these provide an opportunity for the attacker to run arbitrary code.@endo/bundle-source
’sbundle-source
CLI to generate a bundle.Security Considerations
Validating a contract currently requires obtaining the sources at a particular hash, installing their dependencies, reconstructing the bundle, matching the generated hash, then inspecting the contract proper for malfeasance. Improperly installing the dependencies of an arbitrary application can empower an attacker to run arbitrary code with the authority of the user.
Test Plan
The text was updated successfully, but these errors were encountered: