delvingbitcoin

Combined summary - CVE-2024-38365 public disclosure (btcd `FindAndDelete` bug)

Combined summary - CVE-2024-38365 public disclosure (btcd `FindAndDelete` bug)

The conversation delves into the technical nuances of Bitcoin's scripting and signature verification mechanisms, particularly focusing on the FindAndDelete function and its implications for script execution and consensus.

The FindAndDelete function is crucial as it modifies a copy of the script for the purpose of committing to it in the sighash without affecting the script being executed. This process is significant in the context of OP_CHECKSIG operations, where stack elements such as signatures and public keys are consumed and dropped from the remainder of the script as it is executed. A misunderstanding regarding this function's role and its counterpart in the btcd software, named removeOpcodeByData, sparked a detailed discussion. The crux of the issue lies in how removeOpcodeByData could potentially lead to discrepancies between btcd and Core implementations, especially when handling scripts with OP_CODESEPARATOR, which affects signature commitment to the scriptCode.

The dialogue further explores the potential for creating a chain fork by exploiting differences in script execution between btcd and Bitcoin Core versions, emphasizing the need for a valid signature that can be differently interpreted by these two implementations. The discussion underscores the importance of public key recovery in achieving different script executions, pointing out scenarios involving opcodes like OP_EQUALVERIFY and how they might be handled by upgraded versus non-upgraded nodes. This exposition brings to light the complex interplay between various components of Bitcoin's scripting language, including the use of OP_CODESEPARATOR for spending pre-segwit scripts and its implications for signature inclusion in the scriptCode.

Adding to the complexity, the email touches upon the challenges posed by ECDSA signature malleability and the handling of "noise" dummy data within the script execution process. It highlights a specific bug that could allow for the manipulation of script execution outcomes across different Bitcoin node versions, raising concerns about network integrity and consensus. The intricacies of using opcodes for stack inspection and manipulation within the scriptCode are discussed as potential methods for achieving varied script execution outcomes without necessarily relying on public key recovery.

The discourse also includes the revelation of a documented Bitcoin Core unit test patch developed to generate specific transactions that exploit the described vulnerabilities. This patch, intended for private sharing due to security concerns, signifies the delicate balance between disclosing technical details for improvement and preventing misuse by malicious actors.

In a broader context, Niklas Gögge and Antoine Poinsot's discovery of a significant flaw in Btcd software versions prior to 0.24.2 underscores the ongoing vigilance required to maintain consensus rules and integrity within the Bitcoin network. Their efforts exemplify the collaborative and responsible approach to security within the cryptocurrency ecosystem, highlighting the critical role of detailed technical analysis and communication in identifying and addressing potential vulnerabilities.

Discussion History

0
AntoineP Original Post
October 10, 2024 09:02 UTC
1
October 10, 2024 23:22 UTC
2
October 11, 2024 06:47 UTC
3
October 11, 2024 19:13 UTC
4
October 12, 2024 09:22 UTC
5
October 15, 2024 03:35 UTC
6
October 15, 2024 08:57 UTC
7
October 15, 2024 12:00 UTC
8
October 15, 2024 13:09 UTC
9
October 15, 2024 22:32 UTC