codehawks-2023-07-codehawks-escrow-contract-l03

[L-03] Lack of proper event emission at resolveDispute function

보고서

Summary

이벤트에 찍는 데이터가 부실하다고 지적했다.

Keyword

lack of event info, event

Vulnerability

resolveDispute 이벤트로 Resolved를 이용한다. 이 이벤트는 충분히 많은 데이터를 포함하지 않았다. 단순히 구매자와 판매자만을 표시하고, 각자에게 얼마만큼 토큰이 이동했는지에 대한 정보는 없다. 또한 중재자에 대한 정보도 포함하지 않았다.

    event Resolved(address indexed buyer, address indexed seller);
 
    function resolveDispute(uint256 buyerAward) external onlyArbiter nonReentrant inState(State.Disputed) {
        ...
        emit Resolved(i_buyer, i_seller);
        ...
    }

Impact

이벤트에 중요한 데이터를 찍지 않으면 이벤트를 이용하는 프론트엔드나 오프체인 시스템에서 중요한 정보를 얻을 수 없다.

Mitigation

다음과 같이 이벤트에 정보를 늘린다.

event Resolved(
    address indexed buyer,
    address indexed seller,
    uint256 buyerAward,
    uint256 arbiterFee,
    uint256 amountPaidToBuyer
);

tags: bughunting, codehawks, smart contract, solidity, lack of event, solidity event, severity low