
편집자 주: 이 기사의 출처는배빗 정보 (ID: bitcoin8btc)편집자 주: 이 기사의 출처는
배빗 정보 (ID: bitcoin8btc)
요약하다:
, 저자: Harvest Finance, 컴파일러: 무료 및 간편함, 승인을 받아 출시됨.
10월 26일, 해커들은 DeFi 프로토콜 Harvest의 금고에서 2,400만 달러를 훔치기 위해 플래시 론을 사용했습니다. Harvest의 공식 분석 보고서에 따르면 플래시 론은 공격의 일부일 뿐이며, 특히 DeFi 프로토콜과 관련된 비영구적 손실 문제입니다. 공격자는 이후 약 250만 달러의 자금을 반환했지만 Harvest 사용자는 여전히 2천만 달러 이상의 손실을 입었고 이에 대해 Harvest는 공식적으로 보상금을 지급하고 해커에게 남은 자금 반환을 요청했습니다.
우리는 이 엔지니어링 오류에 대한 책임이 있으며 이러한 사고가 향후 완화되도록 합니다.
무슨 일이에요?
영향을 받는 사용자를 위한 수정 계획을 개발하는 것이 앞으로 한 주 동안 최우선 과제입니다.
우리는 공격자가 영향을 받는 사용자에게 배포될 수 있도록 배포자에게 자금을 반환할 것을 겸허하게 요청합니다.
무슨 일이에요?
10월 26일 2:53:31 UTC에 공격자가 Harvest Finance의 USDC 및 USDT 금고에서 자금을 훔쳤습니다. 공격자는 Harvest 볼트가 투자된 Curve.fi Y 풀의 개별 자산에 영향을 미치는 차익 거래 및 비영구적 손실을 악용했습니다. 프로토콜의 다음 메커니즘을 통해 이러한 공격을 수행할 수 있습니다.
Harvest의 투자 전략은 기본 실시간 프로토콜 자산에 대한 투자의 실시간 가치를 계산합니다. 재무부는 자산 가치를 사용하여 자금이 예치된 사용자에게 발행될 주식 수를 계산합니다. 사용자가 금고에서 자금을 인출할 때 자산의 가치를 사용하여 인출할 때 사용자가 받아야 하는 지불금을 계산합니다.
일부 볼트(USDC 및 USDT 포함)의 자산은 기본 DeFi 프로토콜의 공유 풀(예: Curve.fi의 Y 풀)에 보관됩니다. 이러한 자산 풀의 자산은 비영구적 손실, 차익 거래 및 미끄러짐과 같은 시장 효과의 영향을 받습니다. 따라서 많은 수의 시장 거래를 통해 그 가치가 조작될 수 있습니다.
공격자는 Curve.fi Y 풀에서 USDC 및 USDT의 비영구적 손실 영향을 반복적으로 악용했습니다. 이들은 조작된 자산 가치를 이용해 하베스트 금고에 자금을 예치하고, 금고 내 주식을 자신에게 유리한 가격으로 취득한 뒤 정상 가격으로 금고를 빠져나와 수익을 창출한다. 다음은 이 공격 이벤트의 추적 체인입니다.
공격자의 지갑 주소는 0xf224AB004461540778A914EA397C589B677E27B입니다. 공격에 사용된 10 ETH는 Tornado 트랜잭션 0x4b7b9e387a79289720a0226f695913d1d11dbdc681b7218a432136cc089363c4를 통해 숨겨졌습니다.
공격 자체는 트랜잭션 0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877에서 시작되었습니다.
공격자는 Uniswap으로부터 USDT(18,308,555.417594)와 USDC(50,000,000)를 거액 획득하여 공격 계약에 투입했습니다.
계약은 Y 풀의 스왑 거래를 통해 17,222,012.640506 USDT를 USDC로 전환했습니다. 스왑의 영향은 다른 자산의 비영구적 손실로 인해 Y 풀의 USDC 가치가 더 높다는 것입니다. 이 스마트 계약으로 얻은 금액은 대략 17,216,703.208672 USDC에 해당합니다.
공격자는 49,977,468.555526 USDC를 Harvest의 USDC 금고에 예치하고 주당 0.97126080216 USDC의 가격으로 51,456,280.788906 fUSDC를 받았습니다. 공격 전에 fUSDC의 주당 가격은 0.980007 USDC였으므로 공격자는 지분 가치를 약 1% 줄였습니다. Harvest 전략 내부의 차익 거래 확인은 3% 임계값을 초과하지 않았으므로 거래가 되돌려지지 않았습니다.
공격자는 Y 풀을 통해 17239234.653146 USDC를 USDT로 다시 교환했고, 그 결과 비영구적 손실 효과가 복원되어 원래 낮은 가치의 USDC를 Y 풀에서 얻었습니다. 따라서 공격자는 17,230,747.185604 USDT를 회수했습니다.
공격자는 Harvest의 USDC 금고에서 코인을 인출하고 모든 fUSDC 주식을 50596877.367825 USDC로 교환했습니다. Y 풀의 USDC 가치 감소로 인해 fUSDC의 주당 가격은 0.98329837664 USDC입니다. USDC는 전적으로 Harvest의 USDC 금고에서 지불되며 Y 풀과 전혀 상호 작용하지 않습니다. 이렇게 한 번 하면 공격자의 순이익(플래시론 수수료 제외)은 619408.812299 USDC이며, 공격자는 동일한 트랜잭션에서 이 과정을 여러 번 반복했습니다.
공격자는 4분 이내에 USDC 볼트에 대해 17개의 공격 트랜잭션을 실행한 후 트랜잭션 0x0fc6d2ca064fc841bc9b1c1fad1fbb97bcea5c9a1b2b66ef837f1227e06519a6부터 시작하여 USDT 볼트에 대해 유사한 방식으로 프로세스를 반복했습니다. 그들은 또 다른 3분 동안 USDT 볼트에 대한 13개의 공격 트랜잭션을 완료했습니다.
2020년 10월 26일 03:01:48 UTC에 공격자는 공격 계약에서 13,000,000 USDC와 11,000,000 USDT를 0x3811765a53c3188c24d412daec3f60faad5f119b 주소로 전송했습니다.
공격 후 USDC 금고의 주가는 0.980007에서 0.834953 USDC로, USDT 금고의 주가는 0.978874에서 0.844812 USDT로 각각 13.8%, 13.7% 하락했습니다. 사용자가 손실한 가치는 약 3,380만 달러로 공격 전 프로토콜에 잠긴 총 가치의 3.2%에 해당합니다.0xf224ab004461540778a914ea397c589b677e27b。
다음 단계
보조 제목
다음 단계
Harvest Finance 프로토콜에는 모든 농부를 위해 일관된 수확량을 유지하는 데 필요한 정기적인 주간 일정이 있습니다. 2020년 10월 27일 배출 계획에 따라 Harvest Finance 팀은 19637.46 FARM 토큰의 발행을 발표했습니다. 원래 10월 27일 공개 예정이었던 스마트 컨트랙트 개선 계획은 커뮤니티의 요청에 따라 공격 상황에서 보안을 재평가할 수 있도록 연기됩니다. 공유 풀을 사용하는 금고의 자금은 그러한 공격에 대한 완화 조치가 마련될 때까지 정책에서 계속 인출됩니다(다음 섹션 참조). 영향을 받는 사용자에 대한 치료 인프라와 함께 이러한 조치는 팀의 다음 개발 초점이 될 것입니다. 우리는 이 엔지니어링 오류에 대해 책임을 지고 향후 이러한 사고가 완화되도록 합니다.
보조 제목
가능한 향후 완화
Harvest Finance 팀은 가능한 완화 전략을 평가하고 향후 릴리스에서 필요한 사용자 경험 변경과 함께 이를 구현하기 위해 노력하고 있습니다. 우리는 새로운 금고의 업그레이드 가능한 특성과 타임록 기반 투자 전략 교체를 활용하고 출시 전에 완화 전략을 커뮤니티에 잘 전달할 것입니다.
가능한 복원 기술에는 다음 옵션이 포함됩니다.
입금 제출 및 표시 메커니즘을 구현합니다. 이렇게 하면 단일 트랜잭션에서 입금 및 인출을 수행할 수 있는 기능이 제거되어 플래시 대출 기반 공격이 불가능해집니다. 사용자 입장에서 이는 예치하는 동안 토큰이 한 번의 트랜잭션으로 Harvest로 전송됨을 의미합니다. 그런 다음 사용자는 다른 거래, 바람직하게는 다른 블록에서 자신의 지분을 청구할 것입니다. 이것은 사용자 경험의 변화를 구성하고 더 높지만 여전히 수용 가능한 가스 비용을 초래할 수 있습니다.
기존 예금 arb에 대한 보다 엄격한 구성 확인 정책. 현재 임계값은 3%로 설정되어 있으므로 이러한 공격으로부터 볼트를 보호하기에는 충분하지 않습니다. 문턱을 낮추면 경제적으로 이러한 공격이 불가능할 수 있지만, 자연적 비영구적 손실 효과의 경우 예치금이 제한될 수 있으며, 7분을 초과한 일요일 사건은 이 조치가 충분히 효과적이지 않았음을 보여 주며 따라서 다음과 같은 조치로 간주되어야 합니다. 다른 조치를 보완합니다.
기본 자산 추출. 사용자가 공유 풀(예: Y 풀)을 사용하는 금고에 입금하면 개인 자산을 풀 자산(예: yCurve)으로 효과적으로 교환합니다. 사용자가 기본 자산을 인출하기만 하면 현재 시장 상황에 따라 포트폴리오로 거래할 수 있습니다. 시장이 조작되면 거래도 그러한 조작의 대상이 되어 공격 주체가 수익을 창출하는 것을 방지합니다. 일반 사용자 입장에서 yCRV는 모금 후 별도의 트랜잭션을 통해 스테이블 코인으로 전환할 수 있습니다. 이를 위해서는 UX 변경이 필요하지만 프로토콜에 도움이 될 수 있습니다. 이 접근 방식의 단점은 금고 인출 메커니즘을 현재 사용 중인 전략에 연결한다는 것입니다. 한 전략이 공유 기본 풀을 사용하지 않거나 다른 풀을 사용하는 다른 전략으로 전환하면 결과 자산도 변경됩니다.
오라클을 사용하여 자산 가격을 결정하십시오. 대략적인 자산 가격은 외부 오라클(Chainlink 또는 Maker에서 제공)에서 효과적으로 결정할 수 있지만 실제 주가와 매우 느슨하게 연결되어 있습니다. 기본 DeFi 프로토콜의 자산 가치가 오라클 시스템에서 제시한 가격과 다른 경우 재무부는 무료 차익 거래 및 플래시 대출 공격에 직면하게 됩니다. 이것은 Harvest 솔루션이 아니지만 시스템 설계 및 가능한 완화 전략에서 오라클 사용을 고려할 것입니다.
USDC 및 USDT 자금을 잃은 사용자를 위한 구제책
스냅샷과 MerkleDistributor를 통해 공격자의 환불된 자금을 분배하면서 우리는 이러한 도구를 만드는 데 도움을 주고 영향을 받는 사용자에게 치료를 제공할 인프라를 구축하기 위해 노력한 개발자에게 연락했습니다. 자금 분배가 우선이며 도구가 구축되면 자금 분배에 대한 자세한 내용을 공개할 예정입니다.
다른 해결책은 거버넌스에서 분석되고 투표될 것입니다.
공격자 정보 및 현상금
공격자는 새로 생성된 이더리움 주소 0xf224ab004461540778a914ea397c589b677e27bb를 사용하여 공격을 수행했습니다.
1Paykw4s2WX4SaVjDrQkwSiJr16AiANhiM
1HLG86DDEzAxAGmEzxr1SUfPCWcnWA6bMm
14stnrgMFNR4LesqQRUdo5n1VUx9xdAMeg
18w2Bm2cCsbLjWQU9BcnjzK8ErmzozrVa3
1FS2t2eAjmjaNmADN6SMHYo7G4XGpX1osS
1NdAJ89k1qpRMpZLwuYGQ7VnM45xD2NJXa
1CLHhshrusvT4XADWA29R2H4ndsSUamEWn
토네이도 트랜잭션 0x4b7b9e387a79289720a0226f695913d1d11dbdc681b7218a432136cc089363c4;
이 공격은 트랜잭션 0x35F8D2F572FCEAAC9288E5D46211780EF2694786992A8C3F6D02612277B0877에서 시작되었습니다.
공격자는 REN 프로토콜을 통해 다음 주소로 비트코인을 전송합니다.
그런 다음 공격자는 알려진 Binance 예금 주소로 여러 거래를 보냈습니다. e7fe04bcc09d143e787455c602195
자금 회수에 도움을 준 첫 번째 개인 또는 팀에게 $100,000의 포상금을 제공합니다.
36시간 이내에 환불이 완료되면 현상금은 $400,000입니다. 이 과정에서 공격자를 독살하지 마십시오. 사용자 자금이 배포자에게 성공적으로 반환되도록 모든 노력을 집중할 것을 강력히 권장합니다.