NextGen - vangrim's results

Advanced smart contracts for launching generative art projects on Ethereum.

General Information

Platform: Code4rena

Start Date: 30/10/2023

Pot Size: $49,250 USDC

Total HM: 14

Participants: 243

Period: 14 days

Judge: 0xsomeone

Id: 302

League: ETH

NextGen

Findings Distribution

Researcher Performance

Rank: 229/243

Findings: 1

Award: $0.00

🌟 Selected for report: 0

🚀 Solo Findings: 0

Findings Information

🌟 Selected for report: smiling_heretic

Also found by: 00decree, 00xSEV, 0x180db, 0x3b, 0x656c68616a, 0xAadi, 0xAleko, 0xAsen, 0xDetermination, 0xJuda, 0xMAKEOUTHILL, 0xMango, 0xMosh, 0xSwahili, 0x_6a70, 0xarno, 0xgrbr, 0xpiken, 0xsagetony, 3th, 8olidity, ABA, AerialRaider, Al-Qa-qa, Arabadzhiev, AvantGard, CaeraDenoir, ChrisTina, DanielArmstrong, DarkTower, DeFiHackLabs, Deft_TT, Delvir0, Draiakoo, Eigenvectors, Fulum, Greed, HChang26, Haipls, Hama, Inference, Jiamin, JohnnyTime, Jorgect, Juntao, Kaysoft, Kose, Kow, Krace, MaNcHaSsS, Madalad, MrPotatoMagic, Neon2835, NoamYakov, Norah, Oxsadeeq, PENGUN, REKCAH, Ruhum, Shubham, Silvermist, Soul22, SovaSlava, SpicyMeatball, Talfao, TermoHash, The_Kakers, Toshii, TuringConsulting, Udsen, VAD37, Vagner, Zac, Zach_166, ZdravkoHr, _eperezok, ak1, aldarion, alexfilippov314, alexxander, amaechieth, aslanbek, ast3ros, audityourcontracts, ayden, bdmcbri, bird-flu, blutorque, bronze_pickaxe, btk, c0pp3rscr3w3r, c3phas, cartlex_, cccz, ciphermarco, circlelooper, crunch, cryptothemex, cu5t0mpeo, darksnow, degensec, dethera, devival, dimulski, droptpackets, epistkr, evmboi32, fibonacci, gumgumzum, immeas, innertia, inzinko, jasonxiale, joesan, ke1caM, kimchi, lanrebayode77, lsaudit, mahyar, max10afternoon, merlin, mrudenko, nuthan2x, oakcobalt, openwide, orion, phoenixV110, pontifex, r0ck3tz, rotcivegaf, rvierdiiev, seeques, shenwilly, sl1, slvDev, t0x1c, tallo, tnquanghuy0512, tpiliposian, trachev, twcctop, vangrim, volodya, xAriextz, xeros, xuwinnie, y4y, yobiz, zhaojie

Awards

0 USDC - $0.00

Labels

bug
3 (High Risk)
partial-50
duplicate-1323

External Links

Lines of code

https://github.com/code-423n4/2023-10-nextgen/blob/8b518196629faa37eae39736837b24926fd3c07c/hardhat/smart-contracts/AuctionDemo.sol#L105 https://github.com/code-423n4/2023-10-nextgen/blob/8b518196629faa37eae39736837b24926fd3c07c/hardhat/smart-contracts/AuctionDemo.sol#L125

Vulnerability details

Impact

The vulnerability arises due to a timing issue where block.timestamp is used as a condition to gate both the claimAuction and cancelBid functions. Specifically, when block.timestamp is equal to minter.getAuctionEndTime(_tokenId), a user can invoke both functions in the same transaction block. This is because the conditional check uses <= instead of <. Consequently, a malicious actor could claim the auctioned token with claimAuction and then invalidate their bid by calling cancelBid, retrieving their bid amount and effectively receiving the token without payment.

Proof of Concept

The attack can be executed as follows:

  1. Ensure you are the highest bidder in the auction.
  2. Monitor the block time closely. When block.timestamp is exactly equal to minter.getAuctionEndTime(_tokenId), execute claimAuction.
  3. In the same transaction block, call cancelBid. Due to the condition block.timestamp <= minter.getAuctionEndTime(_tokenId), this will succeed.
  4. Retrieve the bid amount, thus obtaining the token at no cost.

Tools Used

Manual Review.

Recommended Mitigation Steps

  • Adjust the conditional checks to ensure that cancelBid cannot be called in the same block as claimAuction. This can be achieved by using a strict inequality (<) in cancelBid.
  • Set auctionClaimed to true when claimAuction is successfully called. This variable should then be checked in the cancelBid function to prevent bid cancellation after a claim (require(auctionClaim[_tokenid] = false)

Assessed type

Invalid Validation

#0 - c4-pre-sort

2023-11-14T09:57:22Z

141345 marked the issue as duplicate of #1904

#1 - c4-pre-sort

2023-11-14T23:31:54Z

141345 marked the issue as duplicate of #962

#2 - c4-judge

2023-12-04T21:42:34Z

alex-ppg marked the issue as duplicate of #1323

#3 - c4-judge

2023-12-08T17:40:35Z

alex-ppg marked the issue as partial-50

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter