Executive brief
slp-validate is a JavaScript library used to validate Bitcoin transactions against the Simple Ledger Protocol (SLP) consensus rules. A validation bypass vulnerability allows attackers to craft malicious Bitcoin scripts that cause the validator to produce incorrect results, potentially triggering a hard-fork from the SLP consensus and disrupting transaction validation for users relying on this library.
Technical details
The vulnerability exists in slp-validate versions prior to 1.0.1 and is caused by a string encoding parsing discrepancy in Bitcoin script validation. A specially crafted Bitcoin script can cause the validation result to diverge from the SLP consensus rules, allowing an attacker to bypass validation logic without authentication. The vulnerable component is the script parser; the attack vector is network-based via submission of malicious Bitcoin transactions. An attacker can create transactions that are incorrectly validated, potentially causing consensus splits or acceptance of invalid transactions. The fix is available in version 1.0.1 and later.
Affected products
- Simple Ledger slp-validate 1.0.0
Timeline
- 2019-11-15: disclosed
- 2019-11-15: patched: Version 1.0.1 released