57882 sc insight venue tokens cannot be withdrawn when there are no promoters involved in customers transactions

Submitted on Oct 29th 2025 at 11:14:58 UTC by @Josh4324 for Audit Comp | Belongarrow-up-right

  • Report ID: #57882

  • Report Type: Smart Contract

  • Report severity: Insight

  • Target: https://github.com/immunefi-team/audit-comp-belong/blob/main/contracts/v2/platform/BelongCheckIn.sol

  • Impacts:

    • Permanent freezing of funds

Description

Brief/Intro

In the BelongCheckIn contract, venue owners deposit USDC and LONG tokens into an Escrow, receiving ERC1155 venue tokens (via CreditToken) representing their USD-denominated balances. These venue tokens are primarily burned to mint promoter tokens during customer payments involving promoters, with promoters later claiming payouts from Escrow. However, if no promoters are involved (i.e., no customer payments trigger burns), venue owners have no mechanism to burn their venue tokens and redeem the underlying funds from Escrow.

This results in permanent locking of deposited funds, as there are no direct redemption or burn-to-withdraw functions for venue token.

Vulnerability Details

Venue deposits mint venue tokens proportional to USD value, but burns only occur in payToVenue when a promoter is specified (burning venue tokens to mint promoter tokens). Without promoters, no burns happen, and there is no alternative function for venues to initiate burns or directly withdraw from Escrow. The Escrow only disburses via distributeVenueDeposit (for promoter claims) or distributeLONGDiscount (subsidies), both tied to other actions. The emergency emergencyCancelPayment only reverses promoter credits back to venue tokens, not redeeming underlying funds.

Scenario for Issue

1

Venue deposits

  • Venue deposits USDC/LONG into Escrow.

  • Venue receives ERC1155 venue tokens representing the USD-denominated balance.

2

No promoter involvement

  • No customer payments involve promoters (e.g., direct payments or no promoter ecosystem adoption).

  • Customer payments do not specify a promoter, so payToVenue does not burn venue tokens to mint promoter tokens.

3

Funds become stuck

  • Venue tokens remain unburned.

  • There is no function allowing venue owners to burn venue tokens to redeem underlying funds from Escrow.

  • Deposited funds remain locked indefinitely.

Conditions for Issue

  • No promoter involvement in customer payments.

  • Venue wishes to exit/redeem deposits.

Impact Details

triangle-exclamation

References

  • Vulnerable code location: https://github.com/immunefi-team/audit-comp-belong/blob/main/contracts/v2/platform/BelongCheckIn.sol#L379

Proof of Concept

Copy the code below to file.test.ts in test/v2/platform and run:

yarn test test/v2/platform/file.test.ts

Observed output when running test:

Before Venue Payment BigNumber { value: "0" } After Venue Payment BigNumber { value: "100000000" } ✔ Funds Stuck (1514ms)

Was this helpful?