{"id":"CVE-2026-61694","title":"go-xrpl: ParseMPTAmountBinary: positive MPT amount silently decoded as negative (int64 wrap)","summary":"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…","severity":"low","cvss":3.7,"cvssVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N","cvssSource":"cna","cwe":["CWE-190"],"vendor":"LeJamon","product":"go-xrpl","affected":["go-xrpl <= 0.0.0-20260618134614-cb77d640ee26"],"ssvc":{"exploitation":"poc","automatable":"no","technicalImpact":"partial","timestamp":"2026-11-06T17:42:07.230669Z"},"exploitAvailable":true,"published":"2026-10-30","updated":"2026-11-06","sourceUpdated":"2026-11-06T17:58:32.513Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-61694","references":[{"url":"https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7","label":"https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7"},{"url":"https://github.com/LeJamon/go-xrpl/pull/1093","label":"https://github.com/LeJamon/go-xrpl/pull/1093"},{"url":"https://github.com/LeJamon/go-xrpl/commit/9dbd3935ed6c54f0232f2291edf9c012a0900dd5","label":"https://github.com/LeJamon/go-xrpl/commit/9dbd3935ed6c54f0232f2291edf9c012a0900dd5"}],"tags":["cve.org","exploit-available"],"epss":0.00275,"epssPercentile":0.20038,"ingestedAt":"2026-11-05T16:24:31.424Z","slug":"CVE-2026-61694","body":"## Overview\n\ngo-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.\n\n## Affected\n\n- `go-xrpl <= 0.0.0-20260618134614-cb77d640ee26`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"twilight","depthScore":32,"depthScoreParts":{"impact":20.4,"likelihood":0.1,"exploitation":12,"ransomware":0},"changes":[{"seq":235586,"id":"CVE-2026-61694","ts":1793991740122,"field":"exploit_available","old":"false","new":"true"}]}