다니엘 폰 팡게가 각본을 맡은 작품
편집자: angelilu, Foresight News
어제 독립 연구원 Daniel Von Fange는 X 플랫폼에 Curve가 오라클 조작의 위험이 있으며 공격 중에 이러한 위험을 감지하기 어렵다는 기사를 게시했습니다. Oracle 조작으로 인해 Oracle이 외부 이벤트나 실제 세계에 대한 잘못된 데이터를 보고하게 되어 Oracle에 연결된 프로토콜이 조작될 위험이 있습니다. Daniel Von Fange는 영향을 받을 수 있는 관련 팀에 통보했다고 말했습니다.
Curve 창립자 Michael Egorov는 커뮤니티에서 이 문제에 대해 "이러한 위험은 이전 버전의 풀에 존재할 수 있습니다. crvusd에서는 이전 버전의 풀이 사용되지 않으며 Oracle 사용을 권장하지 않습니다"라고 답했습니다. Daniel도 자신의 발언을 확인했습니다. .Von Fange의 공개로 인한 위험은 현실입니다.
![](https://img.cointime.com/images/74kSXM5GUqRx0arcsJZhLcHjCExJuuF6JWnQfaIZ.jpg)
그러나 Curve 기고자 fiddy는 독립 연구원이 이 정보를 논의 없이 공개적으로 공개하는 방식에 불만을 표시 하고 Daniel Von Fange가 공개한 취약점이 이전에 비공개적으로 논의된 적이 있지만 공격자가 정확성을 높이려는 것이라고 믿었다며 해명문을 발표했습니다. 가스비 인상 비용이 높으며, 외부 감사에서도 이를 영향도가 낮은 것으로 분류했습니다. 그리고 연구원이 공개한 취약점은 last_price 가격을 사용하는 Curve의 이전 cryptoswap 알고리즘과 관련이 있지만 최신 cryptoswap-ng 구현은 AMM 상태 가격을 사용하여 이러한 문제를 해결할 수 있습니다. 또한 yAuditDAO는 일부 오라클 오류를 발견했으며 현재 수정 중입니다. 이러한 오라클을 사용하는 사람은 없으며 이러한 스테이블 코인 거래 풀의 LP(유동성 공급자)는 영향을 받지 않습니다.
그러나 일부 팀에서는 이미 공개된 위험을 기반으로 보안을 강화하기 위해 프로토콜을 조정하기 시작했습니다. Yearn Finance 개발자 @storming0x도 Daniel Von Fange가 공개한 위험에 대해 "Yearn 계약은 잠재적인 공격 경로를 완화하기 위해 Chainlink의 중복 메커니즘을 사용하는 하나의 계약을 제외하고는 영향을 받지 않습니다. 조심스럽게 Yearn Development 팀은 다음과 같이 결정했습니다. 새 버전을 다시 배포하세요."
![](https://img.cointime.com/images/qfjliI3MUZGHcE8i0AeiHSn4mK7m55buLGzRPe8p.png)
다음은 곡선 오라클의 가격 조작 위험에 대한 Daniel Von Fange의 공개 내용 전문입니다.
지난 2주 동안 저는 Curve의 가격 오라클을 조사한 결과 매우 특이한 동작을 발견했습니다.
이러한 오라클은 여러분이 생각하는 대로 작동하지 않으며, 예상보다 조작하기 쉽고 일반적인 상황에서는 잘못될 수 있습니다.
간략한 개요: 대부분의 풀에서 공격자는 단 한 블록에서 Curve의 가격 오라클을 정상 가격보다 10배에서 500배까지 조작할 수 있습니다. 그리고 수영장을 볼 때 조작된 흔적이 없도록 조작을 숨길 수 있습니다.
Curve 풀은 많고 누구도 서로 다른 풀의 코드 베이스 수를 정확하게 계산할 수 없습니다.
내가 쓴 내용은 특정 풀에 적용될 수도 있고 적용되지 않을 수도 있습니다. 풀마다 취약점이 다릅니다. 어쩌면 일부 수영장에는 구멍이 없을 수도 있습니다.
Curve 팀은 보고서를 받고 논의하는 일을 훌륭하게 수행했으며 몇 분 안에 CrvUSD가 이러한 문제의 영향을 받지 않는다는 것을 확인했습니다.
또한 Curve 가격 오라클을 사용하는 메인넷에서 약 100개의 계약을 확인하고 적절한 경우 관련 팀에 알렸습니다.
이 취약점의 주요 문제는 가격이 1:1에 가깝지 않거나 처리 수수료가 높을 때 last_price가 잘못 계산될 수 있다는 것입니다.
첫째, 수수료는 last_price 계산에 포함되지 않으므로 실제 거래 또는 풀 잔액과 다른 숫자를 사용하게 됩니다.
![](https://img.cointime.com/images/qexiiqipc6JZaBCR6aF0QqvtCgZZsMa2UiSiO0ke.jpg)
EMA 가격 오라클은 last_price에 의해 결정됩니다. last_price가 잘못되면 가격 오라클은 잘못된 목표 가격을 향해 움직이기 시작합니다.
정상적인 거래에서 나는 풀의 실제 현재 가격에서 1% 이상 벗어난 가격 오라클 포지션 가격을 보았습니다. 최악의 시나리오는 더 나쁠 수 있습니다(차트의 정규화된 가격).
풀에 따라 이 드리프트 오류는 실제 가격보다 높거나 낮을 수 있습니다.
가장 큰 문제는 조작 중에 last_price 오류가 실제 조작된 가격보다 훨씬 높을 수 있어 풀 오라클이 효과적으로 조작될 가능성이 상당히 높아진다는 것입니다.
![](https://img.cointime.com/images/1iwbA5Wpqlu7LhFk0QuMXrBOFO6vPUFo28dTf9vc.jpg)
작은 거래라도 최종 가격/오라클 가격의 편차를 수정할 수 있으며, 이로 인해 터무니없는 상황이 발생할 수 있습니다.
작은 거래라도 최종 가격/오라클 가격의 편차를 수정할 수 있으며, 이로 인해 터무니없는 상황이 발생할 수 있습니다.
![](https://img.cointime.com/images/KqXl2BDqzczRVzUiY61BpLDBObvimEzIrGphlwWJ.jpg)
큰 가격 변동과 last_price 계산 오류의 중첩 효과로 인해 공격자는 막대한 비용을 들이지 않고도 다음 블록의 EMA 가격 오라클을 조작하여 차익거래자와 싸우기 위해 수십 블록에서 높은 가격을 유지할 수 있습니다.
![](https://img.cointime.com/images/gWJMgSnE1kJqWeOQt2BoA6LQfU11UH53qAMx1Q1W.jpg)
이론적으로 공격자는 이 작업을 수행하는 데 필요한 두 개의 연속 블록 채굴을 제어할 수 있습니다. 공격자는 그러한 가격 공격을 수행하기 위해 충분한 자본을 보유해야 하지만, 과거의 많은 공격자들은 수천만 달러를 보유하고 있었습니다.
그 내용을 마치고 곡선 가격 오라클 조작을 방어하기 위한 일반적인 전략과 그 효율성에 대해 이야기해 보겠습니다.
Curve v1 풀에는 조작, 실제 가격, 가격 오라클, last_price 및 EMA 가격을 탐지하는 데 사용할 수 있는 4개의 숫자가 있습니다. 불행하게도, 가격 오라클 가격을 조작하기 위한 단일 거래는 한 번의 조작 후에 이들 모두를 동일한 숫자로 재설정할 수 있습니다.
Curve v2 풀의 가격 규모는 가격 오라클보다 조작하기가 더 어렵습니다. 더 느리게 변경되며 이동하려면 실제 거래 수수료 비용이 필요합니다. 이 빠른 가격 오라클이 느린 가격 규모와 일치한다면 상황은 안정적인 것입니다. 그렇죠?
아니요! 핵심 공격 문제는 실제 가격, 빠른 오라클, 느린 규모라는 세 가지 숫자를 정렬하는 것입니다. 실제 가격은 즉시 조작이 가능하기 때문에 통제가 쉽습니다. 그러면 문제는 다른 둘 사이의 교차점을 설계하는 것입니다.
공격자는 잠시 가격을 부풀린 후 다음 블록에서 정상으로 돌아오고, 하락하는 가격 오라클이 상승하는 가격 규모를 만날 때까지 몇 블록의 공격을 기다립니다. 실제 가격은 블록이 오라클을 혼란스럽게 할 만큼 높게 유지되기만 하면 되며, 가격 규모가 뒤따를 것입니다.
![](https://img.cointime.com/images/O9ezWtCVMVM5CIRxkkwvAD1dyS1nIS0H4E025nVK.jpg)
많은 오라클은 한도를 사용하여 곡선 오라클 가격에서 사용하는 가격을 최대 1:1로 제한합니다. 이것은 훌륭하고 어리석게 높은 값을 배제합니다. 그러나 자산이 실제로 고정 해제된 경우 공격자는 해당 자산을 저렴한 가격에 구매한 다음 다시 고정된 것처럼 보이도록 조작할 수 있습니다.
프로토콜은 때때로 최소값을 설정하며, 곡선 가격 오라클의 응답이 페그의 특정 비율 아래로 떨어지면 무시됩니다. 그러나 자산이 실제로 분리될 때 가격을 무시한다면 가격 오라클을 갖는 목적 전체가 무산되는 것입니다.
또 다른 일반적인 전략은 다른 AMM 시스템의 가격을 혼합하는 것입니다. 많은 부분은 다른 풀의 품질과 취급 특성에 따라 달라집니다. 유동성이 적고 조작하기 쉽다면 목적을 상실하는 것입니다.
나쁨 + 나쁨 = 나쁨.
또 다른 일반적인 전략은 다른 AMM 시스템의 가격을 혼합하는 것입니다. 많은 부분은 다른 풀의 품질과 취급 특성에 따라 달라집니다. 유동성이 적고 조작하기 쉽다면 목적을 상실하는 것입니다.
나쁨 + 나쁨 = 나쁨.
스테이블코인/스테이블코인 거래 쌍을 위한 새로운 곡선 풀은 내부적으로 last_price를 1:1 값의 2배로 제한합니다. 이는 last_price를 어리석게 높은 값으로 푸시할 수 없어 EMA에 과부하가 걸리기 때문에 블록 공격을 방지합니다.
그러나 잘못된 자산이 법적으로 분리된다면 그것은 잘못된 것입니다.
![](https://img.cointime.com/images/GbJRq13wVtPQDaBJWIW8hj2MUIbWVYbcf5eWsJMA.jpg)
커브 풀을 사용하여 담보 자산의 가격을 책정하려는 경우에는 그렇게 해서는 안 됩니다.
최신 풀은 일반적으로 공격 비용이 더 높습니다. 이는 조작된 풀이 시장에 작은 영향을 미치고(아마도 단지 수익 분배를 보호하기 위해) 풀 시뮬레이션에 대한 공격에 비용이 많이 드는 경우 옵션이 될 수 있습니다.
마지막으로 저자는 쌍이 사용된 풀에 대해 실제 공격 시뮬레이션을 수행할 것을 권장하며, 가정이나 이론을 기반으로 가격 오라클의 동작을 예측하는 대신 실제로 사용된 풀에 대한 자세한 시뮬레이션 테스트를 수행해야 합니다. 조작 공격을 시뮬레이션함으로써 다양한 상황에서 풀이 어떻게 작동하는지 더 잘 이해할 수 있습니다.
다음 차트는 지난 90일 동안 Curve 오라클 사용량의 증가를 보여주는 차트입니다.
![](https://img.cointime.com/images/XwKdGv0BYhBmq06ogzrdG4L4jlLY2Ief9s9kbRSy.jpg)
일부 곡선 풀에는 성능이 좋은 가격 오라클이 있어 이상하게 작동하도록 할 수 없으며 성능이 좋은 EMA에서 기대하는 것과 정확히 일치합니다. 하지만 아직은 확인이 필요합니다...
모든 댓글