
Cosmos Labs가 공유 모듈인 Cosmos EVM에서 발견된 심각한 취약점(GHSA-7g4w-cg88-2cq2)이 2026년 8월 20일부터 25일 사이에 실제로 악용되어 6개 블록체인에서 자금이 탈취됐다고 발표했습니다. 공격자는 베스팅(잠금) 계정이 스펜더블 잔액보다 더 많은 금액을 위임할 때 발생하는 정수 언더플로 버그를 이용해 약 2^256에 달하는 비정상적으로 큰 잔액을 만들어냈으며, 탈중앙화 거래소와 중앙화 거래소에서 총 약 572만 달러(약 78억 원) 상당의 자산이 처분된 것으로 추산됩니다. Cosmos Labs는 4월에 해당 취약점을 최초 보고받았으나 일부 네트워크에만 영향을 준다고 잘못 판단해 공개 패치(자동 공시) 절차를 밟았고, 8월 13일에 모든 체인이 영향받는다는 사실을 확인한 뒤에도 사설 배포 대신 동일한 공개 절차를 유지해 공격의 빌미를 제공했다는 비판을 받고 있습니다. 운영자는 즉시 v0.6.2 또는 v0.7.2 이상으로 업그레이드하거나, 업그레이드가 불가능한 경우 체인 운영을 중단(halt)해야 합니다.
Cosmos EVM 공유 모듈의 정수 언더플로 취약점(GHSA-7g4w-cg88-2cq2)이 2026년 8월 20~25일 실제 악용되어 6개 블록체인에서 자금이 탈취됐다. 공격자는 베스팅 계정의 잔액 재조정 로직을 악용해 2^256에 달하는 가짜 잔액을 생성했다.
탈중앙화 거래소에서 약 287만 달러, 중앙화 거래소에서 약 285만 달러 등 총 약 572만 달러 상당의 피해가 발생했다. Cosmos 생태계의 115개 이상 공개 블록체인이 잠재적 영향권에 있었으며, Cosmos Labs는 11개 배포 네트워크의 존재조차 사고 발생 전까지 몰랐다.
EVM StateDB가 스펜더블 잔액만 추적하는 반면, Cosmos SDK의 베스팅 계정은 스펜더블과 잠금 잔액을 함께 보유한다. 잠금 잔액을 초과해 위임할 경우 차감 연산이 검증되지 않아 정수 언더플로가 발생하고, 이후 잔액 재조정 과정에서 비정상적인 대량 민팅이 일어난다.
Cosmos Labs는 8월 19일 v0.6.2·v0.7.2를 릴리스했고, 8월 28일 사후 분석 보고서를 공개했다. 운영자는 상태 파괴적(state-breaking) 네트워크 업그레이드를 통해 해당 버전으로 즉시 전환하거나 체인을 중단해야 한다.
패치 배포 시 공개 절차와 비공개(긴급) 절차의 선택 기준이 중요하다. 자체 보안 정책과 실제 판단 사이에 괴리가 있었고, 체인 등록 현황 부재가 사고 대응을 지연시켰다. 다운스트림 운영자는 Cosmos Labs의 보안 채널에 반드시 등록해야 한다.
본문
Cosmos Labs는 공유 Cosmos EVM 모듈의 심각한 잔액 처리 결함이 2026년 8월 20일부터 25일 사이에 6개 블록체인에서 자금을 탈취하는 데 악용됐다고 경고했다.
GHSA-7g4w-cg88-2cq2로 지정된 이 취약점은 Cosmos Labs에 의해 심각(Critical) 등급으로 분류됐으며, CVE 식별자·취약점 분류·CVSS 점수 없이 공개됐다.
영향받는 버전은 < 0.6.2 및 >= 0.7.0 < 0.7.2이며, 수정 버전인 v0.6.2·v0.7.2가 8월 19일 배포됐다. 체인 운영자는 해당 버전 이상으로 업그레이드하도록 안내받았으며, 이 변경은 상태 파괴적(state-breaking)이어서 네트워크 전체의 협조가 필요하다.
즉시 업그레이드할 수 없는 운영자는 협의를 통한 거버넌스 업그레이드를 시도하는 대신 체인을 중단하도록 권고됐다.
8월 28일 공개된 사후 분석 보고서에서 Cosmos Labs는 해당 결함이 4월 25일 버그 바운티 프로그램을 통해 최초 보고됐으며, 당시에는 실제 네트워크의 자금에 위험이 없다고 평가했다고 밝혔다.
Cosmos Labs는 보고서에서 "18자리 소수점 네트워크에서 취약점을 재현할 수 없었으며, 비(非) 18자리 소수점 네트워크에만 영향을 준다고 잘못 결론 내렸다"고 말했다.
팀은 8월 13일까지 소수점 구성과 관계없이 모든 Cosmos EVM 체인이 영향을 받는다는 사실을 확인했다. 이후 패치는 프로덕션 체인에서 자금 손실을 유발하지 않는 이슈에 대해 회사가 채택해 온 동일한 공개적 '사일런트 패치(silent patch)' 절차를 통해 배포됐다.
Cosmos Labs는 "이 시점에 프로덕션 네트워크의 사용자 자금을 위협하는 취약점이라면, 팀은 통상 보안 채널을 통해 영향받는 네트워크에 패치를 비공개로 배포한다. 그러나 알려진 악용 없이 이미 패치가 메인 브랜치에 공개된 상태였으므로, 사일런트 패치 절차를 진행해도 안전하다고 판단했다"고 말했다.
회사가 자체 공개한 사일런트 패치 정책은 이런 유형의 결함에 대해 다른 절차를 규정하고 있다.
Cosmos Labs는 7월 27일 마지막으로 동기화된 버그 바운티 정책에서 "즉각적이거나 네트워크 전반에 걸친 위험이 있을 경우, Cosmos Labs는 공개 공시 이전에 긴급 완화 조치, 비공개 수정 배포, 또는 협의된 업그레이드를 시작한다"고 명시하고 있다.
이 결함은 이더리움 가상 머신(EVM) 상태를 Cosmos SDK의 x/bank 모듈과 일치시키는 코드에 있다. EVM의 StateDB는 계정의 스펜더블(spendable) 잔액만 추적하는 반면, SDK 상태의 베스팅(vesting) 계정은 스펜더블 잔액과 잠금 잔액을 모두 보유하며, x/staking과 스테이킹 프리컴파일(precompile) 모두 잠금 부분도 위임할 수 있도록 허용한다.
베스팅 계정이 스펜더블 잔액보다 더 많은 금액을 위임하면, 위임 후 다시 기록(write-back)하는 과정에서 더 작은 스펜더블 값에서 전체 위임 금액이 차감된다. 이 뺄셈에는 검증이 없어 잔액이 약 2^256으로 래핑(wrapping)된다.
이후 재조정 과정에서 양수 델타(delta)이면 민팅(minting)하고, 음수 델타이면 소각(burning)한다. 공격자는 래핑된 계정에서 유한한 금액을 빼내거나, 피해자 계정에 2^256에서 피해자 잔액을 뺀 금액을 전송해 재조정이 피해자의 실제 자산을 소각하도록 만들 수 있다.
0.6.x 체인은 백킹 SDK 원장에서 민팅·소각하므로, 대규모 민팅 시 공급량 오버플로가 발생해 체인이 중단된다. 0.7.x 체인은 x/bank에 잔액을 직접 설정하며 uint256을 int256으로 변환해도 살아남는 변경을 수용한다.
두 경우 모두, 미리 계산된 주소에 배포된 컨트랙트에서 먼저 베스팅 계정으로 전환된 상태에서 단일 트랜잭션 내에 처리되며, 순 공급량 변화는 0이다. 악용에는 체인이 비허가형(permissionless) 베스팅 계정 생성을 허용해야 한다는 전제 조건이 따른다.
Cosmos EVM을 운영하는 운영자는 다음 조치를 취하도록 권고된다 -
- 업그레이드: 해당 변경이 상태 파괴적이므로 협의된 네트워크 업그레이드 방식으로 v0.6.2 또는 v0.7.2 이상을 적용한다.
- 투표 대신 중단: 즉시 업그레이드할 수 없는 체인은 협의 거버넌스 업그레이드를 진행하는 대신 블록 생성을 중단한다. 권고문은 구성만으로 가능한 완화책은 없으며, 스테이킹 프리컴파일 비활성화는 주요 트리거 경로를 제거하지만 패치의 대체 수단이 될 수 없다고 명시한다.
- 전제 조건 차단: 앤티핸들러(ante handler)에서
MsgCreateVestingAccount,MsgCreatePermanentLockedAccount,MsgCreatePeriodicVestingAccount를 거부한다. 제네시스(genesis)에 정의된 베스팅 계정은 영향을 받지 않는다. - 포크에서 라이브 코드 경로 검증: 익스포트된(exported) 헬퍼만 패치하는 체리픽(cherry-pick)은 언익스포트된(unexported) 복사본을 그대로 두어 모든 테스트가 통과하면서도 실제 경로는 미패치 상태로 남을 수 있다.
- 권고문이 누락한 두 수정 사항 적용: 잠금 잔액 스냅샷과 모듈 계정 가드는 별도의 변경이며, 모듈 계정 가드는 모듈 계정을 무조건 거부하므로 모듈 계정에서 이루어지는 EVM 호출이 중단된다.
- 보안 연락처 등록: Cosmos Labs는 이번 사고 중 보안 채널에 등록하지 않은 Cosmos EVM 배포 11건을 새로 파악했다.
권고문에는 5월 15일 풀 리퀘스트(PR) #1176으로 main에 머지되고 8월 13일 백포트(backport)된 SubBalance 언더플로 가드라는 업스트림 변경 하나가 기재되어 있다. 같은 저장소에는 두 개의 잔액 수정 사항이 더 있으나 권고문에는 전혀 언급되지 않았다.
5월 20일 머지된 PR #1187은 프리컴파일이 잔액을 변경한 후 뱅크 잔액이 올바르게 재구성되도록 계정의 잠금 잔액을 스냅샷한다. #1187의 양 릴리스 라인 백포트는 당일 열려 24시간 이내에 머지된 반면, 동등하게 상태 파괴적인 변경인 #1176의 백포트는 약 90일 뒤에야 이루어졌다.
"Merge commit from fork"라는 제목의 커밋 3524ebc는 모듈 계정의 잔액 설정 시도를 거부한다.
ZetaChain 기여자 morde08는 8월 21일 공개된 세 수정 사항 모두의 포트에서, 포크가 언익스포트된 헬퍼 복사본을 가지고 있는 반면 업스트림 변경은 익스포트된 것만 수정했기 때문에 체리픽 패치가 포크의 라이브 경로를 미패치 상태로 남겼다고 밝혔다.
Warden Protocol은 이틀 뒤 다른 방법을 택해 베스팅 계정 생성을 전면 차단했다.
Warden Protocol 기여자 jlehtimaki는 커밋 메시지에서 "베스팅 계정은 Warden에서 잠금 잔액의 유일한 원천이며, 사용자가 이를 생성할 수 있는지에 의존하는 것은 없으므로, 해당 경로를 제거함으로써 재구성이 올바른지 의존하는 대신 전제 조건 자체를 차단한다"고 말했다.
Push Chain의 Cosmos EVM 포크에 있는 공개 풀 리퀘스트는 릴리스 후 8시간 15분이 지난 8월 20일 07:16 UTC에 취약점과 악용 경로를 상세히 서술했다.
최초 공격인 MANTRA 공격은 그로부터 11시간 50분 뒤인 19:06 UTC에 시작됐다. Cosmos Labs는 MANTRA가 피해를 보고한 뒤 약 2시간 후인 8월 21일 03:36 UTC에 보안 이메일을 통해 첫 번째 비공개 알림을 발송했다.
Cosmos Labs는 보고서에서 "Cosmos Labs는 지난 13개월 동안 다운스트림 개발자들이 공개 채널에서 악용 경로를 상세히 설명하지 않은 채 37개의 취약점을 사일런트 방식으로 패치했다"고 밝혔다.
v0.6.2와 v0.7.2 릴리스 노트 모두 해당 릴리스에 중요한 보안 수정 사항이 포함되어 있으며 가능한 한 빨리 적용해야 한다고 명시하면서도, 변경 이력(changelog)에서 보안 백포트를 누락했다. The Hacker News는 8월 29일, 두 릴리스 어디에도 해당 풀 리퀘스트가 기재되지 않았음을 확인했다.
Cosmos Labs는 악용이 확인된 체인이 6개라고 밝혔다.
공격자는 8월 19일 가격 기준으로 탈중앙화 거래소에서 약 287만 달러 상당의 영향받은 자산을 매도했으며, Cosmos Labs는 이 수치가 피해 체인의 제공 데이터에 기반하며 독립적 검증이 이루어지지 않았다고 밝혔다. 중앙화 거래소에서는 약 285만 달러가 추가 매도됐으며, Cosmos Labs는 이 수치를 공개적으로 이용 가능한 거래량 데이터를 기반으로 추산했다.
Cosmos 생태계는 115개 이상의 공개 블록체인을 포괄하며, 회사는 자사 소프트웨어를 실행하는 네트워크의 완전한 레지스트리를 보유하지 않는다고 밝혔다. 이 동일한 공백이 7월에 다운스트림 벤더들이 번들로 포함된 파일시스템 결함을 패치하는 상황을 초래했다.
The Hacker News는 팀이 모든 체인이 영향을 받는다는 사실을 확인한 후 왜 패치를 비공개로 배포하지 않았는지에 대해 Cosmos Labs에 논평을 요청했으며, 답변이 오는 대로 기사를 업데이트할 예정이다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.





