Introduction
We express our gratitude to the Rozo team for the collaborative engagement that enabled the execution of this Smart Contract Security Assessment.
ROZO Intents is an intent-based stablecoin SDK that enables users to transfer USDC and other stablecoins between chains like Stellar, Base, Polygon, and Solana with zero confusion and near-zero error. It is designed for real-world payment speed and reliability, combining stablecoin abstraction, automatic route selection for the fastest route, and optimized capital flow with transparent status tracking.
Document | |
|---|---|
| Name | Smart Contract Code Review and Security Analysis Report for Rozo |
| Audited By | Felipe Donato |
| Approved By | Kerem Solmaz |
| Website | https://rozo.ai→ |
| Changelog | 30/03/2026 - Preliminary Report |
| Platform | Stellar |
| Language | Rust |
| Tags | Bridge |
| Methodology | https://docs.hacken.io/methodologies/smart-contracts→ |
Document
- Name
- Smart Contract Code Review and Security Analysis Report for Rozo
- Audited By
- Felipe Donato
- Approved By
- Kerem Solmaz
- Website
- https://rozo.ai→
- Changelog
- 30/03/2026 - Preliminary Report
- Platform
- Stellar
- Language
- Rust
- Tags
- Bridge
Review Scope | |
|---|---|
| Repository | https://github.com/RozoAI/rozo-intents-contracts/tree/main→ |
| Commit | 1c2f003 |
Review Scope
- Commit
- 1c2f003
Audit Summary
The system users should acknowledge all the risks summed up in the risks section of the report
{Finding_Table?columns=title,severity,status&setting.filter.type=Vulnerability}
Documentation quality
Design documentation is provided for both contracts, including state machine diagrams, interface specifications, security checklists, and pseudocode implementations.
Role definitions and trust model (trusted backend) are documented.
Inline code documentation is minimal - function signatures have brief doc comments but do not describe parameter constraints or revert conditions.
Code quality
The development environment is configured.
Test coverage
Code coverage of the project is 97.69% (line coverage).
Deployment, authorization enforcement, and state machine transitions are covered with tests.
Negative input testing is partially covered (zero amounts, memo limits, unauthorized callers, invalid status transitions). Negative numeric values, exact boundary conditions, and deadline edge-case timing are not tested.
Event data correctness is not verified despite the system being event-driven.
System Overview
Rozo Intents V2 is a set of Soroban smart contracts that enable cross-chain token forwarding and bridging on Stellar. It consists of two contracts:
Token Forwarder: Enables bidirectional transfers between Smart Wallets (C Accounts) and Stellar Accounts (G Accounts)
Intent Bridge: Escrow-based cross-chain intent system with timeout protection
Privileged roles
Intent Bridge:
Messenger- can callfill()to confirm cross-chain completion and release escrowed funds to the Relayer. Cannot be rotated post-deployment.Relayer- passive recipient of filled intent funds. Cannot be rotated post-deployment.No admin role exists. No contract parameters can be modified after deployment.
Token Forwarder:
Admin- can update the proxy address viaset_proxy_address(), set and remove memo mappings, and flush stuck tokens to the proxy. Cannot be rotated post-deployment.No pause, upgrade, or self-destruct capability exists in either contract.
Potential Risks
System Reliance on External Contracts: The Intent Bridge accepts arbitrary token contract addresses and delegates transfer execution to external token contracts not covered by this audit. Any non-standard behavior in these token contracts (e.g., fee-on-transfer, rebasing) directly affects the correctness of the bridge's escrow accounting.
Scope Limitation: This audit covers only the on-chain Soroban contracts within the defined scope. The off-chain messenger, relayer, backend infrastructure, and frontend application were not assessed. The overall security of the cross-chain settlement flow depends on components outside this audit's scope.
Absence of Time-lock Mechanisms for Critical Operations: The fill() function releases escrowed funds immediately upon messenger authorization with no delay or review window. There is no buffer to detect or revert a potentially incorrect or malicious fill before funds leave the contract.
Insufficient Multi-signature Controls for Critical Functions: The messenger role is a single key that controls all fund releases via fill(). No multi-signature or threshold scheme is required. Compromise of this single key allows unilateral release of all pending escrowed funds.
Single Points of Failure and Control: The messenger and relayer are single addresses controlled by Rozo. Cross-chain settlement depends entirely on these centralized roles. No decentralized confirmation mechanism exists in the current design.
Administrative Key Control Risks: All privileged roles (Messenger, Relayer, Admin) are immutable single keys set at deployment. There is no on-chain recovery path if any key is lost or compromised. Rotation requires full contract redeployment, leaving pending state in the old contract inaccessible from the new one.
Findings
Code ― | Title | Status | Severity | |
|---|---|---|---|---|
| F-2026-1561 | Fee-on-Transfer Tokens Can Break Intent Accounting | fixed | Medium | |
| F-2026-1560 | Missing Persistent TTL Extension on Memo Mappings Can Cause Silent Routing Failure | fixed | Low | |
| F-2026-1560 | Missing Instance Storage TTL Extension Can Cause Temporary Contract Unavailability | fixed | Low | |
| F-2026-1560 | Missing Destination Field Validation Allows Malformed Intents On-Chain | fixed | Observation | |
| F-2026-1560 | Missing Existence Check in removememomapping Emits Spurious Events | fixed | Observation | |
| F-2026-1560 | Unused Error Variants Reduce ABI Clarity | fixed | Observation | |
| F-2026-1560 | Outdated soroban-sdk Dependency Contains Three Known CVEs | fixed | Observation | |
| F-2026-1560 | Immutable Role Configuration Prevents On-Chain Key Rotation After Deployment | fixed | Observation |
Appendix 1. Definitions
Severities
When auditing smart contracts, Hacken is using a risk-based approach that considers Likelihood, Impact, Exploitability and Complexity metrics to evaluate findings and score severities.
Reference on how risk scoring is done is available through the repository in our Github organization:
Severity | Description |
|---|---|
Critical | Critical vulnerabilities are usually straightforward to exploit and can lead to the loss of user funds or contract state manipulation. |
High | High vulnerabilities are usually harder to exploit, requiring specific conditions, or have a more limited scope, but can still lead to the loss of user funds or contract state manipulation. |
Medium | Medium vulnerabilities are usually limited to state manipulations and, in most cases, cannot lead to asset loss. Contradictions and requirements violations. Major deviations from best practices are also in this category. |
Low | Major deviations from best practices or major Gas inefficiency. These issues will not have a significant impact on code execution. |
Severity
- Critical
Description
- Critical vulnerabilities are usually straightforward to exploit and can lead to the loss of user funds or contract state manipulation.
Severity
- High
Description
- High vulnerabilities are usually harder to exploit, requiring specific conditions, or have a more limited scope, but can still lead to the loss of user funds or contract state manipulation.
Severity
- Medium
Description
- Medium vulnerabilities are usually limited to state manipulations and, in most cases, cannot lead to asset loss. Contradictions and requirements violations. Major deviations from best practices are also in this category.
Severity
- Low
Description
- Major deviations from best practices or major Gas inefficiency. These issues will not have a significant impact on code execution.
Potential Risks
The "Potential Risks" section identifies issues that are not direct security vulnerabilities but could still affect the project’s performance, reliability, or user trust. These risks arise from design choices, architectural decisions, or operational practices that, while not immediately exploitable, may lead to problems under certain conditions. Additionally, potential risks can impact the quality of the audit itself, as they may involve external factors or components beyond the scope of the audit, leading to incomplete assessments or oversight of key areas. This section aims to provide a broader perspective on factors that could affect the project's long-term security, functionality, and the comprehensiveness of the audit findings.
Appendix 2. Scope
The scope of the project includes the following smart contracts from the provided repository:
Scope Details | |
|---|---|
| Repository | https://github.com/RozoAI/rozo-intents-contracts/tree/main→ |
| Commit | 1c2f003 |
| Whitepaper | N/A |
| Requirements | https://docs.rozo.ai; README.md |
| Technical Requirements | https://docs.rozo.ai; README.md |
Scope Details
- Commit
- 1c2f003
- Whitepaper
- N/A
- Requirements
- https://docs.rozo.ai; README.md
- Technical Requirements
- https://docs.rozo.ai; README.md
Assets in Scope
Appendix 3. Additional Valuables
Additional Recommendations
The smart contracts in the scope of this audit could benefit from the introduction of automatic emergency actions for critical activities, such as unauthorized operations like ownership changes or proxy upgrades, as well as unexpected fund manipulations, including large withdrawals or minting events. Adding such mechanisms would enable the protocol to react automatically to unusual activity, ensuring that the contract remains secure and functions as intended.
To improve functionality, these emergency actions could be designed to trigger under specific conditions, such as:
Detecting changes to ownership or critical permissions.
Monitoring large or unexpected transactions and minting events.
Pausing operations when irregularities are identified.
These enhancements would provide an added layer of security, making the contract more robust and better equipped to handle unexpected situations while maintaining smooth operations.
Frameworks and Methodologies
This security assessment was conducted in alignment with recognised penetration testing standards, methodologies and guidelines, including the NIST SP 800-115 – Technical Guide to Information Security Testing and Assessment →, and the Penetration Testing Execution Standard (PTES) →, These assets provide a structured foundation for planning, executing, and documenting technical evaluations such as vulnerability assessments, exploitation activities, and security code reviews. Hacken’s internal penetration testing methodology extends these principles to Web2 and Web3 environments to ensure consistency, repeatability, and verifiable outcomes.