후루콤보(Furucombo) - REKT



스윙하고 실수하는 것보다 차라리 기다리는 것이 더 낫습니다.

저희는 후루콤보(Furucombo)에 대한 소식을 들었지만, 일손이 부족했습니다 - 특히나 해커들이 주말에 일할 때는 작은 팀으로써 항상 제시간에 따라잡기가 어렵습니다. 만약 당신이 재능을 나눌 수 있는 DeFi 탐정이라면, 저희에게 연락해주셔서 기존의 경험들을 공유해주시기를 부탁드립니다 - rekt.news에 함께할 자리가 있을지도 모릅니다.

해커는 카운터 펀치로 반격하여 후루콤보(Furucombo)를 무너뜨리고 "무한 승인"을 허가해준 여러 지갑에서 1400만 달러를 훔쳐갔습니다.

무한 승인이란 곧 무한 신뢰를 의미합니다 - 우리가 DeFi에서 하지 말아야 하는 것으로 알고 있는 그것 말입니다.

“신뢰하지 말고, 승인하세요”, 하지만 누가 전송할 때마다 승인을 위해서 시간과 가스비를 지불하고 싶을까요?

사람들은 후루콤보(Furucombo)에게 승인 일부분을 일임했으나, 아마도 너무 많은 부분을 일임하였고, 이번 사건에서 혹독한 교훈을 얻었습니다.

“악마 컨트랙트” 해킹이라고 알려진 이 해킹은, 해커가 후루콤보(Furucombo) 프록시 컨트랙트에게 Aave V2가 새로운 기능(implementation)을 도입했다고 믿게 했습니다.

새로운 기능은 당연히 악의적인 것이었고, 유저들이 후루콤보(Furucombo) 컨트랙트에 그들의 토큰을 후루콤보(Furucombo)가 원하는 대로 사용할 수 있도록 승인한 상황에서, 승인된 모든 토큰을 해커 소유의 주소로 마음대로 전송할 수 있었습니다.

Kurt Barry님이 분석을 제공해주셨습니다:

자산을 훔치기 위한 트랜잭션중 하나는 후루콤보(Furucombo) 프록시로 보내졌고, AAVE v2 대출 풀 proxy 를 처음이자 유일한 액션을 취할 수 있는 "핸들러"로 설정했습니다.

ethtx.info에서 아래와 같이 실행된 흔적을 확인해볼 수 있습니다. 괄호 안의 delegatecall들을 주목하세요.

핸들러들은 레지스트리 안에서 허가받아야 합니다; 트랜잭션이 발생했을 때(현재는 아니지만), 이 프록시는 유효한 핸들러였습니다.

FC 프록시는 AAVE v2 프록시에 delegatecall을 호출하였고, 이는 특별 스토리지 슬롯에 새로 추가된 기능의 주소를 받아왔습니다. 하지만 delegatecall 이었기 때문에, FC 프록시의 스토리지에서 주소를 받아왔고, 받아온 이 주소는 해커의 악성 컨트랙트였습니다.

해커의 이전 트랜잭션 을 보면:

해커는 FC 프록시가 AAVE v2 프록시에게 delegatecall을 호출하는 악성 컨트랙트를 사용하여, 초기화 기능을 실행시켜 기능 슬롯을 새로 세팅하게 만들었음을 볼 수 있습니다.

FC 프록시에서 해킹 코드의 delegatecall이 호출된 시점에서 이미 끝난 게임이었습니다. 피해자들은 FC 프록시가 그들의 stETH를 이동할 수 있는 승인을 해둔 상태였고, 해커의 코드는 이들 전부를 해커 자신의 주소로 전송하도록 만들었습니다.

그리고 이를 계속 반복했습니다.

요약:

  • FC 프록시가 신뢰받는 핸들러에게 호출자-특정된 delegatecall을 호출하여, 스토리지를 수정할 수 있게 합니다.
  • 핸들러는 스토리지의 주소들을 알려주는 호출자-특정된 delegatecall을 호출합니다.
  • 핸들러는 해당 주소를 새롭게 세팅할 수 있도록 합니다.

여기서 배워야 할 점:

  • "신뢰받는 목록" 은 유용하지만 보안을 보장해주는 것은 아님
  • 개발자들은 delegatecall을 호출하는 개체의 기능이 호출자의 스토리지에 어떤 영향을 미칠 수 있는지에 대해 오딧(audit)을 받아야 함
  • 호출자의 기능이나 파라미터를 제한하는 것을 고려해야 함
  • 유저가 제공하는 인풋을 경계해야 함

도난당한 것은 개인뿐만이 아니었습니다, 심지어 Cream Finance도 손실을 보았는데, 이는 해커가 그들의 금고에서 직접 "빌렸기" 때문입니다.

Igor Igamberdiev는 도난당한 자산들의 리스트를 공개했습니다.

  • 3,9k stETH
  • 2.4M USDC
  • 649k USDT
  • 257k DAI
  • 26 aWBTC
  • 270 aWETH
  • 296 aETH
  • 2.3k aAAVE
  • 4 WBTC
  • 90k CRV
  • 43k LINK
  • 7.3k cETH
  • 17.2M cUSDC
  • 69 cWBTC
  • 142.2M BAO
  • 38.6k PERP
  • 30.4k COMBO
  • 75k PAID
  • 225k UNIDX
  • 342 GRO
  • 19k NDX

우리는 가장 크게 손해를 입은 DeFi의 열성적인 지지자인 Limzero (@pleyuh)와 대화를 나눠볼 수 있었습니다.

rekt:

이번 사건이 당신에게 어떤 영향을 미쳤나요?

후루콤보(Furucombo)가 공격당했다는 사실을 어떻게 인지했고, 어떻게 대응하셨나요?

Limzero:

저는 친구들과 집에서 놀고 있었습니다. 핸드폰에서 TG를 열어서 뭔가 새로운 게 없나 하고 보던 중 Darren의 "The daily ape" 채널에서 후루콤보(Furucombo)와 관련된 해킹이 있었다는 사실을 알았습니다.

저는 후루콤보(Furucombo)에서 사용하였던 제 주소를 체크했고, aAAVE 전체와 aETH 일부가 전송된 것을 발견했습니다.

저는 대출을 받고 있었고, 제 예금이 청산 당했을까 봐 두려워졌습니다. 자산 안정도(health factor)가 1.15까지 떨어진 것을 확인한 직후, 대출금을 먼저 갚았습니다.

제가 발견한 것은, 보유하고 있던 모든 aAAVE는 훔쳐갔는데 aETH는 1/3만 가져갔다는 것이었습니다. 아마 자산안정도가 낮아져서 더 많은 자산을 출금하는 데에 제동이 걸려서 그랬지 않았나 생각합니다. 대출을 받고 있어서 운이 좋았네요.

예금을 지키기 위해 대출금을 갚은 이후에, 저는 해당 주소의 모든 토큰 허가사항을 철회했습니다.

사실 그전부터 모든 허가사항의 철회를 위해(수수료가 낮아질 때까지) 몇 주 동안 기다리고 있었습니다. 하지만 이것은 값비싼 기다림이었습니다.

제 자산이 해킹이 발생한 시점에서 90분 이후에 전송되었다는 것을 확인하였기 때문입니다.

rekt:

당신에게 큰 손해였나요?

심리적으로 어떠셨나요, 해킹을 당한 이후에 DeFi를 사용하는 것을 더 조심해야겠다거나 사용하는 데 있어서 자신감이 줄어들었다고 느끼시나요?

Limzero:

액수 자체는 컸지만, 제 포트폴리오가 망가질 정도는 아니었습니다.

처음 몇 분 동안에는 저의 모든 a토큰들이 청산되어 사라지지 않았을까 무서웠지만, 자산 안정도(health factor)가 1.1 이상인 것을 보고 안도했습니다.

저는 이번 사건을 보안에 대한 값비싼 수업료를 냈다고 생각합니다- 많은 자산이 있는 주소에 무한한 승인을 내어준 것은 제 잘못이었습니다. 모든 상황을 고려했다고 생각했지만, 그것은 제가 지불해야 할 유인원 세금(ape tax)이었습니다. 이번 사건은 이 업계에서 수년간 있으면서 제가 직접 겪은 최초의 스마트 컨트랙트 관련 해킹입니다. 더 심각한 상황에 놓이지 않았다는 것이 행운이라고 느껴지네요.

사실 COVER 해킹 다음의 첫 해킹이었네요. 완전히 잊고 있었습니다 :p

DeFi를 사용하는 데 있어서 자신감이 줄어들었다고 느끼지는 않습니다. 이러한 위험성은 이미 알고 있었죠.

이번 사건 이후로 사이버 보안성을 높이는 조처를 하게 된 정도입니다.

rekt:

어떤 조처를 하셨는지 알려주실 수 있을까요?

Limzero:

말씀드리지 않는 것이 낫겠습니다. 죄송해요.

이것이 조처의 일부분입니다 😋

rekt:

저희 독자들이 보안을 강화하기 위해서 제안해주실만한 방법들이 있을까요?

Limzero:

  1. 하드웨어 지갑을 사용하세요
  2. 윈도우즈를 사용하지 마세요
  3. 컨트랙트 상호작용을 위해서 web 3 dedicated machine 을 사용하세요
  4. 특별한 비밀번호나 비밀번호 매니저를 사용하세요 + VPN
  5. 소셜 미디어 프로필을 최소한으로 사용하세요
  6. 리스크를 줄이기 위해 여러 주소를 사용하세요
  7. 새로운 농장에는 새로운 주소를 사용하세요
  8. 자주 사용하는 주소의 승인들을 철회하세요

저는 보안 전문가가 아닙니다. 이 기준 가이드라인은 암호화폐 업계에서 유명한 분들이 제안한 것입니다.

  1. REKT를 읽어보세요 xD

rekt: 마지막으로 저희 독자들에게 전달하고 싶으신 메시지가 있을까요?

Limzero:

"다시는 저를 해킹하지 말아 주세요"

또한, 아무리 당신의 보안상태에 자신이 있더라도 개인 지갑이 해킹을 당했을 때를 대비해서 자산 일부는 탑티어 중앙화 거래소인 Kraken, Coinbase, Gemini, Binance에 넣어둘 것을 권장합니다.

제가 드리고 싶은 말씀은 이게 전부예요.

rekt:

저희와 대화를 나눠주셔서 감사합니다.

Limzero:

감사합니다. 우리가 얘기할 일이 다시 없었으면 좋겠네요 ㅋㅋ


간단하게 막을 수 있던 간단한 공격 - 무한한 신뢰가 없는 이상 "무한 승인"은 사용하지 마세요. 개별 승인 비용이 적지는 않지만, 보안을 위해서 돈을 아끼지 마세요.

[Debank]나(https://debank.com/) Etherscan과 같은 사이트는 당신 지갑의 허가사항들을 모니터링하고 철회할 수 있도록 합니다. Limzero님이 말씀해주셨듯이, 이는 내일로 미룰 수 있는 일이 아닙니다.

절대로 가드를 내리지 마세요, 해커들은 언제나 뚫린 곳을 찾고 있고, 해커들의 공격은 예상하는 것보다 훨씬 더 자주 발생합니다.

이 링 안에는 심판이 존재하지 않습니다; 당신은 당신의 안전을 스스로 책임져야 하지만, 로프를 한번 배우고 나면, 리스크를 감수할만한 상금을 얻을 수 있습니다.

추가: 2021년 7월 18일:

Haechi님이 다음의 내용으로 저희에게 연락을 주셨습니다:

그들의 컨트랙트(proxy)가 오딧(audit)의 범위 안에 있기는 했지만, 프록시에 문제를 발생시킨 이번 해킹은 오딧(audit)의 범위에 들어있지 않았습니다.

후루콤보(furucombo) 팀이 저희에게 제공한 것은 두 개의 컨트랙트였습니다; 후루콤보 프록시와 컴파운드 어댑터(compound adapter)가 그것들입니다. 후루콤보(furucombo) 팀이 제공한 시나리오는 컴파운드 어댑터(compound adapter)와 프록시를 사용하여 컴파운드 프로토콜(compound protocol)에 접근하는 것이었고, 그게 전부였습니다.

그러나, 이미 아시다시피 해킹은 AAVE를 사용한 시나리오에서 발생했습니다. 이런 종류의 해킹을 방어할 수 있는 기능을 그들이 이미 화이트리스트 처리를 해두었기 때문에 저희는 이러한 이슈를 미리 확인할 수 없었습니다.


기사 공유하기

REKT는 익명 작성자들에 의한 공공 플랫폼이며, REKT에 작성된 관점이나 내용에 대해서 그 어떤 책임도 지지 않습니다.

기부 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

disclaimer:

REKT는 당사 웹 사이트의 익명의 작성자 또는 REKT에 의해 게시되거나 관련된 서비스에서 게시되는 콘텐츠에 대해 어떠한 책임도 지지 않습니다. 당사는 익명 작성자들의 행동 및 게시물에 대한 규칙을 제공하지만, 익명의 작성자가 웹 사이트 또는 서비스에 게시, 전송 혹은 공유한 내용을 통제하거나 책임지지 않으며, 귀하가 웹 사이트 또는 서비스에서 직면할 수 있는 불쾌함, 부적절함, 음란함, 불법 또는 기타 해로운 콘텐츠에 대해서도 책임을 지지 않습니다. REKT는 당사 웹 사이트 또는 서비스 사용자의 온라인 또는 오프라인 행위에 대한 책임을 지지 않습니다.