$ 35,000 AAVE의 50 백만 USDDT : 재난이 어떻게 발생 했습니까? 우리가 비난해야 하는가
$ 50 백만 DeFi 가동은 거래 경로의 지방 결함으로 인해 거의 0 보호 아래에서 수행되었으며 작은 액체 수영장에서 자금을 거의 완전히 증발합니다。

이 게시물은 다음과 같습니다:
Odaily Daily Planet을 준수합니다@Odaily중국); 번역 Ethan()@ethanzhang 웹3)

사건의 제목을 혼자보고, 확률은 공격이 반복에 실수가 될 것입니다。
이벤트의 핵심은:USDT, $ 50.4 백만에 가치, 결국 AAVE로 변환, $ 359 백만에 가치。
나는 처음에 대해 들었을 때 충격을 받았다. 그래서 나는 완전히 전체적인 것을 빗질 : 거래 추적, 해결자 경로, 계약 통화, 역사적인 예비, 명확한 데이터, 어댑터 프로세스, Aave 인터페이스 코드, CoW 플래시 대출 SDK, 및 제안이 "거유"인지 결정하는 라우팅 코드。
이것은 해커 공격이 아닙니다。Aave의 핵심 계약은 잘못되지 않았습니다. COW 결제에 오류가 없습니다. Uniswap은 실수를하지 않았습니다. SushiSwap은 실수가 없습니다. 거래는 유효합니다, 서명은 유효하 모든 계약은 엄격한 부호에서 실행됩니다. 그러나 거의 모든 경제 값이 파괴되었기 때문에, 단순히 길을 따라 수행 할 수 있기 때문에 극단적으로。
체인과 아무런 잘못이 없습니다。
간단한 "사용자 오류"가 목적과 엄격한 태도가 아닙니다. 사용자가 주문의 서명을 완료 한 것은 사실이지만 전체 소프트웨어 시스템은 거의 50 만 달러의 양방향 회전을 포함하는 작업을 허용, 인용 완료, 서명, 최종 실행까지 계획 경로, 그리고 331 AAVES에 대한 낮은 이동성 풀에 전체 프로세스 포인트. 이것은 완전히 불가능했다, 적어도 합의 체인이 시작되기 전에, 그리고 그것은 시스템에 의해 거부되어야한다。
Transaction 핵심 정보 추적
이 특이한 거래, 하시: 0x9fa9feab3c1989a33424728c23e6de07a40a26a98ff7ff7ff5139f3492ce430801f, 3 월 12, 2026 에 확인되었습니다 Taifeng 네트워크의 주요 지역 24643151, 거래 인덱스 1 과 3780570 단위의 소비. 구매 주문은 0x98b9의 시작 부분에 지갑에 속하며, 실제로 0x3980의 시작 부분에 트랜잭션을 실행하고 CW 경쟁 데이터의 tsolver로 표시됩니다。
우선 AAVE 거래소에 간단한 지갑 레벨 USDT가 아닙니다. 토큰 판매는 aEthusDT, Aave 플랫폼에서 USDT 예금 인증서를 획득합니다. 토큰 구매는 EthaAVE, Aave 플랫폼에 대한 관심을 산출하는 AAVE 예금 인증서입니다. 따라서 이것은 실제로 CW 결제 시스템 및 플래시 대출 어댑터 프로세스를 통해 Aave collateral의 교체입니다。
거래 전에, 지갑은 약 50,432,693.07254 aEthUSDT와 0 aEthAAVE를 개최했습니다. 거래 후, 4.980399 aEthUSDT는 왼쪽 및 327.241335559664878 aEthAAVE가 수신되었습니다. 사실, 지갑은 거의 모든 위치를 판매。
metadata는 구현하기 전에 "독성"이라고 명확하게 보여줍니다. 순서는 aave-v3-interface-collar-swap 과정에서 옵니다. CoW의 API는 서명한 판매 순서로 그것을 표시하고, 메타데이터를 적용하는 것은 121의 기초 점을 사용하여 가용성 교환으로 그것을 상표를 붙입니다. 서명된 금액은 50,432,688.41618 aEthUSDT였습니다. 서명의 최소 구매 값은 324.949260918413591035 aEthAAVE였습니다. 실제 합의는 327.24133555966487788 aEthAAVE를 지불했습니다。
그것은 매우 중요한 세부 사항입니다. 주문은 AAVES의 수천을받을 것으로 예상되지 않았고 그 후 어느 곳에서도 파괴되었습니다. 처음에는 약 300 또는 AAVE를 내장했습니다。
충돌에 대한 완전한 링크
당신이 거래를 따라하면, 전체 프로세스는 잔인하고 straightforward입니다。
최고 수준의 펀드는 CW 계약 0x9008부터 GPv2Settlement 결제 계약에 의존합니다. 첫 번째, HooksTrampoline 계약 시작 0x60bf 완료 aEthUSDT 허가를 허용하기 위해 CW Treasury 반복기 개별 거래 승인없이 사용자의 자산을 추출 할 수 있도록; 그런 다음 GPv2VaultRelayer 계약 시작 0xc92e 사용자의 지갑에서 50432688.41618 aEthUSDT를 추출하고,이 시점의 모든 작업은 일반 논리와 일치합니다。
합의 계약은 0xd524로 시작된 오픈 소스 보조 계약에 aEthUSDT 운영 권한을 부여하고 함수 selector 0x494b3137를 통해 전화를 개시합니다. 보조 계약은 다음 0x699c로 시작하는 오픈 소스 구현자 계약에 강제 권한을 전송합니다. 특정 거래의 경로의 전체 그림이 노출됩니다。
0x87870부터 시작된 Aave 풀 계약에 대한 첫 번째 효과적인 통화는 인출 기능 (옵션 0x69328dec) 및 redeems USDT의 수단으로 aEthUSDT를 파괴, Uniswap V3 깊이 USDTT / WETH 거래 풀, 즉 0x4e68로 이동하고 모든 50432688.41618 USDT를 17957.8808057021422338 WETH로 변환합니다。
이 단계의 거래는 완벽하게 정상이었다 : 환율은 약 2808.4 USDT 에 1 WETH, 시간에 시장 조건으로 일관성, 유동성 문제의 무료이었다, ARITHMETICAL 편차가 없었다, 그리고 첫 번째 점프 체인에 영향을받지 않았다。
문제는 한 번 유동성 예비를 볼 때, 이야기의 나머지는 불가피합니다。
의 인수에 17957.8108057024242238, 모든 펀드는 스시 스왑 V2 AAVE/WETH 거래 풀 주소 0xd75ea151a61d06868e318988d28dfe5d9df57b4。
나는 특정 거래 (블록 24643150의 높이)의 순간에 거래 풀의 역사적인 유동성 데이터를 확인하고 개최 :
331.63 1982년 5381080273 AAVE 17.653276 1963 997688066 지갑
이것은 데이터 입력 오류가 아니지만 철 사실이 아닙니다。
이 거래 경로, 거의 17958 WETHS는 모두에 주사 된 MICRO-TRADING 풀의 주식과 함께 17.65 WETHS, 만 331.63의 AAVE의 총 주식에 해당, 그리고 WETHS의 금액은 약 1017 배의 WETH 예비의 양 풀。
이것은 "높은 슬라이드 포인트"또는 "빛 유동성"의 일상적인 문제를 의미하지는 않지만 시장 목록의 구현에 매우 ABSURD 경로 인 AMM 풀의 매우 작고 일정한 제품을 포괄하는 탄타 마운트가 자체보다 수천 배 더 큰 거대한 거래를 수행 할 수 있습니다。
AMM 거래 풀은 설치 된 알고리즘에 따라 운영되며 풀에 거의 모든 AAVE 예약을 결정했습니다。
스시 스왑 트랜잭션은 코어 스왑 교환 교환을 트리거합니다. 구현자는 17957.810805702142342238 WETH로 전송되며 331.30531568938235428 AAVE 만 반환됩니다. 거래 완료시, 풀의 나머지 유동성은 약:
0.326666929169791895 AAVE, 17975.46418898540030304 무게
솔직히, 풀에서 AAVE 주식의 대략 99.9%는 1개의 점프에서 배수되었습니다。
사전 투과 예약을 기반으로 한 풀은 약 US $ 149.50의 AAVE 가격을 결정했습니다. 사용자의 실제 실행 가격은 약 154,114.66 USDT에서 1 AAVE입니다. 거래 전에 1000 배 이상의 자리가 있습니다。
이 AAVEs는 다음 Aave 기금 풀에 다시 공급, 선택 0x617ba037을 사용하여, subply (adadress, uint256, 조언, uint 16). 결과적으로, 새로 위조 된 aEthAAVE는 합의 계약을 다시 보냈습니다. 합의 계약은 결국 사용자가 327.241335559664878 aEthAAVE를 전송. 약 4.0639801029717764 aEthAAVE는 사용자에 대한 surplus 지불 상대로 합의 계약에 남아。
따라서, 합의는 갑자기 나쁜 것으로 좋은 성능 결과를 찡그림하지 않았다. 긴 생산 된 경로의 최종화의 결과입니다。
그리고 그것은 중요한 점, 그리고 그것은 명확하게 말하는 가치가 있다: catastrophic 결과는 경로 실행의 앞에 미리 설치됩니다。
구매 최종 값은 대략 331.272185078031026739이며, 사용자 서명에 대한 최소 구매 값은 324.94926091841591035이며 실제 결제 금액은 327.24133555966487888이며 모든 핵심 값은 결제 전에 300 AAVES의 순서로 잠겨 있습니다。
이 경로는 나쁘다。
루프홀은 어디에 있습니까
응답은 시스템의 모든 수준에서 검증 메커니즘이 오류의 크기를 확인하는 것입니다。
모든 레벨은 거래가 실행되는지 여부를 확인하며, 서명이 유효하지 않거나 양이 0이 아닌지 여부를 확인합니다경제 수준에서 거래 경로의 유산을 확인하는 작은 핵심 수준이 있습니다。
Aave 인터페이스 어댑터 견적 경로에 대한 코드 결함
Aave 인터페이스의 CW 어댑터 견적 프로세스에서 처음 명백한 코드는 다음과 같습니다. 어댑터의 독점적 인 응용 데이터와 인용을 요청하는 함수는 직접 비활성화됩니다。

근원:미안 해요, 미안 해요·미안 해요
이것은 Aave 공용영역이 CoW에서 인용을 요구한다는 것을 의미합니다실제 주문에 첨부 될 것입니다 번개 및 후크 메타 데이터에 의해 동반하지 않습니다나는 모른다. 다른 말에서, 인용 된 것은 정확히 무슨이 실행되지 않습니다. 보조 함수가 어댑터의 제안을 더 정확하고, 그 함수는 심각하게 비활성화하도록 설계되었습니다。
가격 논리의 CoW Reasonability는 너무 약합니다 (핵심 간격)
두 번째와 가장 심각한 문제는 CoW 프로토콜의 경쟁 논리입니다 : 그것의 공공 서비스 코드에서, 그것은 그것을 만드는 유일한 것은 아닙니다제안이 긍정적이고 영이 아닙니다그것은 "거의 제안"이라고 결정됩니다。

근원:견적 요청:
8 자리 라우팅 시스템의 경우약점입니다"거의 정의"。
이 시스템은 가격의 음질 검증을 위해 prognosis 기계에 액세스 할 필요가 없습니다, 점 가격보다 500 배 이상의 가격 편차에 대한 상호 작용 메커니즘이 없으며 "라우팅은 이동성 풀을 완전히 배수 할 위험이 없다"고 경고가 없다 "이 마지막 이동성은 순서의 크기에 심각한 비례가 될 것입니다"; 만 demanufactor는 실행 가능한, 비 zero 라우터에 반환해야합니다, 시스템은 허용됩니다이 이벤트의 핵심 루프홀입니다。
Uniswap V2의 액체 모델링 논리의 부족
세 번째 문제는 Uniswap V2-style 액체 풀 모델링입니다 : 코드는 표준 일정한 제품 알고리즘을 사용하며, 경제적 타당성의 검증없이 제로 예비, 값 다운, 예비 아웃 등의 수학 수준의 불투명성 만 거부합니다。

근원:홈페이지: 118·flickr 페이지의 사진:153
이 코드는 액체 풀 볼륨이 해당 루트 트랜잭션을 수행하는 것이 충분하다고 판단하지 않지만 교환 작업이 수학적으로 효과적인지 여부를 판단하지 않습니다. 따라서, 331 AAVES의 주식을 가진 작은 수영장은 17957 WETHS를 통해 가지고 가는 유효한 위치의 CONVICTED, 자산의 DEVASTATING 손실 없이 일정한 MULTIPLIER 산법에 의해 산출될 수 있었습니다。
FLASH 대출, SDK 및 주문 검증 메커니즘의 이차 실패
SUBSEQUENTLY, FMC SDK는 주문 및 후크의 성능 부하에 직접 잘못된 제안을 고정, 어떤 보조 위험 차단없이。

다음 :

근원:나는 모른다·나는 이것을 할 수있을거야
이 루트가 "생하고 나쁜"라고 말하는 이유입니다. 접합기 층정말새로운 나쁜 금액은 구현 당시 발견되었습니다. 그것은 ..인용 된 나쁜 양의 훅 데이터 및 식별 된 케이스 주소 매체나는 모른다. 나쁜 제안이 존재하면 나머지 메커니즘은 충실히 전달됩니다。
COW의 주문 검증 논리도 여기에 있습니다진짜 사용자 보호 없음이것은 단지 순서가 제안의 시간에 시장 가격을 초과하는지 검사하기 때문에, 제안 자체가 실제적인 유동성과 관계에 있는 absurd。

근원:주문 validation.rs: 694
그것은 일관성 검사입니다。제안 자체가 이미 제작 된 경우, 주문은 여전히 만들 수 있습니다。
UI 프런트 엔드 조기 경고 메커니즘은 죽은 끝입니다
Aave는 인터페이스에 높은 가격 충격 경고가 있지만 ..그것은 엄밀한 융해 스위치가 아닙니다나는 모른다. 값 손실이 20 %를 초과하면 확인 체크 박스가됩니다。

사용자가 체크 박스를 틱하면 장벽이 제거됩니다

근원:현재 위치: 24·높은 가격ImpactWarning.tsx:35
트랜잭션이 자산의 전체 가치를 비우기 위해 닫을 경우에도 시스템은 사용자가 식별 된 작업으로만 자격이되므로 시스템이 강력하게 거부해야 할 고위험 거래보다는 시스템의 위험 차단 기능 altogether를 잃게됩니다。
위에서 언급 한 모든 실패의 기초에, 나는 "그것은 단지 사용자가 어려워하는 것이 아니라 pretentious 결론에 동의하지 않는다. 사용자는 서명을 완료했지만, 재난을 막기 위해 전체 소프트웨어 시스템에 대한 몇 가지 기회가 있었지만, 각 층은 기본 검사에만 적용되었으며, 궁극적 인 결과와 "non-zero, 집행 가능한, 서명"결정 후 직접 출시되었습니다。
노선이 변경되지 않았습니다
이 링크는 중요 하 고 직접적으로 거짓 speculations의 수를 precludes: Aave-v3-interface-collar-swap 공식 인터페이스 프로세스, 이는 useSwapOrderAmounts.ts 문서의 라인 139에 슬라이드 포인트 조정의 값을 계산, 가격 인용과 함께, 네트워크 수수료, 파트너 수수료, 플래시 대출 요금; 라인 331는 buyAmountBigInt 값으로 변환; 그리고 그 후, CollateralSwapSwaps.Vada.Vada. tsx 문서, 금액의 정확한 서명이 완료됩니다。
Successor 어댑터 계약은 AaveV3BaseAdapter.sol 파일의 라인 141에있을 것입니다. 서명 주문 필드의 검증은 저장 된 값과 완벽하게 일치하며 CoW 결제 계약은 GPv2Settlement의 337 라인에있을 것입니다. sol 문서, 서명에 동의한 제한 규칙을 위해. 따라서, 체인 실행 결과는 서명 명령에 의해 허용되는 것을 넘어 갈 수 없으며, 사용자가 실제로 수신 한 자산은 서명에 동의하는 최소 임계 값 이상입니다。
이 재해가 합의 과정에서 발생하기 전에 발생 한 충분한 증거이며, 경로의 지방 결함이 길어졌습니다。
누락된 값은 어디에 있습니까
같은 블록의 다음 거래 (Hashi 0x45388/b0f로 시작)은 손상된 SushiSwap AAVE/WETH 풀에 완료되었습니다. 특별한 거래가 WETH의 거대한 금액을 채우고, AAVE의 광대한 대다수가 배수되었습니다. arbitragers는 즉시 풀로 AAVE를 판매했습니다。
이 RUNOFF ARBITRAGE는 17929.77015885933 WETH에 대해 추출 한 다음 블록 빌더에 약 13087.73 ETH를 지불하고 약 4824.31 ETH는 ARBITRAGE 실행 주소입니다。
사용자가 잃은 전체 경제 가치는 결국 MEV ARBITRAGE로 거의 즉시 번역하고 블록 빌더는 동일한 블록 내에서 이익을 얻습니다。
또한, 검증 블록 시간 시리즈는 트랜잭션 이전에 SushiSwap 거래 풀의 악의적 조작이 없다는 것을 확인합니다. AAVE / WETH 거래가 처음 접혔습니다. 즉,이 특이한 거래 (거래 인덱스 1); 다음 거래는 즉시 (거래 인덱스 2)가 거래에 기인하는 가격 왜곡에 대한 첫 번째 runback을 완료합니다. 그리고 거래 인덱스 3는 시장 복원 중 거래 쌍을 접촉합니다. Timelines는 명확하게이 특이한 거래는 극단적 인 가격 왜곡을 생성하고 그 후속 거래는 직접이 왜곡을 캡처。
그래서 그 결함은
코어 프로토콜이 충돌하면 Aave V3를 요청하면 답변은 다음과 같습니다없음나는 모른다. Aave의 풀은 지침에 따라 완전히 운영되며 일반적으로 USDT 이클로저 및 AAVE 입금 프로세스를 완료합니다。
계약이 붕괴되면 COW를 요청하면 답변은 다음과 같습니다없음나는 모른다. 결제는 유효한 서명 순서를 시행하고 서명의 최소 금액보다 더 지불。
Uniswap V3 또는 SushiSwap 거래가 추락되는지 묻는 경우, 답변은 동일합니다없음나는 모른다. 두 유형의 풀은 자신의 알고리즘 규칙에 따라 거래 가격을 완료합니다。
실제적인 체계적인 실패는 노선과 바람 통제의 더 높은 수준에서 일어났습니다:
주요 책임 당에 의해 CW 의정서를 위한 노선, 인용 및 해결자 단위전체 시스템의 표준을 결정하는 “지역 경로” 너무 약합니다, 을 허용하는 10의 수백만의 미국 달러 큰 주문에 배치하고 결국 마이크로, 낮은 이동성 풀에 흐를 수 있도록, 경로가 실행 가능한 및 비-제로, 경제 차원의 극단적 인 식량에 대한 완전한 disregard와 함께。
이차적 인 파티는 Aave Noodles의 프론트 라인입니다: 어댑터 견적 요청은 후크 링크드 응용 데이터없이 이루어집니다. 오류의 결과는 서명 프로세스로 직접 전달되며 조기 경고 경고 경고, 엄밀한 거부 메커니즘을 기반으로합니다. 이러한 매우 큰 거래를 위해 그러한 통제는 위험에 대해 보호하는 것이 충분하지 않습니다。
그것은 무역 노선의 질의 극단적인 실패 및 바람 담의 극단적인 성격은, 직접 자산의 devastating 손실에 법적으로 고분고분한 담보를 자전했습니다。
