최근 초안정화폐 프로토콜인 커브(Curve)가 재진입 공격을 받아 심각한 손실을 입었습니다. 다음은 이번 공격에 대한 MetaTrust Labs의 보안 분석 및 보안 권장 사항입니다.
이벤트 리뷰
Curve Finance의 공식 트위터에 따르면 2023년 7월 31일 Vyper 버전 0.2.15를 사용하여 작성된 일부 안정적인 풀(alETH/msETH/pETH)이 재진입 공격을 받았습니다. Curve Finance는 이 공격이 Vyper 버전 0.2.15의 재진입 잠금 오작동으로 인해 발생했으며 순수 ETH를 사용하는 풀에만 영향을 미쳤다고 밝혔습니다. 현재 커브 측은 피해 상황을 평가하고 있으며 다른 풀들은 안전합니다.
MetaTrust Labs의 분석에 따르면 이 취약점은 주로 Vyper 버전 0.2.15/0.2.16/0.3.0 컴파일러로 인해 2021년 8월과 10월 사이에 발생했습니다. 취약점이 발생하는 이유는 생성된 바이트코드의 재진입 로직이 컴파일러의 버그로 인해 적용되지 않아야 하기 때문입니다.
체인 통계에 따르면 Curve Finance 스테이블코인 풀 해킹 사건으로 인해 Alchemix, JPEG'd, CRV/ETH 풀 등에서 5,200만 달러의 누적 손실이 발생했습니다. 커브 파이낸스(Curve Finance)의 토큰 CRV도 이날 15% 이상 하락하는 등 큰 타격을 입었다.
원인 분석
이번에 Curve Finance가 공격을 받은 이유는 Curve가 Vyper 언어를 사용하여 스마트 계약을 작성할 때 Vyper 버전 0.2.15를 사용했기 때문입니다. 이 버전에는 재진입 잠금 오작동(reentrancy lock failure)이라는 취약점이 있습니다. 손실을 초래하는 재진입 공격. 이번 Curve Finance의 취약점은 언어별 취약점입니다.
언어별 취약점은 특정 프로그래밍 언어나 컴파일러 자체의 결함이나 비호환성으로 인해 발생하는 취약점을 의미합니다. 이러한 취약점은 개발자의 과실이나 논리 오류로 인해 발생하는 것이 아니라 기반 기술 플랫폼의 문제로 인해 발생하기 때문에 발견하고 예방하기 어려운 경우가 많습니다. 이러한 유형의 취약점은 모두 동일한 언어나 컴파일러를 사용하기 때문에 여러 프로젝트나 계약에 영향을 미치는 경향이 있습니다.
Vyper는 보안과 가독성을 높이기 위해 설계된 Python 기반 스마트 계약 프로그래밍 언어입니다. Vyper는 안전 우선 언어라고 주장하며 클래스, 상속, 수정자, 인라인 어셈블리 등과 같이 보안 위험을 일으킬 수 있는 일부 기능을 지원하지 않습니다. 그러나 Vyper는 완벽하지 않으며 여전히 계약 보안에 영향을 미칠 수 있는 일부 버그나 허점이 있습니다. 예를 들어 이번에 Curve Finance에서 발생한 재진입 잠금 실패 외에도 Vyper는 범위를 벗어난 배열, 정수 오버플로 및 저장소 액세스 오류와 같은 문제도 경험했습니다.
보안 조치
이번 커브파이낸스의 재진입 공격에 대해 몇 가지 대책이 강구되거나 제안됐다. 취할 수 있는 몇 가지 보안 대책은 다음과 같습니다.
유동성 인출: 영향을 받은 풀의 경우 사용자는 추가 손실을 피하기 위해 유동성 인출을 선택할 수 있습니다. Curve Finance는 공식 홈페이지에 유동성 출금 버튼을 제공하여 사용자의 운영이 편리합니다.
컴파일러 업그레이드: Vyper 0.2.15/0.2.16/0.3.0 컴파일러를 사용하는 계약의 경우 재진입 잠금 실패 문제를 해결한 최신 Vyper 0.3.1 버전으로 업그레이드하는 것이 좋습니다. 동시에 계약의 보안을 확인하기 위해 공식 검증, 코드 감사 등 다른 도구나 방법을 사용하는 것도 권장됩니다.
요약하다
요약하다
Curve Finance 재진입 사건은 불행한 보안 사고이자 많은 생각을 하게 만드는 교훈이었습니다. 탈중앙화 금융(DeFi) 분야에서는 보안이 항상 최우선 과제입니다. 프로젝트 당사자는 지속적으로 보안 인식과 역량을 향상시켜야 합니다. 모든 세부 사항은 공격자가 악용할 수 있는 돌파구가 될 수 있습니다.
Follow Us
Twitter: @MetaTrustLabs
Website: metatrust.io


