피드로 돌아가기
Dev.toSecurity
원문 읽기
로직 설계 오류로 인한 자금 영구 손실, Legion Protocol 취약점 분석
Finding a Critical Logic Flaw in Legion Protocol’s Epoch Vesting
AI 요약
Context
Epoch 기반의 토큰 락업 해제(Vesting) 시스템 도입. 상태 변수에 의존하는 계산 로직으로 인해 자금 인출 불가 가능성 존재. 토큰 소수점 처리 미흡으로 인한 정밀도 손실 문제 발생.
Technical Solution
- 전역 상태 변수인 s_lastClaimedEpoch에 의존하는 Vesting 계산 방식의 위험성 식별
- 동일 Epoch 내 중복 호출 시 amountVested가 0으로 반환되는 로직 결함 분석
- 하드코딩된 1e18 분모 사용으로 인한 6자리 소수점 토큰(USDC, USDT)의 반올림 오차 확인
- Foundry 기반의 PoC 테스트 케이스 구축을 통한 자금 접근 불가 시나리오 증명
- block.timestamp와 총 할당량 기반의 순수 함수 형태 계산 방식으로 전환 권고
- ERC20(token).decimals() 메서드를 활용한 동적 정밀도 스케일링 적용 설계
Key Takeaway
스마트 컨트랙트 보안은 단순한 문법 오류 수정을 넘어 비즈니스 로직의 무결성을 검증하는 과정임. 상태 관리 설계 시 외부 입력이나 호출 횟수에 관계없이 일관된 결과가 보장되는 무상태(Stateless) 계산 구조 지향 필요.
실천 포인트
Vesting 컨트랙트 설계 시 상태 변수 대신 타임스탬프 기반의 절대값 계산 방식을 채택하고, 토큰별 decimals를 동적으로 처리할 것