Summary
100% of all REPORTED Findings have been addressed
- 0Solved
- 3Future Release
- 1Acknowledged
- 4All Findings
- Critical0
- High0
- Medium0
- Low0
- Informational4
- 1Ack.
- 3F. Release
Introduction#
NUVA engaged Halborn to conduct a security assessment of the vault credit facility smart contracts on Provenance, beginning on September 29th, 2026, and concluding on October 1st, 2026. This security assessment was scoped to the in-scope Rust source of the vault-credit-facility-lite contract and the shared vault-settlement library. Commit hashes, audited components, and further details can be found in the Scope section of this report.
The lite facility is a minimal CosmWasm credit line that tracks par (1:1) debt between vault underlying and a receipt marker held in the vault. Draw and repay flows are planned through settlement helpers that emit Provenance vault, marker, and bank messages. The design must preserve ledger consistency, respect vault pause and halt semantics, and avoid unsafe forwarding of drawn funds.
Assessment Summary#
The team at Halborn assigned a full-time security engineer to verify the security of the smart contracts. The security engineer is a blockchain and smart-contract security expert with advanced penetration testing, smart-contract hacking, and deep knowledge of multiple blockchain protocols.
The purpose of this assessment is to:
Ensure that smart contract functions operate as intended
Identify potential security issues with the smart contracts
In summary, Halborn identified some improvements to reduce the likelihood and impact of risks, which have been acknowledged by the NUVA team. The main ones were the following:
Apply min(payment.amount, principal) to repayments and refund any excess underlying to the sender in the same transaction as settlement.Add an admin-gated sweep that returns accidentally received native tokens to a validated recipient, rejecting attached funds and the contract itself as recipient.Reject the contract address as destination, and verify that a fresh instance binds to an existing vault, matching underlying, and a receipt marker with zero supply before operational use.Require principal, receipt supply, and vault receipt holdings to match before Draw changes state, and reject the draw when they differ without adjusting balances automatically.
Test Approach and Methodology#
Halborn performed a combination of manual and automated security testing to balance efficiency, timeliness, practicality, and accuracy in regard to the scope of this assessment. While manual testing is recommended to uncover flaws in logic, process, and implementation, automated testing techniques help enhance code coverage and quickly identify items that do not follow security best practices. The following phases and associated tools were used during the assessment:
Research into the lite facility architecture, and documented trust boundaries for admin, borrower, and permissionless entrypoints.
Manual review of in-scope CosmWasm entrypoints, storage layout, and message planners across the lite contract and settlement library.
Verification of role checks, halt gating, vault pause handling, and fund attachment rules on execute paths.
Analysis of draw, repay, and interest-deposit flows against par pricing, principal accounting, and reconciliation queries.
Evaluation of migration semantics, configuration validation, and liveness edge cases on queries and settlement reads.
Use of repository unit tests and harness-driven scenarios to support reachability analysis.
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 |
|---|---|---|---|---|
| Repayments Exceeding Outstanding Principal Revert Instead of Refunding Excess | Informational | 1.7 | Acknowledged10/09/2026 | |
| Native Tokens Sent Outside the Intended Flows Have No Recovery Operation | Informational | 1.0 | Future Release10/09/2026 | |
| Configuration Validation Does Not Check Destination Suitability or Vault Bindings | Informational | 1.0 | Future Release10/09/2026 | |
| New Draws Are Not Gated on the Receipt Reconciliation Invariant | Informational | 0.0 | Future Release10/09/2026 |
Findings & Tech Details#
Description
Recommendation
Remediation Comment
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.
