블록체인 오라클의 중요성(feat. Klap finance)

블록체인 오라클의 역할과 보안 중요성을 분석합니다. Mirror Protocol, BonqDAO, Klap Finance 사례를 통해 오라클 취약점이 탈중앙화 금융(DeFi)에 미치는 영향을 살펴보고, 안전한 스마트 컨트랙트 운영을 위한 해결 방안을 제시합니다.
ChainLight's avatar
Aug 17, 2023
블록체인 오라클의 중요성(feat. Klap finance)

블록체인 오라클은 가교

블록체인 오라클(Oracle)은 온체인(On-chain)과 온체인 & 온체인과 오프체인(Off-chain)을 연결하는 가교 역할을 합니다. 블록체인상에서 트릴레마(​​Trilemma), 스마트 컨트랙트(Smart Contract), 운영 문제 등 여타 많은 문제들이 발생하고 해결점이 나오고 있지만 그 중 블록체인의 확장성과 큰 맥락과 결을 같이 하는 지점이 블록체인 오라클입니다.

독립된 네트워크인 Ethereum 블록체인에서 크립토 윈터처럼 추운 겨울, 온도가 영하로 떨어지면 토큰이 지급되고 영상의 기온을 유지했을 때는 토큰이 지급되지 않는 ‘겨울나기 프로토콜’이 있다고 가정해봅시다.

날씨 정보를 기반으로 토큰을 지급해야 하는 프로토콜의 특성상 외부에 있는 신뢰할 수 있는 날씨 정보를 블록체인 내의 데이터로 가져와야 합니다. 이럴 때 날씨 정보를 가져오기 위해 필요한 것이 블록체인 오라클입니다. 오프체인 데이터를 신뢰할 수 있는지 여부가 가장 중요한 해결점이기에 오프체인에서 온체인의 데이터 전송은 중요한 문제입니다.

또 다른 예를 들어, Ethereum 체인의 Ethereum 가격 피드를 Solana 체인에서 받을 수 있게 하고 싶을 때 Solana 체인에서 서비스를 빌딩하고 있는 프로젝트에서 블록체인 오라클을 사용할 수 있습니다. Solana 체인 자체에서는 Ethereum 가격을 알 수 없기 때문에 타 체인의 데이터를 가져오기 위해서는 오라클이 필요합니다.

출처: 탈중앙화 오라클 서비스 Band Protocol의 밸리데이터 목록
출처: 탈중앙화 오라클 서비스 Band Protocol의 밸리데이터 목록

오라클의 가장 중요한 역할은 데이터의 신뢰성과 정확성 확보입니다. 블록체인 외부의 데이터를 내부로 가져올 때 본래의 데이터가 손실되지는 않았는지, 위조되거나 변조되지는 않았는지 충분히 검증해야 합니다. 데이터의 신뢰도가 확보되지 않는다면 외부의 데이터를 블록체인에서 이용할 수가 없기 때문에 블록체인 네트워크에서 탈중앙화 서비스를 구현하는 서비스 제공자들은 오라클 문제에 신중히 접근해야 합니다.

그래서 일부 탈중앙화 오라클 프로젝트는 데이터 제공자(Data provider)들과 데이터들을 검증하는 노드 운영자(Node operator) 혹은 검증자(Validator)로 나누고 자체 토큰으로 인센티브를 주는 방식을 사용하고 있습니다.

탈중앙화 오라클 서비스의 대표주자로는 Chainlink와 Band Protocol이 있습니다.

Price Oracle 문제 발생시 시나리오

  • 오라클 문제 발생 사례는 오라클이 가장 많이 이용되고 있는 탈중앙화 금융 서비스에서 많이 발생하고 있습니다. 본 시나리오에서는 대표적인 오라클 문제인 Price Oracle에 문제가 발생했을 때 어떤 상황이 벌어지는지 몇 가지 사례를 통해 다룹니다.

  1. Mirror Protocol

출처: Mirror Protocol의 Medium 채널
출처: Mirror Protocol의 Medium 채널

현재 서비스되고 있지 않은 Mirror Protocol은 Terra 블록체인에서 구동되었던 전통 금융과 탈중앙화 금융을 잇는 서비스였습니다. 하지만, 2022년 3월 경 Terra의 몰락이 시작되고 Mirror Protocol 또한 무너져갔습니다.

22년 5월 25일, ‘Terra 2.0’이라는 도권(Do Kwon)으로부터 발제된 Terra 부흥 제안이 Terra 블록체인을 지탱하고 있던 밸리데이터들과 커뮤니티로부터 통과되며 Terra는 Terra Classic과 Terra, 두 개의 체인으로 나뉘게 되었습니다.

출처: 팻맨 — @FatManTerra 트윗 일부 발췌
출처: 팻맨 — @FatManTerra 트윗 일부 발췌

이후 5월 31일, Terra 커뮤니티의 일원인 팻맨(@FatManTerra)로부터 Mirror Protocol의 오라클 취약점을 통해 자금이 탈취된 것이 드러납니다. 원인은 Terra Classic의 밸리데이터들이 Luna Classic(LUNC)의 가격을 네트워크에 잘못 보고하고 있었던 것이었습니다.

외부 데이터의 정확성을 밸리데이터들의 투표를 통해 결정했던 Terra 네트워크, 출처: https://docs.wcdc.me/docs/dev-spec-oracle

Terra Classic에서 운용되고 있었던 Mirror Protocol은 LUNC 가격을 추종해야하지만 LUNC 가격이 Terra 사태 이후 외부 거래소에서 현저히 낮게 거래되고 있음에도 불구하고 밸리데이터들은 새로운 체인의 자산인 LUNA의 가격을 추종하여 네트워크에 보고했기 때문에 오라클 문제가 발생했습니다.

이 사건으로 인해 탈취된 자금 규모는 26억 원 이상의 금액입니다.


2. BonqDAO

출처: 코인 텔레그래프 — Cointelegraph
출처: 코인 텔레그래프 — Cointelegraph

BonqDAO는 웹3 사용자들이 자산에 유동성을 더해주는 자기주권 탈중앙화 유동성 프로토콜입니다. 지난 2월 1일, BonqDAO는 공식 계정 트윗을 통해 오라클 해킹에 노출되었다는 것을 밝혔습니다. 해커는 ALBT(Alliance Block Token) 토큰 가격을 상승시키고 상승된 자산을 이용해, 상대적으로 가치가 안정적인 유로 스테이블 코인인 BEUR을 다량으로 발행하여 탈취한 뒤 Uniswap을 이용해 다른 자산으로 교환했습니다.

출처: ThinkandDev의 트윗 일부 발췌
출처: ThinkandDev의 트윗 일부 발췌

BonqDAO측은 탈중앙화 오라클 프로토콜인 Tellor가 제공하는 ’TellorFlex’ 컨트랙트 내의 ‘getDataBefore’ 대신 ‘getCurrentValue’로 작성된 ‘TelloPriceFeed’를 배포해 생긴 버그로 인해 공격자가 조작한 가격이 프로토콜에 반영이 되어 1,500억 원 이상의 자산이 손실되었습니다.


3. Klap Finance

출처: Klap Finance의 미디엄 채널
출처: Klap Finance의 미디엄 채널

Klap Finance는 Klaytn 기반의 탈중앙화 금융 서비스이며, Ethereum 기반의 AAVE를 본 떠 만들어졌습니다. 웹3 유저들은 Klap Finance 내에서 예금, 대출, 플래시론의 서비스를 이용할 수 있습니다.

출처: Klaylabs
출처: Klaylabs

22년 8월 기준 470억 원 상당의 TVL을 보유했으며, 현재는 65억 원 가량의 TVL을 유지하고 있습니다.

출처: Klap Finance 공식 Discord 채널
출처: Klap Finance 공식 Discord 채널

ChainLight 팀은 Klap Finance 관련 오라클 문제를 커뮤니티를 통해 확인했으며, 본 이슈에 대해 하기와 같은 사후 분석 결과를 공유합니다.

  • 오라클 오동작 기간(2022년 12월 2일 — 2023년 2월 18일)

사건의 발단은 아래와 같습니다.

Klap Finance의 오라클 역할은 가격 피드 트랜잭션을 프로토콜에 전파하는 역할을 하는 ‘Klap Deployer’가 수행합니다.

최초 오동작 발생 트랜잭션, 출처: Klaytnscope
최초 오동작 발생 트랜잭션, 출처: Klaytnscope
마지막 오동작 발생 트랜잭션, 출처: Klaytnscope
마지막 오동작 발생 트랜잭션, 출처: Klaytnscope

하지만, 2022년 12월 2일 오전 06시 경부터 ‘Klap Deployer’가 오동작을 하기 시작했고 그 결과 탈중앙화 거래소와 중앙화 거래소에서 거래되는 KLAY 가격과는 상관없이 ‘Klap Deployer’가 전파하는 KLAY 가격이 2023년 2월 18일 오후 11경까지 $0.189로 고정되어 오작동한 것을 확인했습니다.

ChainLight 팀이 사용한 BigQuery ETL 쿼리
ChainLight 팀이 사용한 BigQuery ETL 쿼리

ChainLight 팀이 ‘Klap Deployer’에 대해 분석한 스크립트
ChainLight 팀이 ‘Klap Deployer’에 대해 분석한 스크립트

ChainLight 팀은 최초 오라클 오동작 시점부터 마지막 시점까지의 ‘Klap Deployer’가 전파한 오라클 업데이트 트랜잭션들을 스크립트를 작성하여 모두 확인해본 결과 ‘Klap Deployer’의 오작동 사실을 확인할 수 있었습니다.

  • 악성 부채(Bad Debt) 발생

출처: Coinmarketcap
출처: Coinmarketcap

문제는 이 뿐만이 아니었습니다. 오라클 문제가 발생했을 때 이를 이용하여 이익을 극대화 하려는 유저들이 존재했었고, 오라클이 정상화되기 전까지 총 862,573,228원(2,075,489 KLAY, 415.6원 — 코인원 기준 2월 22일 종가) 가량이 대출되었으며 공격자의 이익은 76,283,214원으로 추정됩니다.

공격자 이익 계산 방법은 하기와 같습니다.

(악성 부채 발생 시점의 KLAY 가격 — 오라클 오동작 수정 시점의 KLAY 가격) * (악성 부채 발생 시점으로부터 오라클 오동작 수정 시점까지 대출된 총 KLAY 수량)

(0.269–0.236) USD * 1,776,405.607 KLAY = 58,621 USD
0.269는 Coinmarketcap 기준이며 Discord 메시지에 기록된 것 처럼 $0.29를 사용한다면 더 큰 손실로 계산할 수 있습니다.

ChainLight 팀이 분석한 오라클 오작동 기간 동안 KLAY를 예치한 유저들의 대출 비율
ChainLight 팀이 분석한 오라클 오작동 기간 동안 KLAY를 예치한 유저들의 대출 비율

해당 문제점을 노려 수익화 한 유저들은 예치자들의 자산을 지속해서 담보금의 총량보다 많은 양을 차입하고 빌린 자산을 수익화하는 과정들을 거쳤으며, 악성 부채를 통해 예치자들에게 손실을 입히는 결과를 낳았습니다.

본 분석 결과를 바탕으로 한 악성 부채가 발생할 수 있는 상황은 하기와 같습니다.

오라클 오작동 당시 Klap Finance는 USDC의 LTV가 80%, KLAY 가격은 $0.189였습니다.

Klap Finance 유저가 1 USDC를 보유하고 있었다면, 0.8 USDC를 담보로 사용할 수 있고 이를 이용하여 4.2328 KLAY를 대출할 수 있었습니다. 4.2328 KLAY의 실제 가격은 0.8 USDC가 아닌 1.10 USDC 였기에, 1 USDC를 담보로 1.10 USDC 만큼의 자산을 얻을 수 있는 효과를 볼 수 있었습니다.

자산 LTV 별 Counter Part 자산 가격 민감 역치

위 그래프는 아래 식을 표현한 것입니다. 특정 LTV 별로 얼마큼의 오라클 오작동을 감내 할 수 있는지를 보여줍니다.

만일 오라클이 정상 작동하지 않아 타 거래소에서 KLAY(차입 대상) 가격과의 격차가 1.5배(150%) 가량 벌어졌다고 가정하면 LTV가 0.67(67%) 이상인 담보는 모두 악성 부채를 만들 수 있다는 것을 알 수 있습니다.


위 사례들이 주는 교훈

탈중앙화 금융의 대출 시장에서 Loan To Value(LTV, 담보의 가치에 대비하여 대출 가능한 비율)에 영향을 줄 수 있는 요소는 담보의 가격 변동성 뿐 아니라 담보를 맡기고 대출할 자산의 가격 변동성도 영향을 미친다는 것을 충분히 고려해야합니다. 만일 서비스의 활성화를 위해 스테이블 코인(USDC, USDT)과 같은 가격 안정성이 높은 자산군의 담보 비율을 99%와 같이 높은 비율로 설정했을 때 대출(Lending)해주는 자산군의 가격 오라클이 다른 시장과 조금만 차이나도 악성 부채가 발생될 확률이 높습니다.

탈중앙화 금융 서비스의 경우, 특히 스마트 컨트랙트로 동작하는 블록체인 오라클은 철저한 감사를 받아야 하며 주기적인 오라클 동작 여부의 모니터링도 필요합니다.

ChainLight 오딧은 단순한 스마트 컨트랙트 코드 감사 뿐만 아니라 금융 파라미터, Web2 인프라 시스템 등 다양한 시야에서 보안 감사를 진행하고 있습니다.

보안 감사 신청 👉 ChainLight


References


✨ We are ChainLight!

ChainLight 팀은 풍부한 실전 경험과 깊은 기술 이해를 바탕으로 새롭고 효과적인 블록체인 보안 기술을 연구합니다. 연구 결과를 바탕으로 Web3 생태계의 각종 보안 위험 요소와 취약점을 사전 파악하여 제거하는 혁신적인 보안 감사 서비스를 제공합니다. 보안 감사 이후에도 온체인 데이터 모니터링 및 취약점 탐지 자동화 서비스를 이용한 지속적인 디지털 자산 위험 관리 솔루션을 제공합니다.

ChainLight 팀은 사용자들이 탈중앙화 서비스를 안전하게 활용할 수 있도록 Web3 생태계 위협으로부터의 보호에 힘쓰고 있습니다.

  • ChainLight의 더 다양한 정보를 보고 싶으시다면? 👉 Twitter 계정도 방문해 주세요.


🌐 Website: chainlight.io | 📩 TG: @chainlight | 📧 chainlight@theori.io


Originally published at https://blog.theori.io on August 18, 2023.

Share article

Theori © 2025 All rights reserved.