MALT, 스왑 함수가 재무 DAI를 사용자 돈으로 착각…7만 2,000달러 털렸다

Google 검색에서
선호 출처로 추가

선호 출처로 추가하면 Google 주요 뉴스에 위키트리 기사가 더 자주 표시됩니다.

MALT, 스왑 함수 결함으로 약 7만 2,000달러 탈취당해
재무 DAI를 거래자 자금으로 오인한 설계 허점이 원인

스왑 함수가 재무 자금을 ‘사용자 돈’으로 착각했다 — AI로 생성한 자료 이미지
스왑 함수가 재무 자금을 ‘사용자 돈’으로 착각했다 — AI로 생성한 자료 이미지

디파이(DeFi·탈중앙화 금융) 프로토콜 MALT에서 약 7만 2,000달러가 빠져나갔다. 블록체인 보안업체 슬로우미스트(SlowMist)는 10월 3일(현지시각) 공격자가 MALT의 스왑 함수 결함을 파고들어 이 금액을 빼냈다고 밝혔다. 프로토콜 재무(treasury)가 공급한 DAI가 공격 통로가 됐다.

피해 규모는 크지 않다. 하지만 사용자가 낸 돈과 프로토콜이 넣은 돈을 구분하지 못한 설계 결함이라는 점에서 눈여겨볼 사고다.

스왑 함수가 재무 자금을 ‘사용자 돈’으로 착각했다

슬로우미스트는 문제가 된 부분이 MALT의 swap(uint256,uint256,address) 함수라고 지목했다. 이 함수는 거래자가 넣은 입력값과 스왑 이전의 풀 준비금(reserves)을 먼저 기록한다. 그 뒤 요청된 출력물을 내보내기 전에 외부의 리밸런싱 함수인 rebalanceHook을 호출한다.

문제는 이 훅이 실행되는 동안 벌어진다. 슬로우미스트에 따르면 훅은 MALT의 캐피털 소스(Capital Source)에서 DAI를 꺼내 풀로 되돌려 넣는다. 이 DAI는 프로토콜 재무가 댄 자금이다.

스왑 함수는 유효성 검사 단계에서 이 자금을 거래자가 낸 돈으로 취급했다. 코인에디션(Coin Edition)이 정리한 슬로우미스트 분석에 따르면 결함의 핵심은 사용자 자금과 리밸런싱 과정에서 추가된 자본을 분리하지 못한 데 있다. 검증 로직이 돈의 출처를 따지지 않은 셈이다.

작은 입력으로 더 많은 MALT를 받아 갔다 — AI 자료 이미지
작은 입력으로 더 많은 MALT를 받아 갔다 — AI 자료 이미지

작은 입력으로 더 많은 MALT를 받아 갔다

공격자는 이 허점을 이용해 적은 금액만 넣고 스왑을 실행했다. 슬로우미스트는 공격자가 거래 조건상 받을 수 없는 양보다 더 많은 MALT를 받았다고 설명했다. 프로토콜이 채워 넣은 유동성의 혜택을 자기 돈 한 푼 들이지 않고 챙긴 구조다.

피해액은 슬로우미스트 경보 기준 약 7만 2,000달러다. 슬로우미스트는 이 사건을 위협 인텔리전스 경보로 올렸고, 근본 원인 항목에 함수의 동작 순서를 적어 공개했다. 트윗 임베드에는 훅이 DAI를 인출한 뒤 입금하는 과정이 길게 이어지지만 일부는 잘려 있다.

MALT 팀의 공식 입장이나 보상 계획도 확인되지 않았다. 이 부분은 추가 공지를 기다려야 한다.

토큰 가격 0달러, 거래량 없음

코인포매니아는 MALT가 현재 0달러에 거래되고 있으며 최근 24시간 거래량도 기록되지 않았다고 전했다. 이 매체는 거래 부재가 공격 이후 투자자들이 노출 규모를 재점검하는 분위기를 반영할 수 있다고 해석했다. 다만 이는 해당 매체의 해석이며 구체적인 원인은 소스에서 확인되지 않는다.

코인포매니아는 MALT를 사용자가 토큰을 교환하고 유동성 풀에 참여할 수 있는 탈중앙화 금융 프로토콜로 소개했다. 또 공격자가 입력 대비 과도한 금액을 인출할 수 있었다는 점을 짚었다. 이 매체는 이런 사고가 디파이 프로토콜에 대한 신뢰를 낮추고 MALT의 채택과 시장 인식에 영향을 줄 수 있다고 봤다.

시세 수치는 매체마다 기준 시점이 다를 수 있다. 위 내용은 코인포매니아 한 곳의 보도라서 가격이 정확히 0으로 집계됐는지는 별도로 확인이 필요하다.

디파이 해킹 줄 잇는 가운데 터진 사고

코인에디션은 MALT 사건이 최근 디파이 프로젝트를 겨냥한 여러 공격에 이어 터졌다고 짚었다. 첫째는 NEAR 인텐츠다. 10월 1일 발생한 공격으로 약 380만 달러 손실이 났고 서비스가 중단됐다. 팀은 계약 결함을 고쳤고 피해 사용자에게 전액 보상하겠다고 밝혔다.

NEAR 인텐츠는 당시 공식 계정을 통해 옴니 입출금 인프라와 NEAR 인텐츠 스마트 계약의 상호작용에서 생긴 버그가 원인이라고 설명했다. 예비 보고서 기준 총손실 규모는 380만 달러 안팎이다.

둘째는 플래시루프어댑터 사건이다. 에이브 V3 포지션을 쓰는 세이프 지갑 2개에서 약 30만 5,000달러가 빠져나갔다. 코인에디션에 따르면 공격이 노린 곳은 에이브 V3의 핵심 계약이 아니라 맞춤형 모듈이었다.

디파이 해킹 누적 규모도 함께 제시됐다. 디파이라마 데이터 기준 손실은 210억 달러를 넘는다. 이 가운데 디파이 프로토콜에서 나온 몫이 약 92억 8,000만 달러, 브리지에서 나온 몫이 36억 9,000만 달러다.

훅 구조가 남긴 과제

이번 사고에서 드러난 패턴은 외부 호출과 자금 회계의 순서다. 스왑 함수는 출력물을 보내기 전에 외부 함수를 불러냈고 그 사이에 풀로 들어온 재무 자금이 거래자의 입금처럼 계산됐다. 슬로우미스트의 지적대로라면 리밸런싱 과정에서 들어온 자본을 별도로 구분했다면 막을 수 있는 구조였다.

코인에디션이 인용한 사례들은 서로 원인이 다르다. NEAR 인텐츠는 입출금 인프라와 계약의 상호작용 버그였고 플래시루프어댑터는 맞춤형 모듈이 표적이었다. MALT는 스왑 로직 안의 자금 출처 구분 실패다.

코인포매니아는 MALT 팀이 보안 침해에 어떻게 대응하는지와 신뢰 회복 조치가 무엇인지가 앞으로 시장의 평가를 가를 것이라고 짚었다. 현재까지 소스에서 확인되는 후속 조치는 없다.