https://hacken.io/discover/front-running/
This vulnerability is not a result of faulty programming but rather exploits the way transactions are sequenced and added into a block from the 'mempool.' It relies on the lack of transaction confidentiality and the miner's ability to randomly order and prioritize transactions. An attacker can watch the transaction pool and send a transaction, have it included in a block before the original transaction. This mechanism can be abused in stealing requests, price manipulation, and transaction blocking.
Displacement Approach in Front-running Attacks
Imagine there's a highly anticipated event with limited ticket availability, and tickets are sold through a decentralized ticketing platform on the blockchain. Users can submit transactions to purchase tickets, but due to the high demand, there's a risk of front-running attacks.
User A's Purchase Attempt: User A decides to purchase tickets for the event and submits a transaction to the ticketing smart contract. However, before their transaction is confirmed, an attacker observes their transaction pending in the mempool (waiting area for unconfirmed transactions).
Attacker's Displacement: The attacker quickly creates and broadcasts a new transaction with a higher gas fee to purchase the same tickets before User A's transaction gets confirmed. By doing so, the attacker displaces User A's transaction from being included in the next block.
Purchase by Attacker: Miners prioritize the attacker's transaction due to the higher gas fee, allowing them to successfully purchase the desired tickets before User A's transaction is processed.
Outcome for User A: Since User A's transaction was displaced by the attacker's transaction, their attempt to purchase tickets fails. Even if User A had submitted their transaction earlier, the attacker's manipulation of gas fees effectively bypasses the fairness of the transaction order.
Suppression Approach in Front-running Attacks
In suppression attacks, attackers exploit the congestion of the blockchain network by flooding it with a large number of transactions, all with significantly higher gas prices. This flood of transactions forms what is known as a "suppression cluster." The aim of this tactic is to overwhelm the network with high-priority transactions, effectively suppressing the victim's transaction.
Here's how it works:
Volume of Transactions: Attackers create a barrage of transactions, flooding the network with a large volume of transactions.
Higher Gas Prices: Each transaction in the suppression cluster includes a significantly higher gas price compared to normal transactions.
Blocking Victim's Transaction: Due to the overwhelming number of high-priority transactions in the suppression cluster, the victim's transaction struggles to find space in the same block. Miners prioritize transactions with higher gas prices, so the victim's transaction may be delayed or pushed out of the current block altogether.
Insertion Approach in Front-running Attacks
In insertion attacks, attackers employ a more sophisticated tactic similar to a sandwich attack, involving front-running and back-running of a victim's transaction.
Here's how it's executed:
Front-Running and Back-Running: The attacker strategically places the victim's transaction in between two of their own transactions.
Sandwich Formation: The first transaction placed by the attacker has a higher gas price, and the second transaction has a lower gas price, effectively forming a "sandwich" around the victim's transaction.
Exploiting Decentralized Exchanges: This tactic is commonly observed in decentralized exchanges (DEXs), especially during large-scale trades known as "whale transactions."
Deriving Profits: By front-running the victim's transaction with a higher-priced transaction and back-running it with a lower-priced transaction, the attacker can potentially profit from price discrepancies or manipulate the order of execution to their advantage.
How to Mitigate Front-Running Attacks
Using a commit-reveal scheme:
A commit-reveal scheme enhances transaction security by concealing sensitive information, such as bids or trades, until a predetermined reveal phase, thereby thwarting front-runners from exploiting publicly available data. This scheme enables users to privately commit to a value, maintaining its confidentiality until later disclosure. Values submitted during the commit phase remain immutable, ensuring their integrity. During the reveal phase, users disclose and authenticate the chosen value.
Transaction Reordering: To mitigate the effects of transaction order manipulation, design smart contracts with mechanisms that minimize their impact. Implement strategies like batch processing and randomization of procession to enhance resilience against such manipulation.
Link to the article
https://twitter.com/CharlesWangP/status/1779217058695205270