From c924d165538ab993050347ae6dde93859a7c913b Mon Sep 17 00:00:00 2001 From: Sam Richards Date: Fri, 23 Feb 2024 14:26:21 -0600 Subject: [PATCH 1/4] docs: add Feb 2024 PSE audit report --- .../20240223_PSE_Audit_audit_report.pdf | Bin 0 -> 109214 bytes website/versioned_docs/version-v1.x/audit.md | 13 +++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 website/static/audit_reports/20240223_PSE_Audit_audit_report.pdf diff --git a/website/static/audit_reports/20240223_PSE_Audit_audit_report.pdf b/website/static/audit_reports/20240223_PSE_Audit_audit_report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8b17a5ba7c6ebc3459d82f3095f03d3aeef87e36 GIT binary patch literal 109214 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 literal 0 HcmV?d00001 diff --git a/website/versioned_docs/version-v1.x/audit.md b/website/versioned_docs/version-v1.x/audit.md index 0051fc9688..9ce35b015c 100644 --- a/website/versioned_docs/version-v1.x/audit.md +++ b/website/versioned_docs/version-v1.x/audit.md @@ -1,6 +1,6 @@ --- title: MACI Security Audits -description: In the summer of 2022, MACI v1 was audited by HashCloak. The audit covered both the zk-SNARK circuits and the Solidity smart contracts. +description: Overview of MACI audit history with references to audit reports. sidebar_label: Security Assessments sidebar_position: 12 --- @@ -9,6 +9,7 @@ sidebar_position: 12 ## Links +- Audit by PSE Audit 2024/02 [report](/audit_reports/20240223_PSE_Audit_audit_report.pdf) - Audit by HashCloak 2022/09 [report](/audit_reports/202220930_Hashcloak_audit_report.pdf) - Audit by HashCloak 2021/09 [report](/audit_reports/20210922_Hashcloak_audit_report.pdf) @@ -18,7 +19,7 @@ In the summer of 2022, MACI v1 was audited by HashCloak. The audit covered both This audit revealed a number of high severity issues which have been remediated by the MACI development team. We will be looking at those in details in the following sections. -## Data is not fully verified during a state update +### Data is not fully verified during a state update This issue could have allowed a malicious coordinator to change the MACI state arbitrarily, for instance by tampering with the voice credits and the voting public key of any user. @@ -26,7 +27,7 @@ In more details, the `processMessages.circom` circuit, did not fully verify that This was rectified with commit [6df6a4054da926b07f35c5befab4f1f8af33dcc6](https://github.com/privacy-scaling-explorations/maci/pull/522/commits/6df6a4054da926b07f35c5befab4f1f8af33dcc6) -## Token for top-up is a free resource +### Token for top-up is a free resource The provided `TopupCredit.sol` contract implemented unprotected `airdrop` and `airdropTo` functions, which could have allowed anyone to receive unlimited voice credits. While this contract was provided as a template, the issue has been rectified by adding the `onlyOwner` modifier to these two functions. @@ -42,13 +43,13 @@ function airdrop(uint256 amount) public onlyOwner { } ``` -## Integer overflow problem and improper bit length restriction +### Integer overflow problem and improper bit length restriction This issue within the `float.circom` circuit could have resulted in an overflow on the `IntegerDivision` template. This stemmed from the lack of validation of input size, as well as not preventing a division by zero. Furthemore, it was pointed out that using assert in circuits did not contribute to constraints verification, and could have been bypassed by a malicious coordinator. The issue was rectified with commit [efd4617724e956d2566062c6fe882e1d45cba7c4](https://github.com/privacy-scaling-explorations/maci/pull/523/commits/efd4617724e956d2566062c6fe882e1d45cba7c4) -## MessageQueue in PollFactory is uninitialized +### MessageQueue in PollFactory is uninitialized MACI uses a message queue (a quinary merkle tree) to store all the messages to be processed for a single poll. When deploying a new poll, a corresponding message queue contract is deployed as well, however this was never initialized with a zero value. @@ -69,7 +70,7 @@ dat[1] = 0; extContracts.messageAq.enqueue(placeholderLeaf); ``` -## Additional issues and improvements +### Additional issues and improvements The rest of the issues were either low risk, informational or general optimizations. From 9d757b5711b1a7504c492008e892ad6d46537bc7 Mon Sep 17 00:00:00 2001 From: Sam Richards Date: Fri, 23 Feb 2024 14:39:42 -0600 Subject: [PATCH 2/4] docs: update Audit page to include summaries of each audit --- website/versioned_docs/version-v1.x/audit.md | 120 +++++-------------- 1 file changed, 27 insertions(+), 93 deletions(-) diff --git a/website/versioned_docs/version-v1.x/audit.md b/website/versioned_docs/version-v1.x/audit.md index 9ce35b015c..895242425b 100644 --- a/website/versioned_docs/version-v1.x/audit.md +++ b/website/versioned_docs/version-v1.x/audit.md @@ -13,101 +13,11 @@ sidebar_position: 12 - Audit by HashCloak 2022/09 [report](/audit_reports/202220930_Hashcloak_audit_report.pdf) - Audit by HashCloak 2021/09 [report](/audit_reports/20210922_Hashcloak_audit_report.pdf) -## HashCloak audit 2022 - -In the summer of 2022, MACI v1 was audited by HashCloak. The audit covered both the zk-SNARK circuits and the Solidity smart contracts. - -This audit revealed a number of high severity issues which have been remediated by the MACI development team. We will be looking at those in details in the following sections. - -### Data is not fully verified during a state update - -This issue could have allowed a malicious coordinator to change the MACI state arbitrarily, for instance by tampering with the voice credits and the voting public key of any user. - -In more details, the `processMessages.circom` circuit, did not fully verify that after a state update, the new state was the result of executing an arbitrary number of user messages on the previous state. `topupStateLeaves` and `topupStateLeavesPathElements` were never verified against the current state, and `topupStateIndexes` and `topupAmounts` were not verified against the message root. - -This was rectified with commit [6df6a4054da926b07f35c5befab4f1f8af33dcc6](https://github.com/privacy-scaling-explorations/maci/pull/522/commits/6df6a4054da926b07f35c5befab4f1f8af33dcc6) - -### Token for top-up is a free resource - -The provided `TopupCredit.sol` contract implemented unprotected `airdrop` and `airdropTo` functions, which could have allowed anyone to receive unlimited voice credits. While this contract was provided as a template, the issue has been rectified by adding the `onlyOwner` modifier to these two functions. - -```javascript -function airdropTo(address account, uint256 amount) public onlyOwner { - require(amount < MAXIMUM_AIRDROP_AMOUNT); - _mint(account, amount); -} - -function airdrop(uint256 amount) public onlyOwner { - require(amount < MAXIMUM_AIRDROP_AMOUNT, "amount exceed maximum limit"); - _mint(msg.sender, amount); -} -``` - -### Integer overflow problem and improper bit length restriction - -This issue within the `float.circom` circuit could have resulted in an overflow on the `IntegerDivision` template. This stemmed from the lack of validation of input size, as well as not preventing a division by zero. Furthemore, it was pointed out that using assert in circuits did not contribute to constraints verification, and could have been bypassed by a malicious coordinator. +## PSE audit 2024 -The issue was rectified with commit [efd4617724e956d2566062c6fe882e1d45cba7c4](https://github.com/privacy-scaling-explorations/maci/pull/523/commits/efd4617724e956d2566062c6fe882e1d45cba7c4) +In February 2024 the PSE Audit team audited the MACI codebase with a focus on the smart contracts, typescript core, and Circom circuits Three critical bugs were found, two within the Circom circuits and one in the smart contracts. All three of these have been fixed. -### MessageQueue in PollFactory is uninitialized - -MACI uses a message queue (a quinary merkle tree) to store all the messages to be processed for a single poll. When deploying a new poll, a corresponding message queue contract is deployed as well, however this was never initialized with a zero value. - -Should the queue never be initialized with the zero value, a malicious user could submit a message to initialize the queue with a value they know how to decrypt, which however would take a very long time to generate a proof for. This could result in a denial of service attack against the coordinator. - -The code was fixed by enqueuing a message containing the zero value `NOTHING_UP_MY_SLEEVE` which is the result of: - -`keccak256("Maci") % p` - -Translated into code, an `init` function was included in the Poll contract, with the following enqueuing of the placeholder leaf: - -```javascript -// init messageAq here by inserting placeholderLeaf -uint256[2] memory dat; -dat[0] = NOTHING_UP_MY_SLEEVE; -dat[1] = 0; -(Message memory _message, PubKey memory _padKey, uint256 placeholderLeaf) = padAndHashMessage(dat, 1); -extContracts.messageAq.enqueue(placeholderLeaf); -``` - -### Additional issues and improvements - -The rest of the issues were either low risk, informational or general optimizations. - -As an example, there were certain functions which did not enforce the checks-effets-interaction pattern, which could potentially have led to reentrancy attacks. While most of these have been fully remediated, the `deployPoll` function within MACI is not currently enforcing the pattern when deploying a new poll contract using the `PollFactory` factory contract. - -```javascript -function deployPoll( - uint256 _duration, - MaxValues memory _maxValues, - TreeDepths memory _treeDepths, - PubKey memory _coordinatorPubKey -) public afterInit { - uint256 pollId = nextPollId; - - [..snip] - - Poll p = pollFactory.deploy( - _duration, - _maxValues, - _treeDepths, - batchSizes, - _coordinatorPubKey, - vkRegistry, - this, - topupCredit, - owner() - ); - - polls[pollId] = p; - - emit DeployPoll(pollId, address(p), _coordinatorPubKey); -} -``` - -As seen above, an external call is made, before updating the state with the new poll. The issue is tracked [here](https://github.com/privacy-scaling-explorations/maci/pull/522#discussion_r981863147) and only left open as the code does not enforce best practices, however it does not pose any immediate risk. - -The rest of the issues were successfully fixed and reflected in the v1.1.1. For the full report, please refer to the `audit` folder inside the root of the repository. +Please see the [PSE Audit report](/audit_reports/20240223_PSE_Audit_audit_report.pdf) for details. ## Veridise disclosure 2023 @@ -226,3 +136,27 @@ for (var i = 0; i < levels; i++) { sum.nums[i] <== out[i] * (BASE ** i); } ``` + +## HashCloak audit 2022 + +In the summer of 2022, MACI v1 was audited by HashCloak. The audit covered both the zk-SNARK circuits and the Solidity smart contracts. + +This audit revealed a number of high severity issues which have been remediated by the MACI development team. All issues were successfully fixed and reflected in MACI v1.1.1. + +Please see the [HashCloak report](/audit_reports/202220930_Hashcloak_audit_report.pdf) for details. + +## HashCloak audit 2021 + +From July 5th, 2021 to August 2nd, 2021, the Ethereum Foundation’s Applied ZKPs team engaged HashCloak for an audit of the MACI protocol. The audit was conducted with 3 auditors over 15 person weeks. + +The following packages were in scope: + +- Circuits +- Contracts +- Core +- Crypto +- Domainobjs + +From August 18, 2021 to September 22, 2021, Hashcloak assisted the MACI team in resolving the issues brought up. + +Please see the [HashCloak report](/audit_reports/20210922_Hashcloak_audit_report.pdf) for details. From a547bcbddfa5118c79bf6fc28060fedbb6e677d7 Mon Sep 17 00:00:00 2001 From: Sam Richards Date: Fri, 23 Feb 2024 14:42:39 -0600 Subject: [PATCH 3/4] docs: update sidebar title to audits --- website/versioned_docs/version-v1.x/audit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/versioned_docs/version-v1.x/audit.md b/website/versioned_docs/version-v1.x/audit.md index 895242425b..d545f2c7f4 100644 --- a/website/versioned_docs/version-v1.x/audit.md +++ b/website/versioned_docs/version-v1.x/audit.md @@ -1,7 +1,7 @@ --- title: MACI Security Audits description: Overview of MACI audit history with references to audit reports. -sidebar_label: Security Assessments +sidebar_label: Security audits sidebar_position: 12 --- From ed0a7159ae4af27bcbb309f7b26a4cab7e0d90ea Mon Sep 17 00:00:00 2001 From: Sam Richards Date: Fri, 23 Feb 2024 14:48:45 -0600 Subject: [PATCH 4/4] docs: clean up Audit page --- website/versioned_docs/version-v1.x/audit.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/website/versioned_docs/version-v1.x/audit.md b/website/versioned_docs/version-v1.x/audit.md index d545f2c7f4..bdfa114350 100644 --- a/website/versioned_docs/version-v1.x/audit.md +++ b/website/versioned_docs/version-v1.x/audit.md @@ -5,9 +5,9 @@ sidebar_label: Security audits sidebar_position: 12 --- -# Security Audits +# MACI Security Audits -## Links +## Full reports - Audit by PSE Audit 2024/02 [report](/audit_reports/20240223_PSE_Audit_audit_report.pdf) - Audit by HashCloak 2022/09 [report](/audit_reports/202220930_Hashcloak_audit_report.pdf) @@ -15,7 +15,7 @@ sidebar_position: 12 ## PSE audit 2024 -In February 2024 the PSE Audit team audited the MACI codebase with a focus on the smart contracts, typescript core, and Circom circuits Three critical bugs were found, two within the Circom circuits and one in the smart contracts. All three of these have been fixed. +In February 2024 the PSE Audit team audited the MACI codebase with a focus on the smart contracts, TypeScript core, and Circom circuits Three critical bugs were found: two within the Circom circuits and one in the smart contracts. All three of these have been fixed. Please see the [PSE Audit report](/audit_reports/20240223_PSE_Audit_audit_report.pdf) for details. @@ -27,8 +27,6 @@ Out of five issues disclosed, only three were relevant and have been since fixed We would like to thank you the Veridise team for their effort in keeping open source projects safe. -> Please note that at this time the fixed code is only present in the dev branch. This will be merged to the main branch in the next minor update. - ### Issue 1 **Description** @@ -157,6 +155,6 @@ The following packages were in scope: - Crypto - Domainobjs -From August 18, 2021 to September 22, 2021, Hashcloak assisted the MACI team in resolving the issues brought up. +From August 18, 2021 to September 22, 2021, Hashcloak assisted the MACI team in resolving the issues. Please see the [HashCloak report](/audit_reports/20210922_Hashcloak_audit_report.pdf) for details.