플래시론에 대한 종합적인 해석: 플래시 공격이 뉴 노멀이 되는 이유는 무엇입니까?
편집자 주: 이 기사의 출처는체인뉴스(ID: chainnewscom)편집자 주: 이 기사의 출처는
체인뉴스(ID: chainnewscom)
, 저자: 암호화폐 벤처 캐피털 기관인 Dragonfly Capital의 관리 파트너인 Haseeb Qureshi가 Odaily의 승인을 받아 재인쇄되었습니다.
플래시론(Flash Loan)이 최근 해외에서도 뜨거운 관심을 받고 있다. 2명의 해커가 플래시론을 이용해 마진거래 약정 bZx를 공격했는데, 1차 차익거래 금액은 35만 달러였으며, 이후 60만 달러의 차익거래 금액으로 레플리카 공격을 감행했다.
이러한 공격을 한 단어로 설명한다면 "멋지다"는 표현이 될 것입니다. 각 공격에서 무일푼 해커는 수십만 달러 상당의 ETH를 빌려주고 일련의 온체인 프로토콜 허점을 분산시켜 단일 작업을 수행하고 도난당한 자산에서 수십만 달러를 인출하고 성공적으로 차단했습니다. ETH 대출 구멍. 이 모든 것은 즉각적으로, 즉 하나의 이더리움 블록에서 이루어집니다.
이미지 설명
공격자가 누구인지, 어디에 있는지 알 수 없습니다. 둘 다 빈손의 늑대였고, 그들의 신분을 전혀 남기지 않은 채 공격으로 수십만 달러를 벌어들였다.
이러한 공격에 대한 뉴스가 처음 나왔을 때 저는 플래시 론과 DeFi의 보안 문제에 대해 신중하게 생각하고 있었습니다. 이 질문은 공개적으로 논의할 가치가 있다고 생각합니다.
제 생각을 간단히 말씀드리자면, 저는 플래시 론이 상당한 보안 위협을 제공한다고 생각합니다. 그러나 플래시론은 사라지지 않을 것이며, 향후 DeFi 보안에 미치는 영향을 심각하게 고려해야 합니다.
보조 제목
플래시론이란?
플래시 론의 개념은 2018년 마블 프로토콜에서 처음 제안되었습니다. Marble은 스스로를 "스마트 계약 은행"이라고 부르며 제품은 간단하지만 스마트한 DeFi 혁신입니다. 스마트 계약을 통해 무위험 대출이 완료됩니다.
어떻게 대출이 위험하지 않을 수 있습니까?
전통적인 신용 기관은 돈을 빌려줄 때 두 가지 위험에 직면합니다. 첫 번째는 불이행의 위험입니다. 대출 기관이 돈을 포기하면 신용 기관이 어려움을 겪을 것입니다. 그러나 두 번째는 유동성 위험입니다. 대출 기관이 잘못된 시기에 너무 많은 대출을 하거나 대출자가 제때 상환하지 않으면 대출 기관은 예기치 않게 유동성 압박에 직면하여 의무를 이행하지 못할 수 있습니다.
플래시론은 이러한 전통적인 대출 위험을 모두 완화합니다. 플래시론의 기본 작동 원리는 한 번의 거래로 대출자가 필요한 금액을 대출하는 것입니다. 그러나 거래가 종료될 때 차용인은 대출 금액 이상을 상환해야 합니다. 차용인이 할 수 없는 경우 대출 기관은 거래를 자동으로 롤백합니다. (예, 스마트 계약이 그렇게 할 수 있습니다!)
간단히 말해서, 플래시론은 자동으로 이루어집니다. 차용인이 대출금을 상환하지 못하면 대출이 전혀 발생하지 않은 것처럼 전체 거래가 롤백됩니다.
이와 같은 일은 블록체인에서만 일어날 수 있습니다. 예를 들어 BitMEX 거래소에서는 플래시 대출을 할 수 없습니다. 스마트 계약 플랫폼은 거래를 한 번에 처리하기 때문에 거래의 모든 요소는 일괄적으로 실행됩니다. 트랜잭션이 실행될 때 트랜잭션의 "정지 시간"으로 생각하십시오. 중앙 집중식 거래소에서는 치열한 경쟁이 있을 수 있으며 이로 인해 일부 거래가 실패할 수 있으며, 블록체인에서는 모든 코드가 한 줄씩 실행된다는 것을 보장할 수 있습니다.
플래시론은 다릅니다. 플래시론 금리에 리스크도 없고, 기회비용도 없습니다! 차용인은 플래시 대출 프로세스 중에 "시간을 동결"하기 때문에 시스템의 자금은 다른 사람의 눈에 결코 위험에 처하거나 차단되지 않으므로 이자를 받지 않습니다(예: 기회 비용이 없음).
즉, 플래시 대출 기관이 되는 데 비용이 전혀 들지 않는 것처럼 느껴집니다. 이것은 직관에 반하는 것입니다. 그렇다면 균형 상태에서 플래시론의 비용은 얼마여야 할까요?
기본적으로 플래시론은 비용이 무료여야 합니다. 또는 더 정확하게는 자산을 대출 가능하게 만들기 위해 추가된 세 줄의 코드를 보상하는 소액의 수수료입니다.
작성자: Remco Bloemen, 0x 개발자
플래시 대출은 대출 기간이 0(APR * 0 = 0)이기 때문에 전통적인 의미에서 이자를 부과할 수 없습니다. 물론 어떤 대출 기관이 더 높은 이자를 부과하면 더 낮은 이율을 가진 다른 경쟁자들에게 압도 당할 것입니다.
플래시 대출은 돈을 실제 상품으로 만듭니다. 이러한 종류의 경쟁은 필연적으로 비용을 0으로 낮추거나 결국 아주 적은 금액으로 만듭니다. dYdX는 현재 번개 대출 수수료가 0입니다. 그리고 AAVE는 원금의 0.09%를 이자로 청구합니다. 나는 이것이 지속될 것으로 기대하지 않습니다. 사실 AAVE 커뮤니티는 0 관심을 요구하기 시작했습니다. (앞서 언급한 두 가지 해킹 중 어느 것도 AAVE에서 플래시 론을 받는 것을 선택하지 않았습니다.)
보조 제목
Flash Loan의 초기 마케팅 레이블은 주로 차익 거래용이었습니다. Marble의 데뷔 성명서는 다음과 같이 말했습니다.
"Flash Loan은 트레이더가 Marble Bank에서 대출을 받고 탈중앙화 거래소 DEX에서 토큰을 구입한 다음 다른 DEX에서 더 높은 가격에 토큰을 판매하도록 도울 수 있습니다. 자동화된 거래를 통해 재정 거래 수입을 얻을 수 있습니다."
그리고 그것이 현실입니다. 지금까지 우리가 본 대부분의 플래시 대출은 이러한 유형의 차익 거래에 사용되었습니다.
이미지 설명
AAVE의 플래시론 사용, 출처: AAVE
그러나 그 양은 여전히 작습니다. AAVE는 설립 이후 10,000달러가 조금 넘는 플래시 론을 발행했습니다. 차익 거래 규모와 DeFi 시장의 유동성에 비하면 미미한 수준입니다.
이것은 주로 대부분의 차익 거래가 정교한 봇을 실행하는 경쟁 차익 거래자에 의해 수행되기 때문입니다. 그들은 온체인 우선 가스 경매를 수행한 다음 GasToken을 사용하여 거래 수수료를 최적화합니다. 이 시장은 매우 경쟁적이며 수익을 최적화하기 위해 일부 토큰을 책에 보관하는 것을 기쁘게 생각합니다.
반면 AAVE에서 차입하는 비용은 약 80,000가스에 원금의 0.09%를 부과하는데 이는 빈약한 수익으로 차익거래 경쟁을 하기에는 너무 높은 수준이다. 실제로 대부분의 AAVE 차익 거래에서 차용인은 차익 거래 수입보다 대출 풀에 더 많은 수수료를 지불합니다.
밝혀진 바와 같이, DeFi에는 플래시 론에 대한 더 강력한 다른 사용 사례가 있습니다. 예를 들어 대출을 재융자하는 경우입니다. 예를 들어, $100의 ETH가 고정된 메이커 CDP(Collateralized Debt Position)가 있고 그로부터 40 DAI의 대출을 받았으므로 부채를 뺀 후 CDP의 순 포지션은 60달러입니다. . 더 높은 이자율에 대한 대가로 재융자하고 이를 Compound에 넣고 싶다고 가정해 보겠습니다. 일반적으로 CDP를 마감하기 위해 40 DAI를 다시 구매해야 하는데, 여기에는 약간의 선불 자금이 필요합니다. 대신 플래시론으로 40 DAI를 빌려 CDP를 닫고, 잠금 해제된 ETH 60달러를 컴파운드에 예치하고, 나머지 40달러를 유니스왑을 통해 DAI로 다시 전환하고 플래시론을 상환하는 데 사용할 수 있습니다. 올인원 자동화된 제로 비용 재융자.
이거 엄청나 네! 이것은 직장에서 Capital Lego의 좋은 예입니다. 1x.ag는 실제로 이러한 거래를 자동으로 실현하기 위해 플래시 론을 사용하여 마진 거래 집계 애플리케이션을 구축했습니다.
멋지지만 bZx 공격자는 플래시 대출이 얼마나 많은 피해를 줄 수 있는지 보여줍니다.
보조 제목
보안을 위한 번개 공격의 중요성
나는 플래시론이 실제로 잠금을 해제하는 것이 라이트닝 공격, 즉 플래시론을 사용하여 높은 가치의 공격을 수행하는 것이라고 점점 더 믿고 있습니다. 최근의 bZx 해킹은 우리에게 약간의 정보를 제공했으며 이것이 시작에 불과하다고 생각합니다.
플래시론이 공격자의 무기가 된 이유는 무엇입니까? 두 가지 주요 이유가 있습니다.
많은 해킹에는 많은 양의 초기 자본(예: Oracle 코인 가격 조작)이 필요합니다. 1,000만 달러의 ETH가 긍정적인 수익을 내고 있다면 차익 거래가 아니어야 합니다.
단기 대출은 공격자의 오염을 최소화할 수 있습니다. 1,000만 달러의 ETH로 오라클 코인을 조작할 수 있는 아이디어가 있다면, 그렇게 많은 ETH를 가지고 있어도 내 자금을 위험에 빠뜨리고 싶지 않을 것입니다. 내 ETH가 오염될 수 있고, 거래소에서 내 예치금을 거부할 수 있으며, 자금세탁의 난이도가 크게 높아집니다. 위험한! 하지만 플래시 론으로 1000만 달러를 인출해도 누가 신경 쓰겠습니까? 모든 당사자가 혜택을 볼 것입니다. 내 대출 소스 - dYdX의 담보 풀은 오염되지 않을 것이며, dYdX의 오염은 어느 정도 사라졌습니다.
마음에 들지 않을 수도 있지만 거래소 검열은 요즘 블록체인 보안 모델의 일부입니다. 꽤 모호하고 중앙 집중식입니다. 하지만 플래시론은 본질적으로 공격자의 위험을 변화시킨다고 생각합니다. 비트코인 백서에서 Satoshi Nakamoto는 다음과 같은 유명한 선언을 발표했습니다. 비트코인은 다음과 같은 이유로 보안 공격을 받지 않을 것입니다.
"[공격자는] 자신의 자산을 파괴하는 시스템을 파괴하는 것보다 규칙에 따라 플레이하는 것이 더 유익하다는 것을 알아야 합니다."
Flash Loan에서 공격자는 Flash Loan 게임에 관심이 없습니다. 플래시론은 근본적으로 공격자의 위험을 변화시킵니다.
물론 공격자는 많은 돈으로 이러한 프로토콜을 공격할 수 없습니다. 모든 DeFi 스택이 주장하는 것처럼 안전하다면 문제가 되지 않습니다. 어떤 프로토콜이 부유한 고래에 대해 안전하지 않습니까? 그러한 계약이 그것을 고려하지 않고 단지 태만하다고 주장할 수 있습니다.
그러나 Ethereum 자체는 시간당 $200,000 미만으로 51% 공격**을 받을 수 있다고 주장합니다. 이 금액은 그리 크지 않습니다! 이더리움의 자체 보안 모델이 적은 돈으로만 공격자로부터 보호할 수 있다면, 1000만 달러 규모의 공격을 막을 수 없는 DeFi 애플리케이션에 왜 그렇게 가혹해야 합니까?
(**정확히 말씀드리자면 저는 개인적으로 ETH 부족 등의 영향을 무시한 이 숫자를 믿지 않지만 일련의 생각을 보여줍니다.)
보조 제목
번개 공격을 늦추는 방법?
귀하가 파생 상품 플랫폼이고 낙뢰 공격을 피하고 싶다고 가정해 보십시오. 거래하는 사용자가 플래시론을 사용하고 있는지 감지할 수 있습니까?
간단한 대답은 할 수 없다는 것입니다.
Ethereum의 EVM이 설계된 방식은 다른 계약에서 스토리지를 읽을 수 없도록 합니다. 따라서 다른 계약에서 무슨 일이 있었는지 알고 싶다면 해당 계약에서만 알 수 있습니다. 고객이 플래시론 계약을 사용하고 있는지 알고 싶다면 해당 플래시론 계약에 대해 문의해야 합니다. 현재의 많은 대출 프로토콜은 이러한 쿼리에 응답할 수 없습니다(일반적으로 플래시 대출 기관이 그렇게 하도록 강제할 방법이 없습니다).
파생 상품 플랫폼이 알려진 플래시 대출 프로토콜을 확인하려고 시도하더라도 프로토콜 플랫폼이 프록시 계약 또는 플래시 대출 프로토콜을 통한 링크를 사용하는 경우 이러한 쿼리가 오도되기 쉽습니다. 사용자가 플래시론을 사용하고 있는지 여부를 알 수 없는 경우가 많습니다.
단 1초 만에 누군가가 1000만 달러를 가지고 당신의 거래 플랫폼 문을 두드리려고 한다면, 그것이 자기 자금인지 플래시론인지 판단하는 것은 불가능합니다.
따라서 번개 공격으로부터 보호해야 합니다. 실제 옵션은 무엇입니까? 세 가지 방법을 생각할 수 있습니다.
이 서비스 제공을 중단하도록 플래시 대출 프로토콜을 설득합니다.
농담이야. 여러분, 여기는 암호화폐 세계입니다!
진지하게 말해서 대출 풀이 플래시 대출 제공을 중단하도록 시도하는 것은 공공 영역의 고전적인 비극인 소음 공해를 중단하려는 것과 같습니다. 플래시 론을 제공하는 것은 각 프로토콜의 이익이며 사용자는 이 기능을 사용하고자 하는 정당한 이유가 있습니다. 따라서 이 옵션을 안전하게 제거할 수 있습니다. 플래시론은 사라지지 않습니다.
중요한 트랜잭션이 두 블록에 걸쳐 있도록 강제
플래시론을 사용하면 단일 거래 시간 내에 자본을 빌릴 수 있습니다. 자본 집약적인 트랜잭션이 최소 두 블록에 걸쳐 있어야 하고 사용자가 최소 두 블록 시간 동안 대출을 인출해야 하는 경우 번개 공격이 불가능해집니다. (참고: 이것이 작동하려면 사용자 가치가 대출금 상환을 방지하기 위해 두 블록 사이에 잠겨 있어야 합니다. 올바르게 설계하지 않으면 사용자가 블록 사이에서 공격할 수 있습니다.)
분명히 이것은 사용자 경험의 상당한 희생으로 수행됩니다. 이는 커밋/공개 체계와 마찬가지로 트랜잭션이 더 이상 동기적이지 않음을 의미합니다. 사용자 경험이 형편없고 신중한 고려가 필요합니다.
많은 개발자들이 Layer 2 또는 Ethereum 2.0의 교차 샤드 통신 프로토콜과의 상호 작용과 같은 스마트 계약의 비동기 작업에 대해 불평합니다. 아이러니하게도 비동기성은 이러한 시스템을 번개 공격으로부터 더 안전하게 만듭니다. 공격자는 자동 트랜잭션에서 메인 체인과 레이어 2 또는 샤드의 작업을 동기화할 수 없기 때문입니다. 즉, ETH 2.0 샤드 또는 레이어 2 DEX는 번개 공격을 받지 않습니다.
플래시 론을 완료한 후 사용자의 계정 잔액이 변경되지 않았음을 증명하려면 온체인 증명이 필요합니다.
사용자의 실제 잔액(즉, 대출을 받기 전과 상환 후의 잔액)을 감지할 수 있는 방법이 있다면 번개 공격을 물리칠 수 있습니다.
기본 EVM 메커니즘에서는 이를 수행할 수 있는 방법이 없지만 수정할 수 있습니다. 당신이 하는 일은: 사용자가 당신의 프로토콜과 상호 작용하기 전에, 이전 블록이 끝날 때 현재 사용 중인 자금을 상환하기에 충분한 잔액이 있다는 Merkle 증명을 제공하도록 요구합니다. 모든 블록의 모든 사용자에 대해 이를 추적해야 합니다. (나에게 이 접근법을 설명해준 코넬 대학의 Ari Juels 교수에게 감사한다)
이 접근법은 어느 정도 효과가 있습니다. 물론 여전히 매우 거칠고 몇 가지 문제가 있습니다. 이러한 온체인 증명을 검증하는 것은 온체인에서 매우 비용이 많이 들고 정상적인 생각을 하는 사용자는 그러한 증명을 제공하고 전체 프로세스에 대한 가스 요금을 지불하기를 원하지 않을 것입니다. 또한 사용자는 마지막 블록에서 잔액을 조정해야 하는 합법적이고 합리적인 이유가 있을 수 있습니다. 따라서 이 접근 방식은 이론적으로는 작동하지만 실행 가능한 솔루션은 아닙니다.
분명히 위에 나열된 세 가지 솔루션 중 어느 것도 이상적이지 않습니다. 나는 번개 공격에 대한 진짜 좋은 해결책이 없다고 생각합니다. 그러나 느린 번개 공격을 수행하는 두 가지 특정 응용 프로그램이 있습니다. 바로 시장 가격 오라클과 거버넌스 토큰입니다.
온체인 거버넌스는 일련의 골칫거리를 가져올 것입니다. 온체인 거버넌스는 일반적으로 거버넌스 토큰 보유자의 가중치 투표에 의해 결정됩니다. 그러나이 거버넌스 토큰이 대출 풀에 들어가면 공격자는 많은 표를 훔쳐 원하는 결과를 얻을 수 있습니다.
물론 대부분의 거버넌스 프로토콜은 투표 중에 이러한 거버넌스 토큰을 잠그도록 요구하므로 번개 공격을 쓸모 없게 만듭니다. 그러나 이것은 "Carbon Vote" 및 Maker의 경영진 투표와 같은 일부 거버넌스 프로토콜의 경우에는 해당되지 않습니다. 번개 공격의 그림자 아래에서 이러한 거버넌스 메커니즘은 전적으로 손상될 수 있습니다.
이상적으로는 거버넌스 토큰이 플래시 론 풀에 들어가는 것을 원하지 않습니다. 그러나 이것은 코인 발행자가 결정하는 것이 아니라 시장이 결정합니다. 따라서 모든 거버넌스 조치에는 낙뢰를 방지하기 위해 토큰 잠금 기간이 필요합니다. 더 중요한 것은 모든 거버넌스 토큰에 타임록이 있어야 한다는 것입니다. Timelock은 모든 실행 결정이 적용되기 전에 대기 기간을 갖도록 강제합니다. (예: Compound의 타임록은 2일입니다). 이 메커니즘을 통해 시스템은 예기치 않은 거버넌스 공격의 경우 내결함성 시간을 가질 수 있습니다. MKR은 현재 플래시 론 풀에서 대부분 제외되어 있지만 최근 MakerDAO가 이러한 공격에 취약하다는 주장이 제기되었습니다. MakerDAO는 현재 이 문제를 신속히 해결하고 있습니다.
보조 제목
이것들의 심오한 의미는 무엇입니까?
bZx 공격으로 상황이 완전히 바뀌었다고 생각합니다.
이것은 마지막 번개 공격 사건이 아닙니다. 두 번째 bZx 공격은 첫 번째 공격의 복제본일 뿐이며 앞으로 몇 달 안에 유사한 공격의 또 다른 물결이 있을 것으로 예상됩니다. 이제 전 세계 구석구석에 수천 명의 영리한 십대들이 이 모든 DeFi 레고를 자세히 살펴보고, 현미경으로 허점을 찾고, 번개 공격을 시작하는 방법을 알아내려고 노력하고 있습니다. 그들은 또한 단일 취약점을 악용할 경우 수십만 달러를 벌어들입니다. 이는 전 세계 대부분의 삶을 바꾸는 금액입니다.
결국 이 사건들은 암호화폐 세계의 고대 개념인 MEV(Miner Extractable Value)에 대해 생각하게 했습니다. MEV는 채굴자가 블록 보상 및 수수료를 포함하여 블록체인 시스템에서 추출할 수 있는 총 가치를 의미하지만 트랜잭션 재정렬 또는 블록에 불량 트랜잭션 삽입과 같은 선외적인 다른 이점도 포함합니다.
기본적으로 이러한 모든 기습 공격은 대규모 자금 풀의 단일 거래로 생각해야 합니다. 예를 들어, 두 번째 bZx 공격은 단일 거래에서 $645,000 상당의 ETH 수익을 창출했습니다. 당신이 채굴자이고 새로운 블록 채굴을 시작하려고 한다면, 이전 블록의 트랜잭션을 보고 "여기서 무슨 일이 일어나고 있는 거지? 마지막 블록에 $645,000의 이익이 있었는데 내가 왜 채굴해야 하지?"라고 스스로에게 말하는 것을 상상해 보십시오. 500달러에 새 블록?"
새로운 블록을 계속 채굴하는 것이 아니라 역사를 다시 쓰고 자신을 번개 공격자로 만드는 것이 더 좋습니다. 생각해보세요. 이 거래는 이더리움에서 4시간 동안 정직하게 채굴하는 것과 같습니다! 이는 일반 블록 보상의 1000배를 포함하는 슈퍼블록을 갖는 것과 동일한 원칙입니다. 이러한 슈퍼블록의 논리적 결과는 대규모 광부 그룹이 해당 슈퍼블록을 훔치기 위해 미친 듯이 뒤섞이는 것입니다.
이미지 설명
시뮬레이션은 광부들 사이의 치열한 경쟁을 보여줍니다
균형에서 모든 번개 공격은 결국 가치를 추출하기 위해 채굴되어야 합니다. (그들은 모든 온체인 차익 거래 및 청산을 훔쳐야 하며 결국 훔칠 것이라는 점에 유의하십시오). 아이러니하게도 이것은 해커가 절도를 통해 현금을 얻는 것을 방지하기 때문에 번개 공격을 저지하는 데 중요한 요소가 될 것입니다. 어쩌면 결국 채굴자들은 익스플로잇 코드에 대한 개인 포상금을 제공하기 시작하여 해커에게 팁스터 수수료를 제공할 것입니다. 기술적으로 영지식 인증 활용은 신뢰 없이도 가능합니다. (그렇게 생각하는 것이 이상하지 않습니까?)
오늘날에도 여전히 공상 과학 소설입니다. 광부는 분명히 그렇게하지 않았습니다.
왜 그들은 그것을하지 않았습니까? 수많은 이유가 있습니다. 우선 어렵고 많은 작업이 필요합니다.EVM은 시뮬레이션하기 어렵고 위험이 매우 높습니다.자금 손실이나 고아 블록을 유발할 수 있는 허점이 있어 비판을 받을 것입니다.전체 마이닝풀이 직면하게 될 것입니다. 홍보 위기이며 "이더리움 공공의 적"으로 분류될 수 있습니다. 현 상황에서 채굴자들은 돈을 받기보다 그렇게 할 경우 더 많은 경제적 손실과 고아 블록을 입을 가능성이 더 큽니다.
지금은 사실이지만 오랫동안 그렇지는 않을 것입니다.
이것은 이더리움에 가능한 한 빨리 이더리움 2.0으로 전환하도록 하는 새로운 추진력을 가져왔습니다. 놀랍고 매혹적인 이더리움의 DeFi는 의심할 여지 없이 허점으로 가득 차 있습니다. DeFi는 모든 고가치 트랜잭션이 채굴자에 의해 재분배되기 때문에 PoW 체인에서 불안정합니다(시간 산적 공격이라고도 함).
시스템이 대규모로 작동하려면 불변성이 필요합니다. 채굴자는 확인된 블록을 다시 작성할 수 없습니다. 이렇게 하면 이전 블록이 재할당되지 않도록 보호됩니다. 또한 DeFi 프로토콜이 별도의 Ethereum 2.0 샤드에 존재하는 경우 번개 공격에 취약하지 않습니다.


