- Vulnerabilities that, if exploited, would harm the software operator. In the case of Parallax examples would be:
- A bug that would allow remote reading or writing of OS files, or
- Remote command execution, or
- Bugs that would leak cryptographic keys
- Vulnerabilities that, if exploited, would harm the Parallax mainnet. In the case of the Parallax client, examples would be:
- Consensus vulnerabilities, which would cause a chain split,
- Denial-of-service during block processing, whereby a malicious transaction could cause the network to crash.
- Denial-of-service via p2p networking, whereby portions of the network could be made inaccessible due to crashes or resource consumption.
Why silent patches
In the case of Parallax, it takes a lot of time (weeks, months) to get node operators to update even to a scheduled hard fork. If we were to highlight that a release contains important consensus or DoS fixes, there is always a risk of someone trying to beat node operators to the punch, and exploit the vulnerability. Delaying a potential attack sufficiently to make the majority of node operators immune may be worth the temporary loss of transparency. The primary goal for the Parallax team is the health of the Parallax network as a whole, and the decision whether or not to publish details about a serious vulnerability boils down to minimising the risk and/or impact of discovery and exploitation. At certain times, it’s better to remain silent. This practice is also followed by other projects such as Bitcoin.Public transparency
Our policy on public transparency is:- If we silently fix a vulnerability and include the fix in release
X
, then, - After 4-8 weeks, we will disclose that
X
contained a security-fix. - After an additional 4-8 weeks, we will publish the details about the vulnerability.
Disclosed vulnerabilities
The Parallax client has a built-in command to check whether it is affected by any publically disclosed vulnerability, using the commandprlx version-check
. This command will fetch the latest json file (and the accompanying signature-file, and cross-check the data against its own version number.
The JSON file of known vulnerabilities below is a list of objects, one for each vulnerability, with the following keys:
name
- Unique name given to the vulnerability.
uid
- Unique identifier of the vulnerability. Format
Prlx-<year>-<sequential id>
- Unique identifier of the vulnerability. Format
summary
- Short description of the vulnerability.
description
- Detailed description of the vulnerability.
links
- List of relevant URLs with more detailed information (optional).
introduced
- The first published Parallax client version that contained the vulnerability (optional).
fixed
- The first published Parallax client version that did not contain the vulnerability anymore.
published
- The date at which the vulnerability became known publicly (optional).
severity
- Severity of the vulnerability:
low
,medium
,high
,critical
. - Takes into account the severity of impact and likelihood of exploitation.
- Severity of the vulnerability:
check
- This field contains a regular expression, which can be used against the reported
web3_clientVersion
of a node. If the check matches, the node is with a high likelihood affected by the vulnerability.
- This field contains a regular expression, which can be used against the reported
CVE
- The assigned
CVE
identifier, if available (optional)
- The assigned