피드로 돌아가기
Bypassing Attestation Logic in Cairo: A Starknet Security Case Study
Dev.toDev.to
Security

Bypassing Attestation Logic in Cairo: A Starknet Security Case Study

Starknet 스테이킹 프로토콜의 Attestation.cairo에서 get_block_hash_syscall 검증 로직 우회로 담보금 없이 STRK 보상 탈취 가능

rim dinov2026년 3월 24일6advanced

Context

Starknet 스테이킹 프로토콜의 Attestation.cairo는 오프체인 검증을 위해 블록 해시 syscall에 의존하고 있다. 블록 번호 조작이나 stale 해시 제공을 통해 암호학적 검증 없이 assert 조건을 우회할 수 있는 논리 결함이 존재한다.

Technical Solution

  • get_block_hash_syscall(target_block_number)의 반환값을 제공된 proof 앵커와 비교하는 단순 assert 검증 방식을 사용 중
  • 공격자가 target_block_number를 조작하거나 유효한 stale 블록 해시를 제공하여 assert 조건 만족 가능
  • 의도된 블록 상태와 분리 불가능한 암호학적 증명이 없어 블록 참조 재사용 또는 스푸핑 방지 불가
  • PoC는 snforge 테스트 스위트로 동작 입증

Impact

공격자가 필수 BTC 담보금 없이 보상 청구 가능으로 정직한 스테이커의 인센티브가 희석됨

Key Takeaway

Starknet 기반 아테스테이션 로직 구현 시 블록 해시 검증만으로는 부족하며, 암호학적 증명을 의도된 블록 상태와 긴밀히 결합하여 재사용 공격(replay attack)을 원천 차단해야 한다.


Starknet 스마트 컨트랙트 개발자는 syscall로 획득한 외부 데이터(블록 해시 등)를 단순 assert로만 검증하지 말고, 타임스탬프·nonce·서명 등 컨텍스트 특화 정보를 함께 검증하여 같은 데이터의 다중 사용 시나리오를 차단해야 한다.

원문 읽기