Medium Findings


Allocation ID Collision Enables Beneficiary Hijacking

Severity: Medium

Ecosystem: Sui

Protocol: Magna Airlock

Auditor: Zellic

Report: https://github.com/Zellic/publications/blob/master/Magna Airlock - Zellic Audit Report.pdf

Report Date: Nov 2025

Description:

DistributionState is keyed only by allocation_id, not by the unique leaf content. If two merkle leaves share the same allocation_id, they share the same beneficiary. The first withdrawal for a given allocation_id permanently locks the beneficiary address, and subsequent withdrawals with different leaves but the same ID will use that locked beneficiary. If two users have different leaves but both have an allocation_id == 999, whoever withdraws first becomes the beneficiary for both allocations.