Cointime

Download App
iOS & Android

분산형 대출 플랫폼 HopeLend에 대한 대출 공격 분석

Validated Project

베이징 시간으로 2023년 10월 18일 19시 48분 59초에 Hope.money의 대출 풀은 플래시 대출 실행을 기반으로 공격을 받았습니다.

Hope.money는 사용자에게 풀스택 분산형 금융 서비스를 제공하기 위해 HopeLend 대출 플랫폼, HopeSwap 분산형 거래소, 안정적인 통화 $HOPE 및 거버넌스 토큰 $LT를 구축했습니다.

이 공격에 관련된 프로토콜은 사용자가 프로토콜에 유동성을 제공하거나 초과 담보 대출을 통해 수익을 얻을 수 있는 분산형 대출 플랫폼인 HopeLend입니다.

전체 이야기

HopeLend의 코드 구현 중 대출 풀에 악용 가능한 취약점이 있는데, 예금 증서 파기 시 잘못된 정수 나누기 문제가 발생하여 소수점이 잘려 예금 증서보다 적은 수의 증서가 파기되는 문제가 발생했습니다. 예상됨 일관된 가치 토큰을 획득하고 예상함.

공격자는 이 결함을 악용하여 Hope.money에 자금이 존재하는 다양한 대출 풀을 고갈시켰습니다.

이 중 hEthWbtc 대출 풀은 73일 전 배치됐으나 자금이 없었기 때문에 해커는 대출 풀에 거액의 자금을 투입해 할인율을 획기적으로 높였으며, 이로 인해 내부의 다른 대출도 빠르게 소진됐다. 블록 거래 자금 풀

더욱 놀라운 점은 취약점을 악용한 해커가 취약점을 악용할 자금을 확보하지 못했다는 점이다. 그의 공격 거래는 선두주자에 의해 발견됐다. 선두주자는 자신의 공격 행위를 모방해 공격 수익금을 모두 훔치는 데 성공했다(527). 결국 공격 수익금의 50%(263 ETH)는 선두 주자들이 블록(페이로드)을 포장한 채굴자들에게 뇌물을 주는 데 사용되었습니다.

취약점을 발견한 최초 해커는 18377039 블록에서 공격 계약을 생성하고 18377042 블록에서 공격 계약을 호출했다. 이때 선두주자는 메모리 풀의 트랜잭션을 모니터링하고 공격 계약을 선두주자로 시뮬레이션했다. 실행 중인 계약에 대한 입력은 동일한 블록 18377042에서 악용되었으며 블록 18377042의 초기 해커 거래는 선두 주자 뒤에서 순서가 지정되었기 때문에 실행에 실패했습니다.

자금은 어디로 가는가

선두 주자가 이익을 얻은 지 한 시간 후, 그는 자금을 다음 주소로 옮겼습니다: 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A

자금은 어디로 가는가

선두 주자가 이익을 얻은 지 한 시간 후, 그는 자금을 다음 주소로 옮겼습니다: 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A

10월 20일 13시 30분 23초, 공식 의심팀이 주소로 연락해 선두주자가 보상으로 26ETH(10% 수익)를 남길 수 있도록 허용했고, 선두주자로부터 답변을 받았다.

최종 자금은 한 시간 간의 통신 후에 GnosisSafe의 다중 서명 금고로 이체되었습니다.

아래에서는 실제 취약점과 해커가 이를 악용한 방법에 대한 세부 정보를 보여줍니다.

사전 정보

*HopeLend의 대출 프로토콜 구현은 Aave에서 분기되었으므로 취약점과 관련된 핵심 비즈니스 로직은 Aave의 백서에서 찾을 수 있습니다.

0x00 예금 및 대출

Aave는 순수 DeFi이며, 대출 사업은 유동성 풀을 통해 구현되며, 사용자가 Aave에 유동성을 예치하면 대출 수익을 기대합니다.

대출금은 이용자에게 전액 배분되지 않으며, 이자소득 중 일부는 위험준비금에 포함되며, 이 비율은 적으며 대부분의 대출금은 유동성을 제공하는 이용자에게 배분됩니다.

Aave에서 예금을 대출할 때 Aave는 할인을 통해 서로 다른 시점의 예금 수를 유동성 풀의 초기 예금 수로 환산하므로 각각의 기초 자산에 해당하는 원리금의 합은 주식수를 직접적으로 알 수 있습니다. 금액(주식) * 지수(할인율)을 이용하여 계산하므로 계산과 이해가 매우 쉽습니다.

펀드를 구매하는 것과 비슷한 과정으로 이해하면 펀드의 초기 순가치는 1이고, 사용자는 100위안을 투자해 100주를 획득하는데, 일정 시간이 지나면 순가치는 1.03이 된다고 가정한다. , 사용자는 다시 100위안을 투자하여 100주를 얻습니다. 는 97이고 사용자의 총 지분은 197입니다.

이는 실제로 지수(순가치)에 따라 자산을 할인하는 것입니다. 이렇게 하는 이유는 사용자의 실제 원리금 합계에 잔액을 사용하여 현재 지수를 곱하기 때문입니다. 두 번째 입금 시 사용자의 올바른 원리금 합은 100 * 1.03 + 100 = 203 이어야 합니다. 할인 처리가 수행되지 않으면 사용자가 두 번째로 100을 입금한 후의 원리금 합은 (100)이 됩니다. +100) * 1.03 = 206, 틀렸습니다.할인을 하면 원리금의 합은 (100 + 100 / 1.03) * 1.03 = 103 + 100 = 203이 됩니다. 203의 결과가 맞습니다.

공격 과정

0x25126......403907(hETHWBTC 풀)

공격 과정

0x25126......403907(hETHWBTC 풀)

0x5a63e......844e74 (공격 계약 - 현금 아웃)

공격자:

1. 초기플래시론 자금을 대출하고 담보로 제공

공격자는 먼저 Aave Flash Loan에서 2300WBTC를 빌려 HopeLend에 2000WBTC를 약속했고, 이 자금은 HopeLend의 hEthWbtc 계약(0x251...907)으로 이체되고 해당 2000hETHWBTC를 획득하게 됩니다.

2. 빈 대출 풀을 활용하여 초기 할인율(liquidityIndex)을 조작합니다.

HopeLend에서 플래시 대출을 통해 2,000 WBTC를 빌리세요.

현재 값은 1hETHWBTC = 1WBTC입니다.

WBTC로 교환하기 위해 ETHWBTC를 입출금하는 정상적인 운영에 따르면 교환 비율은 영향을 받지 않습니다. (교환 비율은 이자를 받을 때만 영향을 받으며 1 hETHWBTC는 더 많은 WBTC를 얻습니다.)

이 시점에서 해커는 일련의 복잡한 작업을 통해 할인율을 조작하기 시작합니다.

• 해커는 획득한 2,000 WBTC를 HopeLend의 hEthWbtc 계약(0x251…907)에 직접 이체를 통해 직접 이체했으며, 이 단계는 대출 상환이 아닙니다.

• 그런 다음 해커는 1단계에서 약속한 WBTC(1999.999…) 대부분을 인출했으므로 이전 단계에서는 풀의 자산을 보충하기 위해 WBTC를 다시 이체해야 했습니다.

• 결국 해커는 hEthWbtc의 가장 작은 단위(1e-8)만 남게 되는데, 조금 남겨두어야 하기 때문에 여기에서 완전히 언급할 수는 없다. 기존 것에 새로운 것을 더해, 클리어하면 할인율(liquidityIndex)은 0이 되고, 풀에 있는 비율은 불균형을 이룰 수 없습니다.

• 이전 단계에서 대부분의 hEthWbtc를 소각하기 위해 교환된 wBTC와 이전 플래시 대출에서 남은 wBTC를 사용하고 빌려준 플래시 대출을 HopeLend 풀에 반환하여 총 2001.8 WBTC(1.8 wBTC 이자 포함)를 지불합니다.

• 위의 과정을 거치면 hEthWbtc가 대부분 소실되어 해커 계좌에 최소 1개의 hEthWbtc(1e-8)만 남게 되어 총 hETHWBTC가 줄어들지만 대출 풀에는 2001.8wBTC가 남게 됩니다. 이자율(liquidityIndex)은 놀라운 126,000,000에 도달했습니다.

이는 예금 사용자의 관심이 기본적으로 풀의 유동성 증가에서 비롯된다는 지식을 포함하며, 대출 풀은 예금 금리와 사용률에 따라 대출 및 예금 금리를 동적으로 조정합니다.

여기서 풀이 플래시론 이자(1.8WBTC)로 추가 유동성을 받을 때 예금 단위당 할인가치(hEthWbt)를 계산하는 데 사용되는 유동성 지수(liquidityIndex)에 70%(126,000,000)가 포함됩니다.

해커 작전 이전에는 풀이 비어 있었기 때문에 상환 후 총 유동성은 1에 불과하고 금액은 126000000이며 초기 유동성 지수는 1이므로 결과는 126000001입니다.

3. 할인율 확대 지속

해커는 플래시론을 통해 HopeLend에서 계속해서 2,000WBTC를 빌렸고, 매번 추가로 1.8WBTC를 반환해 유동성 지수가 매번 126,000,000을 누적할 수 있었습니다.

해커는 이 과정을 60번 반복해 최종적으로 유동성지수는 7,560,000,001에 도달했고, 공격자가 보유한 hEthWBTC 최소 단위 1단위의 할인가치는 75.6WBTC(약 214만 달러)에 달했다.

또한 이를 통해 해커는 hEthWBTC를 제어하고 그 가치를 왜곡할 수 있습니다.

4. 기존 자금의 대출 풀을 비우고 수익 창출

그런 다음 공격자는 최소 1단위의 hEthWBTC를 담보로 사용하여 HopeLend의 다른 5개 토큰 풀에서 대량의 자산을 빌려주었습니다.

포함하다:

  • 175.4 - WETH
  • 145,522.220985 - USDT
  • 123,406.134999 - USDC
  • 844,282.284002229528476039 - 희망
  • 220,617.821736563540747967 - stHOPE

이 토큰들은 유니스왑을 통해 수익으로 WBTC, WETH로 전환되었으며, 각종 수수료를 공제한 후 해커의 최종 수익은 약 263 WETH(뇌물 페이로드의 263.9 WETH 제외)였습니다.

해커가 다른 풀에서 많은 돈을 빌릴 수 있는 이유:

대출계약에서는 돈을 빌리거나 예금을 인출할 때 이용자의 담보자산 현황을 확인하여 대출금액이 담보대출 한도를 초과하지 않는지 확인합니다.

할인율은 이전에 해커에 의해 조작된 적이 있으며 정규화된 소득 승수를 사용하여 모기지 가치 계산에 할인율이 포함될 것이므로 그의 손에 있는 hEthWBTC 1단위의 모기지 가치는 75.6WBTC에 달합니다.

해커는 다른 풀에서 돈을 빌릴 때마다 담보자산 검증을 쉽게 통과했다.

이때 공격자는 유동성지수를 조작하기 위해 HopeLend에 총 2000+1.8*60 WBTC를 투자했고, hEtthWBTC는 1유닛만 남았다.

5. 핵심취약점(정수나누기 오류)을 활용하여 현금화

공격자는 기존에 투자한 wBTC를 출금하기 위해 또 다른 공격 컨트랙트인 0x5a63e......844e74를 배포하고, 그 안에 있는withdrawalAllBtc() 메소드를 호출했습니다.

취약점 프로세스는 다음과 같습니다.

① 첫 번째 입금 151.20000002 wBTC 현재 유동성 지수(최소 1 단위 hEthWBTC=75.6wBTC)에 따르면 공격자는 최소 2 단위의 hEthWBTC를 획득합니다.

② 113.4 wBTC를 출금하고 해당 hEthWBTC 지분을 역계산한 후 hEthWBTC에 대한 소각 작업을 수행합니다.

③ 113.4 wBTC에서는 최소 1.9999999998개의 hEthWBTC를 파기해야 하지만, div 기능의 정확성으로 인해 최소 1개의 hEthWBTC만 파괴되므로 악용 가능한 취약점이 되며, 해커는 여전히 최소 1개의 hEthWBTC를 보유할 수 있습니다.

심각한 취약점

hEthWBTC의 화상 방법은 고정밀 분할 rayDiv를 호출합니다.

여기:

a=11340000000 (WBTC 출금 예정)

b=7560000001000000000000000009655610336 (할인율)

(a*1e27+b/2)/b = 1.9999999998이지만 Solidity의 자체 div 메소드는 11340000000 / 7560000001에 해당하는 1을 자르고 반환합니다. 소수점 이하 자릿수는 나눈 후 잘립니다.

(a*1e27+b/2)/b = 1.9999999998이지만 Solidity의 자체 div 메소드는 11340000000 / 7560000001에 해당하는 1을 자르고 반환합니다. 소수점 이하 자릿수는 나눈 후 잘립니다.

0x5a63(공격 계약 - 캐시 아웃)은 75.60000001WBTC를 계속 입금하고 정확히 최소 1단위의 hEthWBTC를 획득하여 최소 2단위의 hEthWBTC를 계속 보유하고 있습니다.

113.40000000wBTC를 인출하고 75.60000001wBTC를 입금하는 이 주기에서 공격자는 매번 허공에서 37.8wBTC를 얻을 수 있습니다.

58사이클 이후 공격자는 초기에 투자한 wBTC를 모두 인출하고 Aave의 플래시 대출을 성공적으로 반환했습니다.

결론적으로

hEthWBTC 대출풀이 초기화되지 않았기 때문에 공격자는 유동성지수를 쉽게 조작하여 최대치까지 높일 수 있으며, 인출률이 제수로 크게 증폭된 이후에는 정수나눗셈의 잘림 오류로 인해 인출이 더 용이해진다. 원블록에 대한 이전 투자. .

제대로 기능하는 대출 풀에서는 이미 유동성이 존재하기 때문에 대출 이자가 조금만 높아져도 할인율이 크게 높아지는 것이 쉽지 않습니다.

댓글

모든 댓글

Recommended for you

  • 미국 현물 비트코인 ​​ETF는 어제 4,397만 달러의 순유출을 기록했습니다.

    Trader T 모니터링에 따르면 미국 현물 비트코인 ​​ETF는 어제 4,397만 달러의 순유출을 기록했습니다.

  • 향후 5년간 암호화폐 정책을 결정할 새로운 유럽위원회

    유럽의회는 올 가을에 향후 5년간 EU의 암호화폐 정책을 결정할 새로운 유럽위원회를 선출할 예정입니다. 새 위원회는 이르면 11월까지 출범하지 않을 예정이지만, 이미 암호화폐 규제에 대한 위원회의 접근 방식을 예측하는 몇 가지 추세가 있습니다. 첫째, 유럽 정치의 중심이 오른쪽으로 이동하고 있으며, 이는 조세 및 혁신 접근 방식에 대한 논의에 영향을 미칠 수 있습니다. 프랑스는 정치적 불안정으로 인해 앞으로 더 많은 어려움에 직면하게 될 것입니다. 둘째, 정책 입안자들은 혁신 정책에 대한 영향력을 놓고 경쟁할 것입니다. 새로운 의원들은 암호화 정책에 초점을 맞춰 개인적 위상을 높일 가능성이 높으며, 위원회 내 고위 정책 고문들은 권력을 놓고 경쟁할 가능성이 높습니다. 셋째, 디지털 개인정보 보호와 인공지능이 EU 정책 우선순위로 확인되면서 혁신이 정책의 기둥이 될 것입니다. 위원회는 디지털시장법과 디지털서비스법을 적극적으로 시행할 것으로 예상된다. 시장 측면에서 암호화폐의 제도적 채택 증가는 정치적 개입을 촉발할 수 있는 반면, 전통 금융에서 암호화폐에 대한 더 많은 소매 투자 노출은 정치적 반응을 촉발할 수도 있습니다. EU는 글로벌 암호화 정책에 있어 상당한 진전을 이루었으며 새로운 입법 작업을 통해 기존 규칙의 효과적인 구현을 보장해야 합니다.

  • 금융감독원, 업비트 등 가상자산 서비스 제공업체 6곳 조사

    금융감독원이 지난 7월 가상자산 이용자 보호법 시행 이후 첫 번째로 가상자산 서비스 제공자에 대한 점검을 실시한다고 밝혔다. 금감원은 원화마켓 거래소 2곳, 토큰마켓 거래소 3곳, 지갑·수탁 서비스 제공업체 1곳 등 6개 기관을 조사할 계획이다. 업비트, 빗썸, 코인원, 고팍스, 코빗 등 국내 주요 원화시장 거래소 2곳이 점검 대상으로 선정된다는 점은 주목할 만하다. 검사의 초점은 규제 준수, 이용자 보호 시스템, 내부 통제 메커니즘 및 불공정 거래 감독 등입니다. 금감원은 이용자 자산관리, 콜드월렛 활용, 보험 및 적립금 현황, 거래기록 유지, 이상거래 모니터링 시스템 등을 검토하게 된다. 불법행위에 대해서는 시장질서 유지를 위해 엄중히 제재하는 동시에 기업의 자제와 감독이 강화될 수 있도록 지원하겠다고 밝혔다.

  • 1,200만 달러 규모의 암호화폐 사기 혐의를 받고 있는 한국인 남성이 성형수술을 이용해 10개월 동안 탈출했다가 체포됐다.

    9월 2일 뉴스에 따르면, 한국 경찰은 2024년 8월 40대 남성을 체포했다. 이 남성은 대규모 암호화폐 사기 사건을 계획하고 투자자 158명에게 총 160억 원을 사취한 혐의를 받고 있다. 사기 행위는 2021년 11월부터 2022년 6월까지 지속된 것으로 알려졌으며, 용의자들은 가짜 암호화폐 채굴 사업을 빙자해 투자자들에게 월 18%의 수익률을 약속했습니다. 피해자 개인의 피해액은 120만원에서 2억5000만원에 이른다. 피의자는 2023년 9월 예심에 불출석한 뒤 눈, 코, 안면윤곽 성형수술에 약 2100만원을 쓰고 가발을 착용해 외모를 바꾸는 등 10개월 동안 검거를 회피했다. 결국 경찰은 감시카메라 영상, 통화기록, 인터넷 검색기록 등의 단서를 통해 A씨를 검거하는데 성공했다.

  • Telegram은 CEO 체포에 대응합니다: Telegram은 EU 법률을 준수하고 감사는 업계 표준을 준수하며 지속적으로 개선하고 있습니다.

    텔레그램은 CEO의 체포에 대응하여 공식 X 플랫폼 계정에 다음과 같은 성명을 발표했습니다.

  • 아르헨티나, '크레시미엔토' 운동으로 현지 암호화폐 기반 개혁 추진

    8월 26일자 뉴스에 따르면, 코인데스크 칼럼니스트 벤자민 쉴러는 아르헨티나가 이제 기술 르네상스를 앞두고 있다고 말했다. 아르헨티나는 오랫동안 경제적 불안정의 상징이었지만 이제는 암호화폐를 통한 글로벌 경제 변혁의 시험장이 되고 있습니다. 아르헨티나는 치솟는 인플레이션과 엄청난 부채 속에서 경제를 안정시키고 성장을 촉진하기 위한 도구로 암호화폐를 선택하고 있습니다. 미국이 암호화폐 분야의 리더십에서 물러나면서 아르헨티나는 그 공백을 메울 기회를 포착하고 있습니다. 이러한 변화의 중심에는 지속 가능한 암호화 기반 개혁을 추진하기 위해 노력하는 암호화폐 신봉자, 기업가 및 혁신가를 하나로 묶는 "Crecimiento" 운동이 있습니다. 새로 선출된 대통령은 암호화폐의 잠재력에 관심을 보였으며 "Crecimiento" 운동은 암호화폐를 사용하여 지불, 신용, 부동산 및 기타 분야에 초점을 맞춰 경제를 재편하는 데 도움을 주고 있습니다.

  • BTC가 $60,500를 돌파했습니다.

    시장 상황에 따르면 BTC는 60,500달러를 넘어 현재 60,500.02달러에 거래되고 있으며 24시간 기준 2.72%의 상승률을 기록하고 있으니 리스크를 잘 관리하시기 바랍니다.

  • ETH는 2600 USDT를 초과하여 24시간 동안 1.47% 증가했습니다.

    OKX 시장에서는 ETH가 2600 USDT를 돌파했으며 현재 2603.85 USDT에 거래되고 있으며 24시간 동안 1.47% 상승한 것으로 나타났습니다.

  • 스위스, 암호화폐 세금 정보 공유에 대한 공개 협의 시작

    스위스는 국제 정보 교환 협정에 암호화된 세금 데이터를 포함시키는 것을 고려하고 있습니다. 연방 의회는 수요일에 새로운 법안에 대한 협의 과정을 시작했습니다. 이 법안은 111개 관할권과 암호화폐 자산 정보의 공유를 촉진하는 것을 목표로 합니다. 이러한 관할권은 현재 자동 정보 교환의 일부입니다. 공유는 OECD의 암호화폐 자산 보고 프레임워크 준수 여부에 따라 결정됩니다. 스위스는 오랫동안 암호화폐 채택의 선두주자였습니다. 루가노와 같은 곳은 세금 목적으로 테더(USDT) 및 비트코인(BTC)과 같은 암호화폐를 최초로 허용합니다. 국가의 정치적 틀에 따라 연방세청은 비트코인을 결제 수단으로 분류할 수 있습니다. 따라서 비트코인은 부가가치세(VAT)가 면제됩니다. 연방 의회는 파트너 국가와 암호화 관련 정보의 자동 교환 시작일을 설정하는 것을 목표로 하고 있습니다. 입법 제안에 대한 협의 기간은 2024년 11월 15일에 종료됩니다.

  • 스위스, 암호화폐 세금 정보 공유에 대한 공개 협의 시작

    스위스는 국제 정보 교환 협정에 암호화된 세금 데이터를 포함시키는 것을 고려하고 있습니다. 연방 의회는 수요일에 새로운 법안에 대한 협의 과정을 시작했습니다. 이 법안은 111개 관할권과 암호화폐 자산 정보의 공유를 촉진하는 것을 목표로 합니다. 이러한 관할권은 현재 자동 정보 교환의 일부입니다. 공유는 OECD의 암호화폐 자산 보고 프레임워크 준수 여부에 따라 결정됩니다. 스위스는 오랫동안 암호화폐 채택의 선두주자였습니다. 루가노와 같은 곳은 세금 목적으로 테더(USDT) 및 비트코인(BTC)과 같은 암호화폐를 최초로 허용합니다. 국가의 정치적 틀에 따라 연방세청은 비트코인을 결제 수단으로 분류할 수 있습니다. 따라서 비트코인은 부가가치세(VAT)가 면제됩니다. 연방 의회는 파트너 국가와 암호화 관련 정보의 자동 교환 시작일을 설정하는 것을 목표로 하고 있습니다. 입법 제안에 대한 협의 기간은 2024년 11월 15일에 종료됩니다.