Function Affected: setPerpVault
Issue Type: Access Control Misconfiguration
Description:
The function uses tx.origin to verify if the caller is the owner, which fails when the owner is a contract (GmxProxy.sol).
The check require(tx.origin == owner(), "not owner"); results in function inaccessibility because tx.origin will always be an external account (EOA) that initiated the transaction, not the contract GmxProxy.sol.
The setPerpVault function is rendered unusable in its current state since the access check will always fail for GmxProxy.sol.
Direct inspection of the Solidity code.
Change the ownership verification from tx.origin to msg.sender:
Lightchaser: Medium-5
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.