{"id":"CVE-2026-61694","state":"PUBLISHED","title":"go-xrpl: ParseMPTAmountBinary: positive MPT amount silently decoded as negative (int64 wrap)","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.","publishedAt":"2026-10-30T19:55:05.539Z","updatedAt":"2026-10-30T19:55:05.539Z","severity":{"score":3.7,"label":"Low","version":"3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["LeJamon go-xrpl"],"affected":[{"vendor":"LeJamon","product":"go-xrpl","versions":[{"version":"<= 0.0.0-20260618134614-cb77d640ee26","status":"affected"}]}],"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"],"weaknesses":["CWE-190"],"ingestedAt":"2026-10-30T20:04:06.178Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/61xxx/CVE-2026-61694.json","commit":"7684a5927aa3dceabed8dec00447545f1b10f31f","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-61694","state":"PUBLISHED","datePublished":"2026-10-30T19:55:05.539Z","dateUpdated":"2026-10-30T19:55:05.539Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-07-10T18:36:58.850Z"},"containers":{"cna":{"title":"go-xrpl: ParseMPTAmountBinary: positive MPT amount silently decoded as negative (int64 wrap)","descriptions":[{"lang":"en","value":"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."}],"affected":[{"vendor":"LeJamon","product":"go-xrpl","versions":[{"version":"<= 0.0.0-20260618134614-cb77d640ee26","status":"affected"}]}],"references":[{"url":"https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7","name":"https://github.com/LeJamon/go-xrpl/security/advisories/GHSA-j5cw-qr86-mmv7","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/LeJamon/go-xrpl/pull/1093","name":"https://github.com/LeJamon/go-xrpl/pull/1093","tags":["x_refsource_MISC"]},{"url":"https://github.com/LeJamon/go-xrpl/commit/9dbd3935ed6c54f0232f2291edf9c012a0900dd5","name":"https://github.com/LeJamon/go-xrpl/commit/9dbd3935ed6c54f0232f2291edf9c012a0900dd5","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":3.7,"baseSeverity":"LOW","confidentialityImpact":"NONE","integrityImpact":"LOW","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-190","lang":"en","description":"CWE-190: Integer Overflow or Wraparound","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-30T19:55:05.539Z"},"source":{"advisory":"GHSA-j5cw-qr86-mmv7","discovery":"UNKNOWN"}}}}}