DexLyn Disclosed Report

Missing Authorization in burn_rebase (Anyone Can Call)

Company
Created date
Nov 06 2025

Target

https://github.com/hackenproof-public/tokenomics_contract

Vulnerability Details

Location: tokenomics_contract/sources/fee_distributor.move Description

burn_rebase is documented “Only a voter can call,” but it never asserts the caller is a voter. It calls voting_escrow::is_voter(voter_address); and discards the result.

Impact

Unauthorized mint-in of DXLYN to the distributor contract by any friend module path that can call burn_rebase (it’s public fun, not entry), spoofing a “voter-origin” rebase event.

Event stream (RebaseAddedEvent) becomes untrustworthy; accounting expectations that rely on “only voters add rebases” are broken.

Validation steps

Proof of Concept // From any friend that can import fee_distributor: fee_distributor::burn_rebase(&any_signer, &sender, 1_000);

Succeeds even if any_signer is not a voter.

Proof of Code

burn_rebase (friend function): calls voting_escrow::is_voter(voter_address); but no assert!(...).

Mitigation

Enforce the check:

let voter_address = address_of(voter);
assert!(is_voter(voter_address), ERROR_NOT_ALLOWED);

(And consider making it entry if you truly want on-chain auth via a signer.)

Attachments

hidden
CommentsReport History
Comments on this report are hidden
Details
Statedisclosed
Severity
Medium
Bounty$60
Visibilitypartially
VulnerabilityInsecure Authorization
Participants (3)
company admin
author