DeFi에서 배운 교훈, DeFi의 공격 논리 검토

拔丝地瓜
本文约3412字,阅读全文需要约14分钟
스마트 계약을 공격하여 자금을 훔치려는 점점 더 많은 사람들이 스마트 계약을 결합할 때 발생하는 취약점을 악용하고 있습니다.

편집자 주: 이 기사의 출처는크립토 밸리 라이브 (ID: cryptovalley), 저자: Mika Honkasalo, 번역: Liam, 승인을 받아 Odaily에서 복제.

요약

  • 스마트 계약을 공격하여 자금을 훔치려는 점점 더 많은 사람들이 스마트 계약을 결합할 때 발생하는 취약점을 악용하고 있습니다.

  • 편집자 주: 이 기사의 출처는

  • 크립토 밸리 라이브 (ID: cryptovalley)

크립토 밸리 라이브 (ID: cryptovalley)

, 저자: Mika Honkasalo, 번역: Liam, 승인을 받아 Odaily에서 복제.

요약

스마트 계약을 공격하여 자금을 훔치려는 점점 더 많은 사람들이 스마트 계약을 결합할 때 발생하는 취약점을 악용하고 있습니다.

2020년 DeFi 공격에서 사기 또는 절도의 총액은 미화 3,600만 달러에 달했습니다. 그러나 dForce 공격자가 도난당한 2,500만 달러를 환불했기 때문에 실제 금액은 대략 1,100만 달러였습니다.

이더리움 초창기에 비해 해킹당 손실된 평균 가치가 크게 떨어졌습니다. 2020년 10건의 공격 중 8건은 100만 달러 미만이었습니다.

전통적인 사이버 범죄와 비교할 때 스마트 계약에 대한 성공적인 공격은 즉각적인 금전적 보상으로 이어질 수 있기 때문에 블록체인에 대한 정보는 공격자에게 더 가치가 있습니다. 훔친 개인정보 등 전통적으로 해킹을 당한 정보는 팔아야 돈을 벌 수 있지만 스마트 컨트랙트는 자산을 직접 저장한다.

  1. 이더리움 초기에 대부분의 공격은 공격자에게 스마트 계약을 동결하거나 고갈시킬 수 있는 개별 취약점을 찾는 데 기반을 두었습니다. 2016년에 1억 6천만 달러의 ETH가 도난당하고 결국 이더리움이 포크된 악명 높은 DAO 해킹의 경우입니다. 마찬가지로 2017년 패리티 다중 서명 공격으로 인해 해커는 3천만 달러를 훔칠 수 있었고 1억 5천만 달러의 패리티 지갑이 동결되었습니다. 이 모든 것이 이러한 유형의 취약점의 결과입니다.

  2. 이러한 스마트 계약의 취약성은 여전히 ​​때때로 악용되고 있습니다. 최근 한 공격자가 토큰 계약에서 모든 VETH를 훔쳐 VETH-ETH 유니스왑 풀을 고갈시키는 것만으로도 $900,000의 이익을 얻었습니다. 그러나 이것은 VETH가 ERC20 토큰 표준을 수정한 방식에 논리적 오류가 있기 때문에 VETH가 저지른 단순한 실수입니다.

  3. 일반적으로 보안이 개선되었으며, 특히 프로필이 더 높은 프로젝트의 경우 더욱 그러합니다. 향상된 보안은 감사에 대한 사용자 기대와 테스트에 대한 개선된 도구에 의해 주도되었습니다. 최근 DeFi의 가장 큰 보안 문제는 대출 시장에서 dForce의 디지털 자산 2,500만 달러 절도였습니다. 그러나 공격자의 IP 주소가 발견되어 싱가포르 경찰과 공유되면서 자금이 반환되었습니다.

  4. dForce 공격은 악용된 취약점이 재진입이었기 때문에 개발팀의 특히 심각한 과실의 결과로 간주될 수도 있습니다. 재진입 공격은 DAO가 고갈되는 이유이며 개발자가 ERC777 토큰과 상호 작용할 때 고려해야 하는 잘 알려진 문제였습니다.

다음 네 가지 인출 단계가 있는 계약을 상상해 보십시오."재진입"사용자는 계약에서 모든 자금을 인출할 준비가 된 계약을 호출합니다.

계약은 계약에 있는 사용자의 자금을 사용자에게 보냅니다.

계약 자체가 갱신되고 사용자는 계약에 자금이 없습니다.

재진입 취약점으로 인해 악의적인 사용자가 계약이 완전히 실행되기 전에 계약을 다시 호출할 수 있습니다(

재진입

). 위의 예에서 공격자는 3단계와 4단계 사이에 계약을 다시 입력하고 사용자의 잔액이 업데이트되기 전에 다시 철회할 수 있습니다. 이 과정을 반복하면 계약에서 기존 자금을 모두 인출할 수 있습니다.

이 원칙은 계약에서 사용자가 imBTC 담보(ERC777 토큰)의 양을 지속적으로 늘리고 있다고 믿을 때 dForce를 공격하는 데 사용됩니다. 그러면 계약을 통해 사용자는 시스템에서 더 많은 자금을 빌릴 수 있습니다. 공격자들은 가짜 imBTC 담보를 2,500만 달러 이상으로 늘린 다음 대출 거래에서 dForce의 모든 유동성을 인출했습니다.

보조 제목

블록체인의 스마트 계약은 사용자 및 기타 스마트 계약과 상호 작용할 수 있는 무허가를 기반으로 합니다. 스마트 계약을 설계하는 사람들에게는 미래에 누군가가 계약과 상호 작용할 수 있는 모든 가능한 방법을 고려하는 것이 어려울 수 있습니다. 다른 사람은 원래 작성자가 의도하지 않은 방식으로 계약과 상호 작용하는 스마트 계약을 구축할 수 있습니다.

사용자는 dForce 공격에 사용된 ERC-777 표준에 기반한 동일한 익스플로잇을 사용하여 imBTC-ETH 유니스왑 풀에서 220,000달러를 빼돌렸습니다. Uniswap의 경우 공격자가 ETH-imBTC 토큰 풀에서 ETH를 제거했지만 imBTC 토큰 잔액은 증가하지 않았습니다. 이러한 조작은 일반적으로 ETH 가격을 상승시킵니다.

dForce의 경우와 달리 Uniswap의 개발 팀은 여기서 실질적인 책임이 없으며 사람들이 이러한 유형의 함정에 빠지는 것을 방지하는 것이 거의 불가능합니다. Uniswap 팀이 그들의 인터페이스가 사용자가 잠재적으로 고갈된 풀에 유동성을 추가하는 것을 허용하지 않는다고 확신하더라도, 그들은 그것을 허용하는 스마트 계약 위에 다른 인터페이스가 구축되는 것을 막을 수 없었습니다. 사실, 이 특정 공격은 수년 전부터 광범위하게 논의되었습니다.

최근 6월 18일 Balancer에 대한 공격은 특정 시장에서 비표준 프로그래밍 패턴을 악용한 유사한 예입니다. STA는 각 전송에서 1%의 수수료를 받는 추가 디플레이션 모델이 있는 ERC20 토큰입니다. 공격자는 스마트 컨트랙트를 사용하여 단일 트랜잭션에서 여러 작업을 자동으로 수행하여 WETH와 STA 토큰을 24번 주고받으며 풀에 0.0000000000000000001 STA만 남을 때까지 Balancer 유동성 풀 중 하나에서 STA 토큰을 소진했습니다( 1 weiSTA). . Balancer 풀은 STA의 디플레이션 모델을 인식하지 못하고 1 weiSTA를 기준으로 자산에 대한 새로운 가격을 설정합니다. 그런 다음 공격자는 풀에서 WETH, LINK, SNX 및 WBTC를 거래했습니다. 이 공격을 통해 두 풀의 자금이 50만 달러 이상 손실되었습니다.

하루 후 Balancer는 다른 스마트 계약과 상호 작용하는 예기치 않은 동작으로 인해 두 번째 취약점 문제를 겪었습니다. Compound의 토큰 배포를 위해서는 사용자가 Compound의 스마트 계약과 상호 작용하여 COMP를 청구해야 합니다. COMP와 BAL(유동성을 제공하여 얻은 Balancer 토큰)을 모두 얻고자 하는 사용자는 두 토큰을 모두 받을 수 있도록 COMP로 유동성 풀을 만들어야 합니다.

공격자는 Balancer 유동성 풀의 자산에 의해 생성된 새로운 COMP가 누구에게도 속하지 않는다는 것을 알고 있으므로 공격자는 풀에 들어가 이러한 사용 가능한 COMP 토큰을 얻은 다음 유동성 풀에 더 많은 돈을 넣고 떠날 수 있습니다. 지금 발견된 취약점의 경우와 같이 공격자는 플래시론을 이용하여 자신의 자본을 극대화한 다음 최대의 이익을 얻습니다."보조 제목

공격의 세 번째 범주는 블록체인 자체의 속성을 악용하는 것입니다.

이러한 문제로 오랫동안 고통을 받아온 프로토콜 중 하나는 Synthetix입니다. 2019년 9월부터 2020년 2월까지 프로토콜의 차익거래 봇은 오라클 업데이트에 앞서 지속적으로 실행되었습니다. Synthetix에서 거래는 매칭을 통한 구매자와 판매자 간의 거래가 아니라 오라클이 제공하는 가격 피드를 기반으로 한 거래이며 유동성은 SNX 토큰 보유자에 의해 제공됩니다.

Synthetix의 오라클이 가격 피드를 온체인에 게시하면 봇은 오라클이 가격을 업데이트할 기회를 갖기 전에 이더리움 블록에 포함되기 위해 높은 거래 수수료를 지불합니다. 이러한 선제적 차익 거래 행위로 인해 Synthetix의 거래량은 하루에 최대 6,900만 달러에 도달한 반면, 오늘날 차익 거래 기회가 없는 Synthetix의 평균 거래량은 150만 달러에 불과합니다.

3월 12일(

검은 목요일"), 볼트(vault) 소유자는 MakerDAO 청산으로 예기치 않게 830만 달러를 잃었고, 거래 수수료도 사고 요인이었습니다. MakerDAO의 볼트(사용자가 담보를 예치하고 Dai를 생성하는 곳)의 담보가 부족할 때 담보(예: ETH)는 DAI를 높이고 청산된 재무부의 부채를 상환하기 위해 경매됩니다. 일반적으로 경매에서 낙찰자(키퍼)는 DAI를 ETH로 교환한 다음 이 DAI를 폐기합니다. 부채가 상환되면 꺼지면 재무부의 원래 소유자가 나머지 ETH를 받게 됩니다.

3월 12일 ETH 가격이 50% 이상 급락하면서 많은 국채가 청산 절차에 들어갔다. 동시에 이더리움 네트워크는 매우 혼잡해졌고 가스는 400gwei 또는 정상 가격의 20배까지 치솟았고, 이로 인해 대부분의 키퍼가 즉시 호가할 수 없게 되었습니다. 키퍼가 청산을 계속 트리거하고 $0의 입찰가로 사용 가능한 ETH를 획득했습니다.

보조 제목