HackenProof

6.3K posts

HackenProof banner
HackenProof

HackenProof

@HackenProof

Expert web3 bug bounty and crowdsourced audit platform with 350 programs and over 22 million in bounty DS: https://t.co/yl9Srpv70J

Start bug bounty journey → Katılım Mayıs 2018
2.2K Takip Edilen38.1K Takipçiler
Sabitlenmiş Tweet
HackenProof
HackenProof@HackenProof·
Security is a public good — and now the community can help fund it. We’re proud that HackenProof is part of the Ethereum Security QF Round by @thedaofund, hosted on @Giveth — a 500 ETH matching pool supporting people and projects working to make Ethereum and its L2 ecosystem safer. Quadratic funding means it’s not only about how much is donated, but also how many people support a project. So even a $1 donation can help strengthen the signal behind HackenProof. By supporting HackenProof, you support bug bounty research, whitehat hackers, and continuous security work across Ethereum and L2s. Donate by May 14: qf.giveth.io/project/open-s… Repost to help more people support Ethereum security. #HackenProof #EthereumSecurity #BugBounty #QuadraticFunding #Web3Security
HackenProof tweet media
English
0
2
26
1.5K
HackenProof
HackenProof@HackenProof·
Do you specialize in one vuln class or hunt everything?
English
10
0
20
1.6K
HackenProof
HackenProof@HackenProof·
@LoganOpSec At some point the tab has to close and the hunt has to start 😄
English
1
0
1
17
Logan Sec
Logan Sec@LoganOpSec·
@HackenProof Studying is useful, but at some point you have to turn the writeup into a checklist and go break something. Reading how people found criticals ≠ building the instincts to find one yourself.
English
1
0
1
90
Sukhveer Warring
Sukhveer Warring@sswarring1313·
@HackenProof I deposited 11.15 USDC on Base network 24+ hours ago for a paid submission and still haven't received my coupon code. Transaction is confirmed on-chain. Support ticket-9080 has been open with zero response. This is unacceptable — please resolve immediately.
English
1
0
0
4
HackenProof
HackenProof@HackenProof·
@Web3__Youth Not quite - look closer at updateRoot and the transfer recipient
English
0
0
1
5
MyAI
MyAI@Web3__Youth·
@HackenProof two potential issues here, one with the balance check and another with the vesting period not being properly validated during the reward claiming process
English
1
0
1
104
HackenProof
HackenProof@HackenProof·
Spot the Bug 🧠 Merkle reward claiming Two bugs in this one. Can you find both?👇
HackenProof tweet media
English
23
6
75
5.7K
HackenProof
HackenProof@HackenProof·
@0xCanvie Fair point on the hints, but finding them yourself hits different
English
0
0
0
12
Canvie
Canvie@0xCanvie·
@HackenProof 1. We should transfer to account not msg.sender. 2. anyone can update root without access control. However, I think the biggest bug is that the bugs have already been marked in the diagram above.
English
1
0
1
23
Faiz.eth
Faiz.eth@rajafaaiz127·
@HackenProof Bug 1: only 2300 gas is forwarded when ee use transfer so if the caller contract requires more than 2300 gas, the transfer will revert, so funds will be stuck. Bug 2: Anyone can call updateRoot, invalidating leaf and will cause DOS
English
2
0
1
134
Oligarch°
Oligarch°@0xOligarch_·
@HackenProof 3 bugs actually -> The leaf is not double hashed it should be `byte32 leaf = keccak256(bytes.concat(keccak256(abi.encodePacked(proof, root, leaf))));` to prevent a pre image attack. -> should use `token.safeTransfar()` instead. -> no access control on the `updateRoot()` function.
English
1
0
2
111
Anya Skirko
Anya Skirko@u_feature·
@HackenProof Bug 2 is that transfer happens to the msg.sender instead of the account. The same sender can get proofs from valid trie and send as many as not claimed yet to get themselves the token. And the first one is as everyone said no access control/crypto verification to updateRoot.
English
1
0
4
245
0xBabsAudits
0xBabsAudits@BABS96711·
@HackenProof 1. Send the "amount" to "msg.sender" instead of "account". 2. Missing access control in upstateRoot function, anyone can call it and replace with malicious Root. That's all I can see.
English
1
0
3
75
Pauljindu
Pauljindu@Pauljindu19·
@HackenProof CRITICAL: updateRoot has no access control function updateRoot(bytes32 newRoot) external { // ← anyone can call this root = newRoot; } Recommendation; Inherit from Ownable and add onlyOwner, or remove the function entirely if the root is supposed to be immutable.
English
1
0
1
160
Demelew G
Demelew G@Demelew_W·
@HackenProof Bug 1- Anyone can steal others fund by just giving a valid account and amount the fund will be transferred to msg.sender not account Bug 2 the market root can be updated by anyone making the markelproof useless
English
1
0
1
134
Syed Ghufran Hassan
Syed Ghufran Hassan@SyedGhufranHas1·
@HackenProof There is no access control and the token transferred to msg sender instead of account address
English
1
0
1
99
0xshubhs.eth
0xshubhs.eth@shubhamtwtt·
@HackenProof @ziko29504803 Less randomness and access control in the updateroot some modifier will fox this one and using oracle for randomness will fix leaf calculation randomness
English
1
0
2
135
nooz
nooz@nooz0x·
Looks like a fun one 😄 First bug: updateRoot() is completely unrestricted — anyone can change the Merkle root and basically rewrite who’s eligible to claim. Second bug: the contract sends tokens to msg.sender instead of the account that was proven in the Merkle tree. So even if you prove someone else’s allocation, you can redirect the funds to yourself. Nice combo 🔥
English
1
0
3
212
Krasimir Raykov
Krasimir Raykov@raykov_krasimir·
@HackenProof missing authorization on root update you can drain the claim of any account that hasn’t claimed yet
English
1
0
1
49
Smart Contract
Smart Contract@0xSmartContract·
1️⃣ updateRoot() is public Anyone can change the Merkle root and upload a fake claim list. 2️⃣ Tokens go to msg.sender, not account An attacker can use someone else’s proof and receive the tokens themselves. 3️⃣ claimed[account] = true burns the real user’s claim The attacker steals the tokens and the legitimate user can no longer claim. 4️⃣ transfer() return value is not checked A failed transfer may still mark the user as claimed. 5️⃣ No SafeERC20 Non-standard ERC20 tokens can break the claim flow. 6️⃣ No round/epoch-based claim tracking Updating the root can break future distributions. 7️⃣ No events Claims and root updates are harder to monitor. 8️⃣ No zero-address checks in the constructor _token should not be address(0), and _root should not be bytes32(0).
English
2
0
10
891