A malicious user can spam list cheap assets at 0 cost to get all his listed assets bought and DoS other's listings
A seller can disrupt the round by listing low-cost assets (e.g., 10 wei), quickly reaching the maximum asset count and preventing other users from listing their assets. This tactic increases the likelihood that only the seller's assets will be bought during the round. Since the royalty fees round down to zero, the seller effectively pays nothing for fees. This process can be repeated every round, resulting in a Denial of Service (DoS) for other sellers, forcing buyers to purchase mostly the seller's assets. With a base mainnet transaction fee below 0.1 gwei, anyone can send a transaction with minimal gas fees (e.g., 100,000,000 wei) at a price of 1 gwei (1,000,000,000 wei). Each successful buy nets the attacker 10 wei, making continuous attacks like this profitable across rounds.
As seen in Swan.lis()
function there is no check to ensure the price of an asset is at least a minimum so seller can list asset at cheap prices or 0.
For PoC follow these instructions:
In Swan.test.ts
define a new const (our price for listing)
const WEIPRICE = parseEther("0.000000001");
then in describe("Sell phase #1: listing", () => {
change this it block it("should list 5 assets for the first round",
with the following:
run it using yarn test test/Swan.test.ts
we are only interesting in our test passing and printing the console.log output at the beginning
output:
0 fees effectively have been paid for listing.
warning: some test will fails especially in buy phase #1 because test are relied between them and our modification affects the rest of blocks
Only malicious users assets will be available to buy in all rounds.
DoS Other users from listing their assets by cloging the listing with maxAssets.
Manual review
Enforce a minimum fee for listing of assets so that fees won't round down to zero and to discourage cheap assets listing spam
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.