XRPL fixes critical pre-mainnet flaw, but client apps remain at risk

Blockonomics
Bybit


XRP Ledger (XRPL) validators have put BatchV1_1 on a conditional path to activate at 14:06:41 UTC on Sept. 29, turning a security near-miss into a live test of the network’s amendment process and its surrounding software.

On Sept. 22, xrpldashboard showed 30 of 35 trusted validators supporting the amendment, above its displayed 28-vote threshold. The majority first appeared on-ledger on Sept. 15.

Under XRPL’s amendment rules, support must remain above 80% for two weeks. A fall to 80% or less ends the majority period, so the activation date remains conditional.

Sept. 29 is the first production test of whether XRPL’s validator process, reference implementation, and client ecosystem converted a dangerous pre-mainnet flaw into usable atomic transaction infrastructure.

itrust

The validator firewall worked before mainnet

The original Batch amendment never activated on the XRP Ledger mainnet. In February, researchers found a critical authorization flaw while the amendment was still in its voting phase, and validators were advised to vote it down.

XRPL Labs’ official vulnerability disclosure states that no funds were at risk.

The flaw sat in the loop that checked the accounts authorizing a batch. If the code encountered a signer for a newly created account whose key matched that account, it returned success immediately instead of continuing through the remaining signers.

An attacker could place that valid signer first, then add a forged entry purporting to authorize a victim account. If the amendment had gone live, the unchecked victim transaction could have executed without the victim’s keys.

XRPL’s response came in two stages. Version 3.1.1 marked the original Batch and fixBatchInnerSigs amendments unsupported, blocking their activation. BatchV1_1 later replaced them with a rewritten authorization path and additional defenses.

The episode was a failure caught at the boundary between software release and protocol activation.

The XRPL Foundation’s final XLS-56 specification now requires a multi-account batch to contain the exact, complete set of BatchSigners whose authorization the inner transactions would ordinarily need, apart from the account whose normal signature authorizes the outer transaction.

Missing, extra, duplicate, or incorrectly ordered entries cause rejection.

Each BatchSigner also signs more than a loose collection of inner transactions. The payload binds the signature to the outer account, its sequence number or ticket, the selected batch mode, the ordered hashes of every inner transaction, and the BatchSigner account.

A multi-signed entry also binds each nested signer account. That prevents a valid signature from being lifted into a different outer transaction or reassigned to another participant.

The merged reference implementation adds enforcement around that design, including signer ordering and uniqueness checks, transaction-count bounds, rejection of directly submitted inner transactions, and protections for ledger replay.

Together, those changes address both the disclosed premature-success bug and adjacent ways that malformed or replayed batch data could cross authorization boundaries.

A Batch contains two to eight inner transactions. Each inner transaction carries no signature or fee and is marked so it cannot be submitted independently. The outer Batch selects exactly one of four modes:

  • ALLORNOTHING: every inner transaction must succeed or none of their state changes commit.
  • ONLYONE: the first successful inner transaction is the only one applied.
  • UNTILFAILURE: transactions apply in order until one fails.
  • INDEPENDENT: every inner transaction is attempted regardless of the others’ results.

BatchV1_1 can support atomic all-or-nothing flows, but not every batch is atomic in that narrow sense. Developers can also use it for ordered fallbacks or independent bundles.

Activation shifts risk to implementation

The most immediate integration trap is that an outer Batch can return tesSUCCESS even when one or more inner transactions fail. Clients must inspect each inner transaction’s metadata and result code to determine what happened.

That distinction is important outside ALLORNOTHING mode, where partial or independent execution is intentional.

BatchV1_1 support shipped in xrpld 3.3.0 on Aug. 6. Once the amendment activates, a server that does not understand the new rules becomes amendment-blocked. It can no longer reliably validate the ledger or participate in consensus until it upgrades.