커브 풀 해킹: Vyper 버전의 재진입 취약점으로 인해 5,900만 달러 손실

이 기사는 기계로 번역되었습니다
원문 표시

무엇?

Vyper 는 블록체인 플랫폼에서 스마트 계약을 생성하기 위해 설계된 프로그래밍 언어입니다. Python에서 영감을 받은 Vyper는 사용자 친화적이고 쉽게 읽을 수 있는 구문을 채택하여 모든 수준의 개발자가 액세스할 수 있도록 합니다.

Curve Pool은 블록체인 네트워크에서 스테이블 코인 교환에 혁명을 일으키는 탈중앙화 금융(DeFi) 프로토콜입니다. 스테이블코인 전용으로 최적화된 자동화된 마켓 메이커(AMM)인 Curve Pool은 최소한의 슬리피지와 수수료로 스테이블 자산 간의 원활하고 비용 효율적인 교환을 보장합니다. 고유한 알고리즘은 거래 중 가격 영향을 최소화하고 자본 효율성을 극대화하도록 설계되어 스테이블코인 유동성을 원하는 거래자와 유동성 공급자가 선호하는 선택이 됩니다.

어떻게?

공격은 다양한 블록체인 체인에서 발생하여 총 5,900만 달러 이상의 손실을 입혔습니다. 이러한 손실은 취약한 버전의 Vyper를 사용하고 ETH를 포함하는 풀로 인해 발생합니다. 해킹된 풀:

Curve Finance에 따르면 Arbitrum에는 여전히 취약할 수 있는 풀이 있습니다. 그들은 예방적인 이유로 사용자들에게 가능한 한 빨리 유동성을 제거할 것을 권고합니다.

공격에서는 공격자가 Remove_liquidity 함수를 호출한 후 add_liquidity 함수에 다시 진입했습니다. add_liquidity 함수를 다시 입력하기 전에 상태가 완전히 업데이트되지 않아 lp_price 계산 오류가 발생합니다.

왜?

커브 풀은 Vyper 프로그래밍 언어를 사용하여 개발되었으며 이 취약점은 Vyper 컴파일러 내에 존재합니다.

이 취약점으로 인해 Vyper에 내장된 비재진입 데코레이터에 의해 보호되는 기능에도 불구하고 공격자가 재진입을 수행할 수 있습니다.

취약점의 근본 원인은 Python으로 작성된 Vyper 컴파일러 버전 0.2.15~0.3.0 사이에 이루어진 커밋에서 추적될 수 있습니다. 컴파일하는 동안 Vyper 코드는 재진입 데코레이터를 로드하고 이를 스토리지 슬롯에 저장합니다. 그러나 코드에서 저장소 및 슬롯 증분이 누락되기 전에 재진입이 이미 존재하는지 확인하는 중요한 확인이 필요합니다. 결과적으로, 각 기능은 독립적이며 재진입 공격에 대한 보호를 제공하지 못하는 별도의 재진입 잠금 슬롯을 갖습니다.

영향을 받는 Vyper 버전:

결론

공격자는 취약한 버전을 사용하여 Vyper의 버그 수정과 대상 계약을 주의 깊게 조사하여 Curve에 상당한 손실을 입혔습니다.

여기서 배운 중요한 교훈은 공급업체가 중요한 버그 수정 사항을 개발자 커뮤니티에 즉시 알려야 한다는 것입니다. 커뮤니티에서 개발하고 검토한 보안 기능을 포함하여 오픈 소스 기술을 활용하는 것이 좋습니다. 새 버전을 출시하거나 필수 기능을 크게 변경하기 전에 철저한 보안 검토를 수행하는 것이 중요합니다. 이러한 관행을 채택함으로써 시스템 보안을 강화하고 모든 사용자에게 보다 안전한 환경을 제공할 수 있습니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트