피드로 돌아가기
Dev.toSecurity
원문 읽기
Integer Division Rounding Error를 통한 Protocol Fee 0원 최적화 취약점 분석
How 1,000 Wei Can Drain Protocol Fees: A Deep Dive into CoW Protocol Rounding Errors
AI 요약
Context
CoW Protocol(GPv2Settlement) 내 partiallyFillable 주문의 분할 체결 시 비례 수수료를 계산하는 로직 설계. Solidity의 Floating-point 미지원으로 인한 Integer Division의 내림(Round-down) 특성이 누적 수수료 누수(Fee Leakage)의 근본 원인으로 작용.
Technical Solution
- 분할 체결 시
(feeAmount * executedAmount) / sellAmount공식을 통한 비례 수수료 산정 방식 채택 - 분자 값인
feeAmount * executedAmount가 분모sellAmount보다 작을 때 결과값이 0으로 수렴하는 특성 이용 - 악의적 Solver가 주문을 수천 개의 Dust Transaction으로 쪼개어 전송함으로써 개별 거래당 수수료를 0으로 유도하는 Attack Vector 식별
- 최소 수수료(Minimum Fee) 강제 적용 또는
fixedPoint.mulDivUp라이브러리 도입을 통한 올림(Round-up) 메커니즘으로의 로직 변경 제안 - 비제로(Non-zero) 체결 시 최소 1 unit의 수수료 징수를 보장하는 검증 단계 추가 설계
실천 포인트
1. DeFi 스마트 컨트랙트 내 나눗셈 연산 시 정수 내림으로 인한 경제적 손실 가능성 검토
2. 소액 거래(Dust Trade)의 반복 발생 시 누적되는 Precision Loss가 시스템 전체 수익에 미치는 영향 분석
3. 수수료 및 정산 로직 설계 시 `mulDivUp` 등 Round-up 함수를 사용하여 프로토콜 수익 보존
4. 비즈니스 로직상 최소 징수 금액(Minimum Threshold) 설정 여부 확인