Summary
100% of all REPORTED Findings have been addressed
- 0Risk Accepted
- 2Not Applicable
- 3Solved
- 5All Findings
- Critical0
- High2
- 1Solved
- 1N/A
- Medium1
- 1N/A
- Low0
- Informational2
- 2Solved
Introduction#
XRPL Foundation engaged Halborn to perform a focused security assessment with particular attention on the new XLS-82d feature set. The review ran from 21 July 2025 to 5 August 2025. The scope, of engagement can be obtained from the scope section.
The XRPL (XRP Ledger) is a decentralised network supporting payments, tokenisation and now, via XLS-82d, native AMM pools. XLS-33 introduces MPTokens fungible assets that can be transferred without establishing trust-lines. These upgrades aim to broaden DeFi capabilities while maintaining XRPL’s guarantees of safety, determinism and low-latency settlement.
Assessment summary#
Halborn assigned one full-time senior security engineer with deep expertise in C++ ledger code, consensus protocols and DeFi primitives. The objective was to:
• Verify that AMM and MPT logic enforce the intended business rules
• Uncover vulnerabilities that could lead to fund loss, state corruption or denial of service
During the engagement Halborn identified three previously unknown denial-of-service vectors, all enabled by the “trust-line-free” nature of MPTokens:
1. Unsolicited MPToken can permanently freeze an AMM pool (blocks last-LP withdrawal, claw-back and deletion).
2. A single MPToken prevents an account from ever being deleted.
3. A single MPToken blocks an issuer from enabling RequireAuth or AllowTrustLineClawback in AccountSet.
Each issue is low cost to exploit (one standard transaction fee) and requires no permissions. Full details and remediation guidance are provided in the Findings section.
Methodology#
Halborn followed its standard hybrid methodology:
• Architectural review of AMM/MPT amendments and transaction flow
• Manual source-code inspection of C++ ledger logic (owner-directory handling, flag gating, AMM helpers)
• Differential analysis against pre-amendment behaviour
• Custom fuzz utilities for unsolicited MPToken injection
• Reproduction in a private XRPL test-net built from the audited commit
Static tools (clang-tidy, cppcheck) and the project’s own unit-test suite complemented the manual work, but the vulnerabilities discovered were logic-level and surfaced only through directed testing.
Risk Methodology#
4.1 EXPLOITABILITY
Attack Origin (AO):
Attack Cost (AC):
Attack Complexity (AX):
Metrics:
| EXPLOITABILITY METRIC () | METRIC VALUE | NUMERICAL VALUE |
|---|---|---|
| Attack Origin (AO) | Arbitrary (AO:A) | 1 |
| Specific (AO:S) | 0.2 | |
| Attack Cost (AC) | Low (AC:L) | 1 |
| Medium (AC:M) | 0.67 | |
| High (AC:H) | 0.33 | |
| Attack Complexity (AX) | Low (AX:L) | 1 |
| Medium (AX:M) | 0.67 | |
| High (AX:H) | 0.33 |
4.2 IMPACT
Confidentiality (C):
Integrity (I):
Availability (A):
Deposit (D):
Yield (Y):
Metrics:
| IMPACT METRIC () | METRIC VALUE | NUMERICAL VALUE |
|---|---|---|
| Confidentiality (C) | None (C:N) | 0 |
| Low (C:L) | 0.25 | |
| Medium (C:M) | 0.5 | |
| High (C:H) | 0.75 | |
| Critical (C:C) | 1 | |
| Integrity (I) | None (I:N) | 0 |
| Low (I:L) | 0.25 | |
| Medium (I:M) | 0.5 | |
| High (I:H) | 0.75 | |
| Critical (I:C) | 1 | |
| Availability (A) | None (A:N) | 0 |
| Low (A:L) | 0.25 | |
| Medium (A:M) | 0.5 | |
| High (A:H) | 0.75 | |
| Critical (A:C) | 1 | |
| Deposit (D) | None (D:N) | 0 |
| Low (D:L) | 0.25 | |
| Medium (D:M) | 0.5 | |
| High (D:H) | 0.75 | |
| Critical (D:C) | 1 | |
| Yield (Y) | None (Y:N) | 0 |
| Low (Y:L) | 0.25 | |
| Medium (Y:M) | 0.5 | |
| High (Y:H) | 0.75 | |
| Critical (Y:C) | 1 |
4.3 SEVERITY COEFFICIENT
Reversibility (R):
Scope (S):
Metrics:
| SEVERITY COEFFICIENT () | COEFFICIENT VALUE | NUMERICAL VALUE |
|---|---|---|
| Reversibility () | None (R:N) | 1 |
| Partial (R:P) | 0.5 | |
| Full (R:F) | 0.25 | |
| Scope () | Changed (S:C) | 1.25 |
| Unchanged (S:U) | 1 |
| Critical | High | Medium | Low | Informational |
| 9 - 10 | 7 - 8.9 | 4.5 - 6.9 | 2 - 4.4 | 0 - 1.9 |
Scope#
Assessment Summary & Findings Overview#
# | Title | Severity | Score | Status |
|---|---|---|---|---|
| std::sort Without Strict Weak Ordering in compareAccountCandidate | High | 7.5 | Solved07/31/2025 | |
| AccountSet Flag-Change DoS via MPToken | High | 7.5 | Not Applicable08/05/2025 | |
| Unsolicited MPToken Makes Any Account Permanently Undeletable | Medium | 5.0 | Not Applicable08/05/2025 | |
| MPT Flags With canClawback & canTrade in DEX | Informational | 0.0 | Solved07/31/2025 | |
| MPTAmount stability check may trigger division by zero | Informational | 0.0 | Solved08/05/2025 |
Findings & Tech Details#
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Disclaimer#
Halborn strongly recommends conducting a follow-up assessment of the project either within six months or immediately following any material changes to the codebase, whichever comes first. This approach is crucial for maintaining the project’s integrity and addressing potential vulnerabilities introduced by code modifications.
