SIGN IN SIGN UP

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