fix: Reject pre-EIP-155 legacy transactions to prevent cross-chain replay
The legacy signing path accepted transactions that omit the EIP-155 chain_id encoding (vLength == 0) and produced a signature with the legacy v base 27/28. Such signatures are not domain-separated by chain and can be replayed on any EVM-compatible chain that still accepts unprotected legacy transactions. The existing chain-consistency check in finalize_parsing_helper only enforced strict matching for non-mainnet app configurations, so on Ethereum mainnet the replayable mode was never rejected. Reject any LEGACY transaction whose RLP V field is empty, regardless of app configuration. EIP-155 has been mandatory for safe replay protection since 2016, and no current ragger tests rely on the unprotected form. (cherry picked from commit bc1802d3e5beff0978825bd669b6fafd69c617f4)
C
Charles-Edouard de la Vergne committed
4c3ab09795a5a21304fa255f3aa3f4dbe8915d9c
Parent: 3b8241c
Committed by Alexandre Paillier <alexandre.paillier@ledger.fr>
on 8/25/2026, 3:03:56 PM