DEV Community

Juno Kim
Juno Kim

Posted on

탈중앙 금융(DeFi) 프로토콜 공격의 취약점 심층 분석

탈중앙 금융, 즉 DeFi는 블록체인 생태계 내에서 혁명적인 패러다임으로 떠올랐다. 인터넷만 연결되어 있다면 누구든 개방적이고 허가 불필요하며 투명한 금융 서비스를 이용할 수 있다는 약속을 내걸었다. 총 예치 자산(TVL)의 기하급수적인 성장과 혁신적인 프로토콜의 폭발적인 증가로 급부상하면서, 기술자와 투자자 모두의 상상력을 사로잡았다. 하지만 이 신흥 산업은 보안 침해와 공격이라는 고질적이고 치명적인 문제로 몸살을 앓아왔다. 수십억 달러에 달하는 자금이 다양한 공격 벡터를 통해 DeFi 프로토콜에서 빠져나갔고, 이는 사용자 신뢰를 침식하며 주류 채택을 가로막는 요인이 됐다. 10년 경력의 암호화폐 및 블록체인 전문 연구자로서, 나는 이러한 프로토콜이 반복적으로 해킹당하는지 이해하는 것이 더욱 탄력적이고 안전한 탈중앙화 미래를 구축하는 데 가장 중요하다고 생각한다. 이 글은 DeFi 공격의 다면적인 원인을 면밀히 분석하고, 피상적인 설명을 넘어 이 신생 생태계에 내재된 복잡한 기술적, 경제적, 시스템적 취약점을 파고든다. 우리는 DeFi를 매력적인 공격 대상으로 만드는 고유한 특성들을 탐구하고, 만연한 공격 메커니즘을 분석하며, 특정 실제 사건들을 조명하고, 산업의 보안 태세를 계속해서 위협하는 내재된 한계들을 논의할 것이다. 이러한 중요한 문제들을 조명함으로써, 우리는 탈중앙 금융의 기반을 강화하는 데 필요한 위험과 지속적인 노력에 대한 더 깊은 이해를 촉진하고자 한다. DeFi는 본질적으로 이더리움과 같은 불변의 공개 블록체인을 활용하여 상호 연결되고 프로그래밍 가능한 금융 애플리케이션 네트워크를 구축함으로써 전통적인 금융 서비스를 재구성한다. 핵심 원칙으로는 탈중앙화, 투명성, 무허가성 접근, 그리고 컴포저빌리티가 있다. 이러한 프로토콜은 일반적으로 스마트 계약, 즉 조건이 코드에 직접 작성된 자체 실행 계약으로 구성되며, 중개자 없이 대출, 차용, 거래, 자산 관리 등을 규율한다. 비용 절감, 효율성 증대, 그리고 금융 도구에 대한 전례 없는 접근성은 그 매력이 상당하다. 그러나 바로 이러한 특성들이 DeFi를 공격에 취약하게 만드는 원인이 되기도 한다. 스마트 계약에 묶여 있는 막대한 자본의 양, 종종 수백억 달러를 초과하는 규모는 악의적인 행위자들에게 거부할 수 없는 꿀단지가 된다. 도난당한 자금을 중앙 기관을 통해 추적하고 회수할 수 있는 전통 금융과 달리, 블록체인 거래의 익명성과 기록된 전송의 불변성은 일단 자금이 이동하면 종종 회수할 수 없다는 것을 의미한다. 이는 정교한 공격자들에게는 높은 보상과 낮은 위험을 수반하는 환경을 조성한다. 더욱이, 초기 기술 개발에서 흔히 볼 수 있는 "빨리 움직이고 부숴라(move fast and break things)"는 정신은 금융 시스템의 엄격한 보안 요구 사항과 종종 충돌한다. 프로토콜은 시장 출시 속도를 위해 포괄적인 감사와 테스트를 희생하며 공격적인 일정으로 출시되는 경우가 많다. 오픈소스 특성은 투명성과 커뮤니티 개발을 촉진하지만, 동시에 잠재적인 공격자들이 취약점을 찾기 위해 전체 코드베이스를 면밀히 검토할 수 있도록 노출시킨다. 프로토콜들이 서로 위에 구축되는 상호 연결성, 즉 "머니 레고(money legos)" 패러다임은 광범위하고 복잡한 공격 표면을 생성한다. 하나의 기초 구성 요소에 있는 취약점은 종속된 애플리케이션 생태계 전체를 연쇄적으로 손상시킬 수 있다. 이러한 복잡한 상호 의존성 웹은 기본 기술의 불변성과 익명성과 결합되어 DeFi에 고유하고 도전적인 보안 환경을 구축한다. DeFi 프로토콜은 스마트 계약과 블록체인 환경의 고유한 속성을 활용하는 광범위한 기술적, 경제적 공격에 취약하다. 근본 원인을 이해하려면 몇 가지 명확한 공격 벡터에 대한 심층 분석이 필요하다. 1. 스마트 계약 취약점: 이는 Solidity(또는 다른 스마트 계약 언어) 코드 자체 내의 결함으로, 의도하지 않은 동작을 유발한다. 재진입 공격(Reentrancy Attacks)은 2016년 The DAO 해킹에서 악명 높게 악용된 고전적인 취약점이다. 계약이 외부 계약을 호출하고, 외부 계약이 원래 계약이 상태를 업데이트하기 전에 원래 계약으로 재귀 호출을 할 때 발생한다. 이는 공격자가 잔액이 차감되기 전에 원래 계약에서 여러 번 자금을 인출할 수 있도록 허용한다. 많은 프로토콜이 이제 checks-effects-interactions 패턴이나 재진입 가드를 사용하지만, 특히 복잡한 다중 계약 상호 작용이나 delegatecall 시나리오에서는 정교한 버전이 여전히 나타날 수 있다. 논리 오류 및 설계 결함은 프로토콜의 핵심 비즈니스 로직에 있는 버그를 말한다. 여기에는 잘못된 산술 계산, 부적절한 상태 전환 또는 결함 있는 권한 부여가 포함될 수 있다. 예를 들어, 계약이 이자율을 잘못 계산하거나, 누락된 접근 제어 확인으로 인해 무단 인출을 허용하거나, 누구나 호출할 수 있는 중요한 함수를 가질 수 있다. 2023년 3월 Euler Finance 공격은 기부 기능의 논리 오류가 거의 2억 달러를 인출하는 데 사용되었는데, 이는 복잡한 논리 결함 악용의 대표적인 예시다. 산술 오버플로우/언더플로우는 최신 Solidity 컴파일러가 자동으로 확인하기 때문에 덜 흔하지만, 오래된 계약이나 unchecked 블록으로 컴파일된 계약은 취약할 수 있다. 오버플로우는 숫자가 최대 가능한 값을 초과하여 0 또는 작은 숫자로 래핑될 때 발생한다. 언더플로우는 숫자가 최소 가능한 값 아래로 내려가 큰 숫자로 래핑될 때 발생한다. 이러한 오류는 잘못된 잔액 계산이나 조작된 조건으로 이어질 수 있다. 2. 오라클 조작: 오라클은 오프체인 데이터(예: 자산 가격)를 온체인 스마트 계약에 제공하는 중요한 구성 요소다. 오라클이 조작될 수 있다면 스마트 계약은 잘못된 정보에 따라 작동하게 되며, 이는 심각한 결과를 초래한다. 가격 조작은 공격자가 유동성이 낮은 DEX(탈중앙화 거래소)를 악용하거나 대규모 자본(종종 플래시 론을 통해 획득)을 사용하여 자산 가격을 인위적으로 부풀리거나 하락시킬 수 있다. 이렇게 조작된 가격은 오라클을 통해 대출 프로토콜로 전달되어, 공격자가 저평가된 담보에 대해 과도한 양의 자산을 빌리거나 건전한 포지션을 청산할 수 있도록 한다. bZx 프로토콜은 오라클 조작을 활용하여 자금을 유출하는 여러 플래시 론 공격(예: 2020년 2월)을 겪었다. 3. 플래시 론 공격: 플래시 론은 동일한 블록체인 거래 내에서 빌리고 상환해야 하는 무담보 대출이다. 본질적으로 악의적인 것은 아니지만, 선불 담보 없이 막대한 임시 자본을 제공하기 때문에 공격자에게 강력한 도구로 사용된다. 공격에 플래시 론을 활용하는 것은 특히 오라클 조작과 같은 다른 취약점과 자주 결합된다. 공격자는 막대한 플래시 론을 받고, 이를 사용하여 DEX에서 자산 가격을 조작한 다음, 조작된 가격을 오라클 피드로 사용하는 대출 프로토콜을 악용할 수 있다. 공격을 실행한 후(예: 저평가된 자산 차용 또는 포지션 청산), 공격자는 동일한 거래 내에서 플래시 론을 상환하고, 빌린 자산에서 이익을 얻는다. PancakeBunny 공격(2021년 5월)과 여러 Cream Finance 공격(예: 2021년 10월)은 플래시 론이 복잡한 가격 조작 및 재진입 공격을 실행하는 데 중요한 역할을 한 대표적인 사례다. 4. 거버넌스 공격 및 중앙화 위험: 프라이빗 키 침해는 많은 "탈중앙화" 프로토콜이 여전히 소수의 개인이나 재단이 통제하는 멀티시그 지갑 또는 업그레이드 가능한 프록시 계약에 의존한다는 점에서 발생한다. 이러한 중요한 구성 요소를 제어하는 프라이빗 키가 침해되면 공격자는 관리 권한을 얻어 토큰을 발행하거나, 자금을 인출하거나, 계약을 악성 버전으로 업그레이드할 수 있다. Ronin Bridge 공격(2022년 3월)은 검증자의 프라이빗 키가 침해되어 무단 인출이 가능해진 대표적인 사례다. 악의적인 거버넌스 제안은 토큰 보유자가 거버넌스를 행사하는 프로토콜에서, 거버넌스 토큰의 상당 부분이 악의적인 손에 들어가면 공격자는 악의적인 계약 업그레이드를 승인하거나 프로토콜의 재무를 인출하는 제안을 통과시킬 수 있다. 5. 프론트엔드 공격 및 DNS 하이재킹: 스마트 계약 백엔드가 안전하더라도 사용자가 상호 작용하는 웹 인터페이스가 손상될 수 있다. DNS 하이재킹/악성 UI는 공격자가 프로토콜의 DNS 기록을 하이재킹하여 사용자를 악성 프론트엔드 클론으로 리디렉션할 수 있다. 이 가짜 인터페이스는 사용자에게 합법적인 프로토콜과 상호 작용하는 대신 공격자의 지갑으로 자금을 보내는 거래를 승인하도록 유도한다. BadgerDAO 사건(2021년 12월)은 손상된 API 키가 프론트엔드에 악성 코드를 주입하여 사용자 자금을 리디렉션한 경우다. 이러한 공격 벡터들은 DeFi 보안의 다층적인 도전 과제를 보여주며, 단일 취약점이 다른 취약점에 의해 증폭되어 치명적인 손실로 이어질 수 있음을 입증한다. 특정 사건들을 살펴보는 것은 이러한 공격 벡터들의 실제 적용 사례와 그 파괴적인 영향에 대한 중요한 통찰력을 제공한다. 1. 로닌 브릿지 공격 (2022년 3월): 이 사건은 현재까지 가장 큰 암호화폐 해킹 중 하나로 기록되며, 6억 달러 이상의 손실을 초래했다. Axie Infinity의 로닌 사이드체인을 이더리움 메인넷에 연결하는 로닌 브릿지는 트랜잭션을 승인하는 검증자 세트에 의존한다. 공격자는 9개 검증자 프라이빗 키 중 5개를 확보했다. 특히 이 키 중 4개는 Sky Mavis(Axie Infinity 개발사) 소유였고, 1개는 2021년에 단일 트랜잭션 승인을 위해 임시로 권한을 부여받았지만 철회되지 않은 제3자 Axie DAO 검증자 노드에서 얻었다. 검증자 키의 과반수(9개 중 5개)를 장악한 공격자는 위조된 인출 트랜잭션을 만들어 브릿지의 메인 계약에서 173,600 ETH와 2,550만 USDC를 인출할 수 있었다. 이 공격은 탈중앙화되도록 설계된 시스템 내에서 심각한 중앙화 위험을 부각시켰으며, 운영 보안의 취약성과 제한된 서명자 집단에 대한 의존이 기본 스마트 계약이 견고하더라도 어떻게 치명적인 손실로 이어질 수 있는지를 보여주었다. 2. 웜홀 브릿지 공격 (2022년 2월): 로닌 공격 불과 몇 주 전, 솔라나, 이더리움 및 기타 체인을 연결하는 인기 있는 크로스체인 브릿지인 웜홀 토큰 브릿지는 공격을 당해 당시 3억 2천만 달러 이상의 가치에 해당하는 120,000 Wrapped ETH(wETH)를 잃었다. 취약점은 브릿지의 솔라나 측 스마트 계약에 있는 치명적인 버그에 있었다. 구체적으로 공격자는 "가디언" 승인에 대한 서명 검증 프로세스의 결함을 악용했다. 그들은 "Validator Action Approval"(VAA) 메시지를 위조하여 웜홀 계약이 이더리움 측에 120,000 ETH를 예치했다고 믿게 만들었고, 이를 통해 실제 자산을 잠그지 않고 솔라나 측에서 동일한 양의 wETH를 발행할 수 있었다. 이 wETH는 곧바로 이더리움으로 다시 브릿지되어 실제 ETH로 교환되었다. 웜홀 팀은 신속하게 취약점을 패치하고 나중에 도난당한 자금을 보충했지만, 이 사건은 크로스체인 상호 운용성 프로토콜과 관련된 엄청난 복잡성과 내재된 보안 위험을 강조했다. 3. 크림 파이낸스 플래시 론 공격 (예: 2021년 10월): 유명 대출 프로토콜인 크림 파이낸스는 여러 번의 정교한 플래시 론 공격의 표적이 됐다. 약 1억 3천만 달러의 손실을 초래한 2021년 10월 공격은 특히 복잡했다. 공격자는 Aave 및 Uniswap을 포함한 여러 프로토콜에서 일련의 플래시 론을 사용하여 막대한 자금을 빌렸다. 그런 다음 Cream의 Iron Bank 대출 프로토콜에 있는 재진입 취약점, 특히 token.transferFrom() 함수와 특정 토큰 잔액 처리 방식과 관련된 취약점을 악용했다. 동일한 거래 내에서 반복적인 차용 및 상환을 통해 특정 토큰(예: yUSD)의 가격을 조작하고 재진입 버그를 결합함으로써, 공격자는 담보가 허용하는 것보다 훨씬 더 많은 자산을 빌릴 수 있었고, 사실상 프로토콜의 유동성 풀을 고갈시켰다. 이 사건은 플래시 론이 종종 촉매 역할을 하여 정교한 공격자들이 여러 개의 사소해 보이는 취약점을 파괴적인 경제적 공격으로 활용하는 방법을 보여주었다. 이러한 사례들은 DeFi 공격이 단일한 현상이 아니라는 점을 종합적으로 보여준다. 직접적인 스마트 계약 버그와 오라클 조작에서부터 운영 보안 실패 및 프로토콜 간 의존성 악용에 이르기까지 다양하다. 보안 관행의 상당한 발전에도 불구하고, 몇 가지 내재된 한계는 DeFi 프로토콜의 보안 태세를 계속해서 위협한다. 1. 불변성의 양날의 검: 블록체인 기술의 초석으로서 투명성과 검열 저항성을 보장하지만, 스마트 계약의 불변성은 보안에 있어 중요한 과제를 제시한다. 일단 계약이 배포되면 코드를 쉽게 변경할 수 없다. 배포 후 치명적인 취약점이 발견되면, 이를 패치하는 것은 종종 복잡하고 위험한 마이그레이션 전략을 요구한다. 새로운 계약을 배포하고 모든 사용자 자금과 상태를 이전해야 하는데, 이 과정 자체가 새로운 공격 벡터를 도입하거나 사용자 혼란을 야기할 수 있다. 이는 패치와 업데이트가 신속하게 배포될 수 있는 전통적인 소프트웨어와는 극명한 대조를 이룬다. 2. 컴포저빌리티와 시스템적 위험: DeFi의 "머니 레고" 아키텍처는 프로토콜들이 서로 위에 구축되고 상호 작용하는 방식인데, 이는 엄청난 혁신의 원천이면서 동시에 상당한 보안 위험을 안고 있다. 하나의 기초 프로토콜에 있는 취약점은 연쇄적인 효과를 가져와 여러 종속 프로토콜을 손상시킬 수 있다. 이는 전체 생태계의 보안이 가장 약한 고리만큼만 강력한 광범위하고 복잡한 공격 표면을 생성한다. 이러한 프로토콜 간 위험을 식별하고 완화하는 것은 엄청나게 어려운 일이다. 3. 감사 한계와 혁신의 속도: 평판 좋은 기업의 보안 감사는 매우 중요하지만, 완벽하지는 않다. 감사는 특정 시점의 스냅샷을 제공하며, 이 빠르게 진화하는 공간에서 신속하게 나타나는 모든 미묘한 논리 오류, 경제적 공격 또는 새로운 공격 벡터를 포착하지 못할 수 있다. 더욱이, DeFi의 엄청난 혁신 속도는 경쟁 압력에 의해 새로운 기능을 빠르게 출시하기 위해 프로토콜이 불충분한 감사나 테스트를 거쳐 배포되는 경우가 많다는 것을 의미한다. 이러한 "빨리 움직여라"는 사고방식은 성장을 가속화하지만, 본질적으로 보안 위험을 증가시킨다. 4. 인적 요소와 운영 보안: 기술적으로 정교해 보이는 많은 공격들도 궁극적으로는 인적 오류나 운영 보안 실패로 귀결된다. 여기에는 코딩 중 개발자 실수, 잘못된 구성, 부적절한 테스트, 또는 피싱, 악성코드, 부실한 키 관리 관행으로 인한 프라이빗 키 침해 등이 포함된다. 로닌 브릿지 공격은 운영 보안 실패가 치명적인 손실로 이어진 대표적인 예시다. 5. 표준화된 보안 프레임워크 부족: 확립된 규제 및 보안 프레임워크 하에 운영되는 전통 금융과 달리, DeFi는 여전히 크게 규제되지 않고 보편적으로 채택된 보안 표준이 부족하다. 이러한 파편화는 프로토콜 전반에 걸쳐 일관성 없는 보안 관행으로 이어질 수 있으며, 사용자가 위험을 평가하고 생태계가 집단적으로 성숙하는 것을 더 어렵게 만든다. 이러한 한계들은 DeFi를 보호하는 것이 단순한 기술적 도전이 아니라, 기술적 제약, 인적 요소, 시스템적 위험이 복잡하게 상호 작용하는 문제이며 지속적인 경계와 진화를 요구한다는 점을 강조한다. DeFi 프로토콜에 대한 반복적인 해킹은 단일한 현상이 아니라, 기술적 취약점, 경제적 유인, 그리고 탈중앙화 시스템의 본질적인 특성이 복잡하게 상호 작용한 다면적인 도전 과제다. 우리가 탐구했듯이, 막대한 자본 풀의 매력은 블록체인 거래의 불변성과 공격자의 익명성과 결합되어 예외적으로 높은 위험을 수반하는 환경을 조성한다. 정교한 스마트 계약 재진입 및 논리 오류에서부터 플래시 론 기반 오라클 조작, 그리고 프라이빗 키 침해로 이어지는 치명적인 운영 보안 실패에 이르기까지, 공격 벡터는 다양하며 끊임없이 진화하고 있다. 그러나 이러한 사건들이 초래하는 상당한 손실과 신뢰 침식에도 불구하고, DeFi 생태계는 정체되어 있지 않다. 이는 역동적이고 학습하는 환경이다. 각 공격은 비용이 많이 들지만, 가혹하면서도 귀중한 교훈이 되어 보안 관행의 지속적인 혁신을 이끌어낸다. 우리는 다음 분야에 대한 집중이 강화되고 있음을 목격한다. 엄격한 동료 검토 감사: 프로토콜은 여러 기업의 다중 감사를 거치고 있으며, 중요한 구성 요소에 대한 형식 검증 방법도 함께 사용되고 있다. 탈중앙화 보안 솔루션: 버그 바운티 프로그램(예: Immunefi, HackerOne)의 등장은 화이트햇 해커들이 악의적인 행위자들보다 먼저 취약점을 식별하도록 유도한다. 탈중앙화 보험 프로토콜(예: Nexus Mutual, InsurAce)은 사용자에게 일종의 보상 형태를 제공하지만, 나름의 한계도 있다. 향상된 오라클 설계: 프로토콜은 조작에 매우 강한 더욱 견고하고 탈중앙화된 오라클 솔루션(예: Chainlink)으로 나아가고 있다. 강화된 운영 보안: 멀티시그 지갑, 견고한 키 관리, 안전한 개발 수명 주기 관행에 대한 강조가 더욱 커지고 있다. 커뮤니티 경계와 신속한 대응: DeFi의 오픈소스 특성은 집단적인 감시를 가능하게 하며, 신속한 커뮤니티 대응은 종종 진행 중인 공격을 완화하거나 취약점을 식별하는 데 결정적인 역할을 한다. 결론적으로, DeFi의 약속이 여전히 매력적이지만, 주류 채택을 향한 여정은 난공불락의 보안 경계를 구축하는 능력과 불가분의 관계에 있다. 이는 끊임없이 진행되는 군비 경쟁이며, 최첨단 기술 솔루션뿐만 아니라 속도보다 보안을 우선시하는 문화적 전환, 생태계 전반의 더 큰 협력 촉진, 그리고 위험 관리에 대한 사후 대응적 접근 방식보다는 사전 예방적 접근 방식을 포용하는 것을 요구한다. 탈중앙 금융의 미래는 이러한 고질적인 취약점을 넘어 진화하고, 끊임없이 더욱 정교해지는 적에 맞서 그 기반 인프라를 보호하는 능력에 달려 있다. 면책 조항: 이 글은 정보 및 교육 목적으로만 작성되었으며, 재정적 조언으로 해석되어서는 안 된다. 암호화폐 및 블록체인 시장은 변동성이 매우 크고 상당한 위험을 수반한다. 독자는 투자 결정을 내리기 전에 자체 조사를 수행하고 자격을 갖춘 금융 전문가와 상담해야 한다.

※ 본 칼럼은 정보 제공을 목적으로 하며, 투자 권유가 아닙니다. 모든 투자 결정은 본인의 판단과 책임 하에 이루어져야 합니다.

Top comments (0)