HE1M
50 posts


@0xTendency @HollaWaldfee100 @xiaoming9090 @WatchPug_ Try to explain the codebase for a person who doesn’t know anything about programming, then you will find out something in the middle of discussion that you were not looking at before. It helps to see the codebase from different points of view.
English

How do you handle a situation where you've been auditing a codebase for an extended period, but can't seem to be able to spot any issues?
Tag your favourite researchers 👀👀
@HollaWaldfee100
@xiaoming9090
@0xHE1M
@WatchPug_
English

@0xHE1M Thanks for the inspiration of this example.
I successfully constructed the early return constructor contract with immutable variables by referring to this trick of yours. (*^▽^*)
github.com/source-code-sc…
English

In continuation of Immutables story:
They can be initialized more than once or left uninitialized if using the modifier in constructor.
In other words, by using modifiers we can run the function (to which the modifier is applied) more than once or even skip it.
@solidity_lang
English
HE1M retweetledi

I submitted a critical theft of NFTs to a protocol a couple weeks ago. A user can steal an NFT that they had previously deposited that is later deposited by another user.
1) attacker deposits NFT into protocol
2) attacker approves himself as an operator
3) attacker withdraws and sells the NFT
4) new NFT owner deposits
5) attacker can steal
Sadly, this was downgraded to high because of the conditionality and that no NFTs were currently at risk of theft. Even sadder, the project only offers rewards for critical severity bugs 😖
Immunefi mediated and confirmed that the project took the correct action. I understand the viewpoint and respect immunefi’s mediation, but have been asking myself:
Should I have deposited an NFT myself and then withdraw and transfer to create a valid theft scenario?? I’d like to not have to do this but it seems like some projects only care if currently exploitable funds exist. What do you think?
English

Attack scenario:
- The whitehat reports the finding.
- The project is unresponsive.
- @immunefi removes it from the platform.
The project is the winner, and the whitehat is the loser!!!
usmann@usmannk
Remember that projects can simply not pay, whitehat. Should I drop the writeup?
English
HE1M retweetledi
HE1M retweetledi

Another way to keep the IMMUTABLEs uninitialized is to initialize them in a failing "try { }" block
In this example the "try" call always fails leaving the immutable var to be uninitialized (set as 0)

HE1M@0xHE1M
Did you know that IMMUTABLE variables can be initialized **more than once** or even left **uninitialized** (assigning default value)?
English

@0xHE1M Hmmm, nice. Wondering whats the use case is 🤔 have you found this in any protocol's contract sir?
English

Thanks @code4rena
Great project @zksync
Code4rena@code4rena
Awards have been announced for the $180,500 USDC @zksync Era audit competition 🐺 Top 5: 🥇 ronnyx2017 - $71,748.21 USDC 🥈 HE1M - $27,100.66 USDC 🥉 @bin2chen - $10,743.03 USDC 🏅 @jeiwan7 - $8,774.78 USDC 🏅 @vinami - $8,354.38 USDC (1/2)
English










