Summary
100% of all REPORTED Findings have been addressed
- 0Acknowledged
- 2Risk Accepted
- 1Solved
- 3All Findings
- Critical0
- High0
- Medium0
- Low0
- Informational3
- 2Risk A.
- 1Solved
Introduction#
This security assessment was commissioned by Ripple. The review was performed by Halborn Inc. as part of the (TCE) program re-audit engagement, spanning from March 27, 2026 to April 7, 2026.
The scope of this re-audit covers the full Batch transaction implementation within the XRP Ledger (XRPL) codebase, with the assessment targeting commit hash 36503b50178393e372d46f3be3aaeb71f30acd93 from the fix pull request submitted at https://github.com/XRPLF/rippled/pull/6446.
The reviewed code is written in C++ and forms part of the rippled reference implementation. The purpose of this engagement is to verify that previously identified vulnerabilities have been correctly remediated and to identify any residual or newly introduced security issues in the updated Batch transaction logic prior to production deployment.
Assessment Summary#
The re-audit was conducted over a period of approximately 8 calendar days by a specialized team of Halborn security engineers with deep expertise in distributed ledger protocols and C++ systems security. The engagement was executed under the TCE program, ensuring continuous and structured verification of the remediation applied to the XRPL Batch transaction feature.
The primary objectives of this assessment were to:
Confirm the correctness and completeness of fixes introduced in pull request #6446.
Identify any residual vulnerabilities or logic gaps introduced or left unresolved in the updated codebase.
Evaluate the security posture of the Batch transaction execution pipeline as a whole.
Test Approach and Methodology#
The assessment followed a structured, multi-phase methodology designed to provide comprehensive coverage of the Batch transaction execution logic within the rippled C++ codebase.
The review was organized into the following sequential phases:
Scoping and Reconnaissance: The target pull request and commit hash were confirmed with the Ripple engineering team. Relevant source files, amendment flags, and transactor entry points were identified to establish a clear attack surface boundary.
Manual Code Review: A thorough, line-by-line manual review of the Batch-related logic was performed, focusing on transaction application order, view merging, invariant enforcement, signing and authorization flows, and mode-flag handling (
tfUntilFailure,tfAllOrNothing). This phase represented the primary and most consequential portion of the assessment.Automated Static Analysis: Automated tooling was applied to the C++ source to surface common vulnerability classes including memory safety issues, undefined behavior, and logic errors at scale.
Differential Analysis: The changes introduced in PR #6446 were compared against the previously audited codebase to isolate net-new changes and confirm that prior findings were addressed.
Test Coverage Review: Existing test suites were evaluated for completeness against the identified risk areas, with gaps in coverage noted where found, particularly around delegation and batch composition edge cases.
The methodology was weighted heavily toward manual review, given the complexity of the stateful transaction application pipeline and the need to reason carefully about execution order, view layering, and amendment interactions. Automated tooling served as a complementary layer to extend coverage breadth.
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 |
|---|---|---|---|---|
| UntilFailure: tec inners merge into the batch view before the stop | Informational | — | Risk Accepted08/31/2026 | |
| No second invariant pass on the merged batch view | Informational | — | Risk Accepted08/19/2026 | |
| Delegation on inner batch transactions | Informational | — | Solved08/19/2026 |
Findings & Tech Details#
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
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.
