2022. 4. 4. 23:01, Blockchain
Front-Running
불리는 다른 형태
- time-of-check vs time-of-use (TOCTOU)
- race condition
- transaction ordering dependence (TOD)
Front-Running의 핵심은, 모든 transaction이 공개된다는 점이다.
예를 들어, Puzzle 문제가 제시되고 해답을 Contract에 보내는 상황이 있다고 할 때, 다른 사람이 보낸 transaction에서 답을 가져와서, 문제를 해결하는 것이 가능하다는 점이다.
예시
- Smart Contract에서 RSA number N(= prime1 * prime2)를 생성
- submitSolution() 함수는 prime1 & prime2를 구한 후, 답을 제출하는 과정
- Alice가 Facorization에 성공하여 submitSolution 호출
- BoB이 해당 Transaction을 보고 답을 얻은 다음, 더 높은 gas를 이용하여 submit
- gas가 높으면, transaction이 빠르게 받아들여지기 때문에 BoB의 submit이 먼저 제출되어 승리하게 된다.
해당 예시는, transaction의 내용은 공개된다는 점, 그리고 transaction이 받아들여질 때 까지는 충분한 시간이 필요하다는 점, 마지막으로 gas를 많이 이용하면 우선순위가 높아진다는 점을 이용한 공격이라고 볼 수 있다.
참고
'Blockchain' 카테고리의 다른 글
Smart Contract 취약점 [9] Short Address Attack (0) | 2022.04.05 |
---|---|
Smart Contract 취약점 [8] Time manipulation (0) | 2022.04.04 |
Smart Contract 취약점 [6] Bad Randomness (0) | 2022.04.04 |
Smart Contract 취약점 [5] Denial of Service (0) | 2022.04.04 |
Smart Contract 취약점 [4] Unchecked Return Values For Low Level Calls (0) | 2022.03.29 |
Comments, Trackbacks