This is a security notification affecting mining pools that use the Z-NOMP pool software for Equihash mining that can be found at https://github.com/z-classic/z-nomp. The fix is published, and users should update their local clones of the repository as soon as possible:
sudo apt-get update && sudo apt-get install build-essential libsodium-dev libboost-system-dev
# cd into the current Z-NOMP install directory
git checkout master
The vulnerability does not impact the security of ZenCash or any other Equihash coin itself, only the validation of shares submitted to mining pools. Invalid blocks were never able to be accepted by the network.
The previous implementation of the Equihash verifier at https://github.com/joshuayabut/equihashverify has a flaw that makes it possible to pass specifically crafted solutions as valid. The new implementation at https://github.com/HorizenOfficial/equihashverify uses node bindings with the ZCash reference Equihash verifier implementation and properly rejects those solutions.
On March 6th, a mining pool operator reached out to us about a possible exploit in Z-NOMP, a very commonly used mining pool hosting application. After validating the issue, the ZenCash DevOps team began implementing a fix.
The DevOps team finished implementing and testing a draft of the fix on March 22nd. A full notification was sent via encrypted email to the ZCashCo team on the same day. As the Bitcoin Private community maintains the Z-NOMP repository hosted at ZClassic they were notified as well. Both teams were given a copy of the fix to review, as well as an estimated disclosure timeline outlining the process we expected to follow.
Allowing the ZCash and Bitcoin Private teams time to test the fix caused a small delay in the disclosure timeline, but everyone involved had agreed that we were ready to move forward on April 7th. The next step was an extended testing phase, in which known pool operators were informed of the incumbent update, and given instructions to test the fix before the full release if they desired. This was started April 8th and many pool operators have applied the update with no reported issues.
Today, we are publicly releasing this fix. It is imperative that pool operators update as quickly as possible to ensure that rewards are dispersed correctly. Pool operators can contact us for support or any other matter via one of the following methods:
- Email to support[at]zencash.com
- Online helpdesk at https://support.horizen.io/
- #pool-ops on the Discord server
- Contact any members of the Admin role to be added to the Pool Operators role
You can expect another update from us in several weeks, in which we will disclose the initial reporter and the bounty given for their report, as well as a copy of our estimated disclosure timeline, and all initial notifications. We would like to start a discussion about the best way to handle vulnerability disclosure in the future, and are hoping the community will provide feedback on the process we followed, or how to improve upon it.
We want to stress how important security is. Mining pool software is a critical part of our ecosystem, and it has to be checked vigorously by everyone involved. We welcome you to check and audit the code at https://github.com/HorizenOfficial/equihashverify.