Reports

Smart Contract Security Assessment

Euler securitize

ERC4626EVCCollateralSecuritize is an EVC-compatible collateral vault designed for Securitize RWA tokens, enforcing compliance-checked transfers through the Securitize compliance service while providing governance-controlled freeze and seize capabilities for regulated asset management.

3
Issues
1
C/H/M
Period
Nov 17, 2025 - Nov 18, 2025
Auditors
Panda, HHK

Review Summary

Protocol Overview

ERC4626EVCCollateralSecuritize is an EVC-compatible collateral vault designed for Securitize RWA tokens, enforcing compliance-checked transfers through the Securitize compliance service while providing governance-controlled freeze and seize capabilities for regulated asset management.

Protocol
Euler securitize
Timeline
Nov 17, 2025 - Nov 18, 2025
Audit Team
Panda, HHK

Scope

This audit covers eight smart contracts across two days of review.

Overall Assessment

The codebase demonstrates strong security practices with no critical or high-severity vulnerabilities identified. The medium-severity finding regarding frozen account borrowing behavior has a clear mitigation path, while the low and informational findings represent edge cases and design considerations rather than fundamental flaws. The code quality is solid and production-ready with the recommended fixes applied.

Evaluation Matrix

access control

mathematics

complexity

libraries

decentralization

code stability

documentation

monitoring

testing

Key Findings

Findings Summary

0
Critical
0
High
1
Medium
1
Low
1
Informational
0
Gas
M-1 Finding

M-1: Frozen accounts can still borrow against frozen collateral

Medium

Summary:

When the governor freezes an account, the collateral becomes unavailable and cannot be liquidated. However, the current architecture still allows the account to borrow tokens, potentially bypassing the freeze's intended purpose.

Description:

The function freeze() allows freezing the assets of a user. This freeze functionality is required by the Securitize integration guide.

The freeze is intended to execute court orders or regulatory needs on an account. When frozen, an account cannot be liquidated, and eventually the governor will be responsible for unfreezing it or seizing the collateral.

However, the frozen account can still borrow on the EVK after being frozen because the EVK uses balanceOf() to determine the account balance and ignores if the assets are frozen.

This could allow a user under court order to max borrow against his collateral after being frozen and exit some liquidity, bypassing some of the intended purpose of the freeze feature.

Impact:

Medium. A frozen account can still borrow against its collateral, potentially bypassing court orders or regulatory requests.

Recommendation:

As suggested by the Euler team:

Override the balanceOf() function to return zero if the EVC checks are in progress. This will result in 0 collateral for the EVK and effectively block new borrows while still returning the correct user balance for wallets and indexers.

Developer Response:

Fixed in: bb0bb5.

L-1 Finding

L-1: Frozen Accounts Cannot Add Collateral Before Unfreezing, Leading to Immediate Liquidation Risk

Low

Description:

When an account is frozen via the freeze() function in ERC4626EVCCollateralFreezable, the whenNotFrozen modifier blocks all balance-changing operations including deposit(), mint(), withdraw(), redeem(), and transfer() operations for that account.

While the account owner can still repay outstanding debt on the borrowing vault side while frozen, they cannot add more collateral to this vault to improve their collateralization ratio. If during the freeze period the account becomes undercollateralized, the account will be immediately eligible for liquidation upon being unfrozen.

This creates an asymmetric situation where:

  1. The frozen account cannot proactively add collateral to protect against liquidation
  2. Upon unfreezing, liquidators can immediately liquidate the account if it's underwater
  3. There is no grace period or opportunity for the account owner to add collateral between unfreezing and potential liquidation

Impact:

Low.

Recommendation:

Implement a grace period: Add a grace period mechanism after unfreezing during which liquidations are temporarily disabled, giving account owners time to add collateral if needed.

Developer Response:

Acknowledged, will keep as is. Although this might be a valid issue for other freezable contracts, in the case of Securitize collateral, we prefer to keep the logic simple, as freezing will occur in extraordinary situations, which will be handled individually. Since the liquidators are whitelisted, the parties may arrange unfreezing as they see fit.

I-1 Finding

I-1: Immutable `complianceService` address cannot be updated

Informational

Description:

The complianceService address is a storage variable on the Securitize contracts and could be updated. The current implementation stores it in an immutable variable that cannot be updated.

Impact:

Informational. If the complianceService address changes, the contracts will need to be redeployed.

Recommendation:

Consider making complianceService a storage variable with a setter, or add a public function that queries the current complianceService from Securitize on demand.

Developer Response:

Fixed in: 4b102cd.

Final Remarks

The codebase demonstrates strong security practices, no critical/high-severity issues, and only medium/low-severity findings that have clear mitigations and represent edge cases rather than fundamental flaws. However, some elements of the Securitize integration remain unclear and will require additional testing once those details are known.

Methodology

Severity Classification

Critical

Immediate threat to user funds or protocol integrity

Direct loss of funds, protocol compromise

High

Significant security risk requiring urgent attention

Potential fund loss, major functionality disruption

Medium

Important issue that should be addressed

Limited fund risk, functionality concerns

Low

Minor issue with minimal impact

Best practice violations, minor inefficiencies

Gas

Findings that improve gas efficiency

Increased transaction costs

Informational

Code quality and best practice recommendations

Reduced maintainability and readability