Smart Contract 취약점 [7] Front-Running

Front-Running

불리는 다른 형태

  • time-of-check vs time-of-use (TOCTOU)
  • race condition
  • transaction ordering dependence (TOD)

 

Front-Running의 핵심은, 모든 transaction이 공개된다는 점이다.

예를 들어, Puzzle 문제가 제시되고 해답을 Contract에 보내는 상황이 있다고 할 때, 다른 사람이 보낸 transaction에서 답을 가져와서, 문제를 해결하는 것이 가능하다는 점이다.

 

예시

  1. Smart Contract에서 RSA number N(= prime1 * prime2)를 생성
  2. submitSolution() 함수는 prime1 & prime2를 구한 후, 답을 제출하는 과정
  3. Alice가 Facorization에 성공하여 submitSolution 호출
  4. BoB이 해당 Transaction을 보고 답을 얻은 다음, 더 높은 gas를 이용하여 submit
  5. gas가 높으면, transaction이 빠르게 받아들여지기 때문에 BoB의 submit이 먼저 제출되어 승리하게 된다.

해당 예시는, transaction의 내용은 공개된다는 점, 그리고 transaction이 받아들여질 때 까지는 충분한 시간이 필요하다는 점, 마지막으로 gas를 많이 이용하면 우선순위가 높아진다는 점을 이용한 공격이라고 볼 수 있다.

 

참고

https://dasp.co/#item-7

  Comments,     Trackbacks