Cointime

Download App
iOS & Android

MEV 공격에 들어가 해커가 메자닌 기술을 통해 막대한 이익을 얻는 방법을 확인하십시오.

Validated Individual Expert

저자: Immunefi 편집: Cointime.com QDD

소개

블록체인 공간에서의 착취 행위는 점점 더 정교해지고 있습니다.

과거에는 스마트 계약 개발자와 감사인이 주로 단일 거래 내에서 악용으로부터 스마트 계약을 보호하는 방법을 고려해야 했습니다. 그러나 이제는 여러 트랜잭션에서 발생하는 공격을 보는 것이 점점 일반화되고 있습니다.

또한 해커는 막대한 이익을 추구하기 위해 점점 더 개인 자금을 위험에 빠뜨리는 공격을 가하고 있습니다.

바로 지난주 해커가 Rodeo Finance를 공격하여 50 ETH(약 $96,000)를 위험에 빠뜨려 약 $890,000 상당의 약 472 ETH의 이익을 챙겼습니다. 이와 같은 사례는 "공격 비용"이 효과적인 보안 억지력이 아니며 자체 보호를 위해 높은 공격 비용에 의존하는 모든 프로토콜이 해당 전략을 재고해야 한다는 원칙을 강화합니다.

이 기사에서는 해커가 MEV를 사용하여 취약한 프로토콜을 공격하는 일반적인 방법 중 하나를 설명합니다. 또한 PoC(Proof of Concept)를 버그 헌터로 사용하여 MEV 공격 벡터를 제대로 시연하는 방법도 설명합니다.

MEV란 무엇입니까?

MEV(채굴자 추출 가능 가치 또는 최대 추출 가능 가치)는 채굴자가 채굴되기 전에 블록에서 트랜잭션을 제외, 포함 및 주문할 수 있도록 합니다. 이것은 이더리움 합병의 결과로 상당히 바뀌었고, 이 트랜잭션 주문 역할이 네트워크의 유효성 검사기로 이동했습니다. 그러나 이것에도 불구하고 MEV 공격 벡터는 여전히 블록체인 공간에서 일반적이고 관련성이 있습니다.

공격자는 다양한 방법으로 MEV를 사용할 수 있습니다. 우리는 피해자의 교환 거래를 사전 및 사후 교환함으로써 달성되는 "메자닌 공격"으로 알려진 것을 시연할 것입니다.

전주곡(프론트러닝)

Prelude는 공격자가 피해자의 트랜잭션보다 먼저 자신의 트랜잭션을 제출하여 공격자의 트랜잭션이 먼저 실행되도록 하는 기술입니다. 이는 악의적인 거래의 가스 가격을 높여 가스 요금이 낮은 피해자 거래보다 우선 순위를 정함으로써 이루어질 수 있습니다.

백런닝

포스트 플레이는 공격자가 피해자의 트랜잭션 실행 후 악의적인 트랜잭션을 배치하는 기술입니다. 공격자는 악의적인 트랜잭션의 가스 가격을 낮춤으로써 이를 수행할 수 있습니다. 이렇게 하면 피해자 거래가 낙진 거래보다 우선합니다.

메자닌 공격

메자닌 공격 시나리오에서 공격자는 악용하려는 대상 트랜잭션에 대한 트랜잭션 풀(보류 중인 트랜잭션 목록)을 모니터링합니다. 일단 대상을 지정하면 속을 채운 샌드위치처럼 두 개의 트랜잭션(대상 트랜잭션 전과 후)을 제출합니다. 이 메자닌의 목적은 공격자에게 유리하게 대상 트랜잭션의 실행 또는 결과를 조작하는 것입니다.

공격자는 앞 절에서 언급한 방법을 사용하여 피해자 트랜잭션보다 가스비가 높고 낮은 트랜잭션 2개를 제출하여 성공적으로 메자닌 공격을 실행합니다. 또는 거래 주문을 유료로 보장하는 전문 RPC 공급자를 통해 거래 번들을 제출할 수 있습니다.

이러한 유형의 공격은 DeFi 생태계에서 특히 문제가 될 수 있습니다. 토큰, 유동성 풀 또는 탈중앙화 거래소와 관련된 거래는 거래 주문에 매우 취약하기 때문입니다. 이러한 경우 공격자의 목표는 종종 자산 가격을 조작하거나 차익 거래 기회를 통해 이익을 얻거나 개인 이익을 위해 프로토콜의 다른 취약성을 악용하는 것입니다.

MEV 공격 테스트 방법

이러한 유형의 공격은 DeFi 생태계에서 특히 문제가 될 수 있습니다. 토큰, 유동성 풀 또는 탈중앙화 거래소와 관련된 거래는 거래 주문에 매우 취약하기 때문입니다. 이러한 경우 공격자의 목표는 종종 자산 가격을 조작하거나 차익 거래 기회를 통해 이익을 얻거나 개인 이익을 위해 프로토콜의 다른 취약성을 악용하는 것입니다.

MEV 공격 테스트 방법

MEV 공격을 시연하는 PoC를 생성하기 위해 Hardhat 및 Forge와 같은 도구를 사용하여 블록체인의 로컬 포크를 생성할 수 있습니다.

이 두 테스트 간의 결정론적 결과를 보여주기 위해 이 Github gist를 통해 액세스할 수 있는 동일한 공격자 계약을 사용합니다.

이 데모에서는 피해자가 의도적으로 UniswapV2에서 WETH에서 USDC로 스왑 트랜잭션을 호출하도록 하고 최소 금액은 0으로 설정합니다. 이 트랜잭션을 메자닌 공격에 취약하게 만드는 취약점은 최소 금액을 0으로 설정하여 피해자가 0 USDC 또는 99% 슬리피지만 받더라도 트랜잭션이 롤백되지 않는다는 것입니다. 그렇기 때문에 최소 금액을 설정하는 것이 중요합니다.

안전모

Hardhat은 개발자가 JavaScript/TypeScript를 사용하여 스마트 계약과 상호 작용할 수 있도록 하는 스마트 계약 개발용 프레임워크입니다. Forge(최신 프레임워크) 이전에는 대부분의 화이트 햇 해커가 Hardhat을 사용하여 블록체인을 포크하여 PoC를 만들었습니다.

편리하게도 Hardhat은 트랜잭션이 완료되기 전에 우리가 호출하는 트랜잭션이 트랜잭션 풀에 집계될 수 있도록 트랜잭션을 종료 상태로 유지하는 메커니즘을 이미 제공합니다.

단계별 안내:

l 컴퓨터에 Hardhat을 설치했는지 확인하십시오( https://github.com/NomicFoundation/hardhat ).

l 간단한 안전모 프로젝트 생성

l mkdir MEV-poc

l cd MEV-poc

l 원사는 안전모를 추가

l npx 안전모 초기화

l 계약을 공격자 계약으로 변경합니다.

l 스크립트 폴더의 파일을 sandwichAttack.js로 변경 https://gist.github.com/GibranAkbaromiL/05020630475f4f2599f72b47e52c7949#file-sandwichattack-js

l npx hardhat run scripts/sandwichAttack.js 실행

산출:

Forge는 Solidity 스크립트를 사용하여 블록체인을 테스트, 배포 및 상호 작용할 수 있는 스마트 계약 개발 도구 체인입니다. 이를 통해 테스트 파일에서 트랜잭션을 주문함으로써만 MEV 공격을 시연할 수 있습니다.

단계별 안내:

Forge는 Solidity 스크립트를 사용하여 블록체인을 테스트, 배포 및 상호 작용할 수 있는 스마트 계약 개발 도구 체인입니다. 이를 통해 테스트 파일에서 트랜잭션을 주문함으로써만 MEV 공격을 시연할 수 있습니다.

단계별 안내:

l 컴퓨터에 Forge를 설치했는지 확인합니다( https://book.getfoundry.sh/getting-started/installation ).

l 간단한 forge 프로젝트를 만듭니다.

l mkdir MEV-poc

l cd MEV-poc

l 위조 초기화

l src 폴더의 계약을 공격자 계약으로 변경합니다.

l 테스트 폴더의 테스트 파일을 Sandwich.t.sol로 변경합니다. https://gist.github.com/GibranAkbaromiL/05020630475f4f2599f72b47e52c7949#file-sandwich-t-sol

산출:

이 두 가지 테스트 사례를 통해 Hardhat 및 Forge를 사용한 MEV 메자닌 공격을 성공적으로 시연했습니다. 테스트 케이스의 출력에서 ​​공격자와 피해자 모두의 초기 잔고가 1000 WETH임을 알 수 있으며, 공격자는 피해자의 전주곡과 애프터플레이를 성공적으로 교환하여 공격자에게 약 123 WETH의 이익이 발생했음을 알 수 있습니다. 피해자는 USDC를 적게 받습니다.

우리가 배운 것

보안 연구에서 가장 중요한 부분 중 하나는 발견한 잠재적 취약성을 기반으로 PoC를 만드는 것입니다. 왜 그렇게 중요합니까? 잠재적인 취약점을 식별하는 것만으로는 공격이 효과적이지 않기 때문입니다. 공격이 작동하는지 확인할 수 있는 유일한 방법은 식별된 각 취약성에 대해 개별적으로 생성되어야 하는 PoC를 생성하는 것입니다.

우리는 MEV가 발생할 수 있는 많은 공격 벡터 중 하나만 논의했으며 연구원으로서 발견한 실제 공격 시나리오는 여기에 제시된 것과 크게 다를 수 있습니다. 위의 예에서는 가장 일반적인 벡터 중 하나인 슬리피지 보호 기능이 없는 스왑 샌드위치 공격만 다루었습니다. 기술을 테스트하고 다른 공격 벡터를 복제하려는 경우 NFT Minting Prelude , Off-Chain Word Machine Price Update Prelude 및 JIT(Instant) 유동성 도 참조하십시오.

이것이 이 기사의 전부입니다. 여기에서 몇 분을 보내어 새로운 이해를 얻거나 기존 지식을 강화하시기 바랍니다. 계속해서 버그를 찾고 배움을 멈추지 마십시오. 매일 새로운 익스플로잇과 취약점이 발견되기를 기다리고 있기 때문에 열심히 일하는 화이트 햇 해커에게는 보상과 기회가 부족하지 않습니다.

댓글

모든 댓글

Recommended for you