Treasure exploit 분석
2022. 8. 29. 18:36
Security/Smart Contract
2022년 3월 Treasure라는 NFT 거래 플랫폼이 공격받았습니다. 해당 취약점에 대해서 알아보겠습니다. 해당 프로젝트는 Arbitrum 체인 상에서 동작하며 실제 공격이 이뤄진 트랜잭션은 아래와 같습니다. https://arbiscan.io/tx/0x82a5ff772c186fb3f62bf9a8461aeadd8ea0904025c3330a4d247822ff34bc02 Arbitrum Transaction Hash (Txhash) Details | Arbiscan Arbitrum (ETH) detailed transaction info for txhash 0x82a5ff772c186fb3f62bf9a8461aeadd8ea0904025c3330a4d247822ff34bc02. The transaction..
Multichain exploit 분석
2022. 8. 29. 14:44
Security/Smart Contract
2022년 1월 발생한 Multichain exploit분석자료입니다. 해당 사건에 대한 post mortem은 아래 링크에서 확인하실 수 있습니다. https://medium.com/multichainorg/multichain-contract-vulnerability-post-mortem-d37bfab237c8 Multichain Contract Vulnerability Post Mortem On January 10, 2022, we were alerted to two critical vulnerabilities with the Multichain liquidity pool contract and router contract by… medium.com https://etherscan.io/tx/0xe5..
[Unhacked CTF] reaper write-up
2022. 8. 26. 17:25
Security/Smart Contract
최근 Web 3.0의 워게임들이 많이 늘어나고 있는 추세입니다. 얼마전 열렸던 paradigm CTF과 같이 Web 3.0 환경을 대상으로만 하는 대회도 점차 늘고 있습니다. 이번 주에 처음으로 공개된 Unhacked CTF의 문제를 함께 풀어보겠습니다. Unhacked CTF unhacked CTF는 매주 문제가 공개되는 CTF로 일반적인 CTF형식은 아니며 일종의 워게임의 형식을 띄고 있습니다. 실제 리얼월드에서 exploit 되었던 프로젝트의 코드를 제공하며 해당 코드를 분석해보고 실제 포크된 환경에서 exploit을 진행해보는 식으로 문제를 풀이하게 됩니다. 이번주에 첫 문제가 공개되었고 해당 문제의 링크를 통해 확인할 수 있습니다. 개인적으로 굉장히 흥미로운 형태의 CTF이며 과연 이런 퀄리티의..
[Smart Contract 취약점] 초기 진입자가 다른 유저의 자금 탈취가 가능한 경우
2022. 8. 2. 22:54
Security/Smart Contract
개요 꽤 잦은 빈도로 보이는 유형의 취약점이다. 주로 DEFI 프로젝트에서 발견되고 정확히 어떻게 피해가 발생되고 원인은 무엇인지 알고 테스트를 통해 실제 공격은 어떻게 이루어지는지 알아보고자 한다. 문제의 식 여러 DEFI 프로젝트를 보다보니 staking 토큰을 분배하는 식이 아래와 같이 설정되어있는 경우가 많았다. DEFI의 LP 토큰을 분배하는 데에도 사용된다. (Uniswap v1에서 사용되었다.) 앞전에 분석했던 인절미의 경우도 해당 식을 사용하고 있다. 해당 식을 분석해보자. PENG 토큰이 있고 해당 토큰을 스테이킹하면 그 지분을 증명하는 뜻으로 sPENG이 발행된다고 가정해보자. 그렇다면 PENG 토큰을 스테이킹 했을 때 받을 수 있는 sPENG의 계산은 이렇다. 스테이킹 할 PENG 수..
Ethernaut 정리
2022. 6. 3. 21:23
Security/Smart Contract
CoinFlip 완전한 랜덤을 구하는 법은 없으며 직접 구현하려 하지 말고 널리사용되고 있는 랜덤 생성 방법을 사용할 것. Telephone tx.origin은 트랜젝션을 시작한 사람의 주소가 담겨있음. msg.sender에는 함수를 call 한 주소가 담겨있음. function transfer(address _to, uint _value) { tokens[tx.origin] -= _value; tokens[_to] += _value; } 이런식으로 transfer를 구현하는 경우 피싱 컨트랙트를 만들 수 있음. function () payable { token.transfer(attackerAddress, 10000); } 이런 형태의 피싱 컨트랙트를 공격자가 만들고 해당 컨트랙트로 입금을 하도록 유도..