Crypto 보안, 아직 간과되고 있는 '신뢰 사각지대'는 무엇인가?

imToken
本文约4638字,阅读全文需要约19分钟
개인키 외에도 기기 유통, 제3자 서비스, 내부 권한을 따라 사용자 자산까지 전이될 수 있다.

글: imToken

원래 칩이 온전하고 펌웨어도 정품이며, 심지어 공식 정품 인증(Genuine Check)까지 무사히 통과한 하드웨어 지갑인데, 그 안의 자산이 여전히 해커에게 털릴 수 있다고?

최근의 Ledger 보안 사건은 바로 이런 불가능해 보이는 위험을 적나라하게 드러냈다.

Ledger 보안팀이 이후 공개한 조사 결과에 따르면, 공격자는 해당 기기 내부에 악성 회로를 추가로 심었으며, 이 회로는 화면에 표시되는 니모닉(시드 구문)을 가로채 이동통신망을 통해 공격자에게 전송할 수 있었다.

다시 말해, 원래의 보안 칩은 뚫리지 않았지만, 니모닉이 처음 화면에 표시되는 순간 이미 해커의 손에 들어갔을 수 있다는 것이다.

게다가 이것만이 최근 주목할 만한 유일한 보안 사건은 아니다.

9월 이후, Bitget이 제3자 보안 제품 취약점 공격을 당한 것부터, Trezor의 이메일 서비스 제공업체인 Brevo가 침해당한 것, 그리고 MetaMask의 일부 인프라에서 보안 문제가 발생한 것까지, 일련의 사건들은 우리에게 Crypto 제품이 점점 더 복잡해짐에 따라 보안은 더 이상 개인키를 잘 보호하고 스마트 컨트랙트 취약점을 피하는 것만으로는 충분하지 않다는 점을 일깨워 주고 있다.

기기 유통, 제3자 서비스, 내부 권한, 사용자 통신 속에 숨어 있는 위험들 역시 공격자가 노리는 돌파구가 될 수 있다.

1. Ledger가 울린 '공급망 보안'의 새로운 경종

먼저 Ledger의 이번 사건을 분석해 보자.

우리가 평소 하드웨어 지갑을 살 때 경계하는 것은 대개 두 가지다. 짝퉁을 사는 것, 혹은 누군가 미리 초기화해 둔 기기를 받는 것.

초기에 가장 흔했던 수법은 악성 중개업자가 니모닉을 미리 생성해 긁는 카드(스크래치 카드)에 인쇄한 뒤 포장에 다시 넣어 두고, 초보 사용자가 규칙을 모른 채 그대로 입금하기를 노리는 것이었다.

이런 사기는 위험하지만 방어 논리는 명확하다. 정식 경로를 이용하고, 기기 상태를 확인하고, 기기가 스스로 새 니모닉을 생성하는 것을 직접 지켜보며, 절대 포장 상자에 들어 있는 기성 니모닉을 사용하지 않는 것이다.

하지만 이번 Ledger를 겨냥한 공격은 수법이 한 단계 더 진화했다. 해커는 케이스 내부에 마이크로컨트롤러, eSIM, 셀룰러 통신 기능을 갖춘 전자 모듈을 추가로 집어넣었다. 사용자는 지갑을 처음 초기화할 때 어차피 화면을 통해 니모닉을 읽고 받아 적어야 한다.

다시 말해, 심어진 악성 회로는 니모닉 생성 과정에 전혀 개입하지 않고, 단지 니모닉을 감시해 그대로 전송할 뿐이다. 이것이 바로 '개인키가 보안 칩에서 직접 추출되지 않았다'는 것이 '사용자의 지갑 복구 정보가 여전히 안전하다'는 것을 의미하지 않는 이유다.

더 골치 아픈 것은, 기기가 공식 Genuine Check 정품 인증을 통과하더라도 이런 추가 장착된 하드웨어를 반드시 식별할 수 있는 것은 아니라는 점이다. 정품 인증은 주로 보안 칩의 신원과 펌웨어의 신뢰성을 확인하는 것이기 때문이다.

따라서 이번 사건은 우리가 일상에서 쉽게 간과하는 심각한 '공급망 위험'을 실제로 드러냈다. 하드웨어 지갑의 보안은 칩과 펌웨어뿐만 아니라, 그것이 공장에서 사용자 손에 들어오기까지의 전체 전달 과정에도 달려 있다.

결국 하나의 기기는 지역 유통업체, 제3자 창고, 물류, 소매업체 등 여러 단계를 거칠 수 있으며, 기기를 실제로 접촉할 기회가 있는 어떤 참여자든 추가로 평가해야 할 위험 지점이 될 수 있다.

2. Trezor에서 Bitget까지: 공격자는 어떻게 핵심 보안 방어선을 우회했나?

Ledger의 문제를 이해하고 나서 최근 Bitget과 Trezor가 잇달아 겪은 보안 사건을 보면, 그 근본 논리가 놀랍도록 유사하다는 것을 알 수 있다. 공격자 역시 가장 견고한 정면 방어선을 피하고, 외곽의 '제3자 서비스'를 통해 침투했다.

먼저 Trezor를 보자.

9월 초, 일부 Trezor 사용자들은 "Critical Security Alert: STM32 Entropy Vulnerability"라는 제목의 이메일을 받았다. 하드웨어 지갑에 심각한 보안 취약점이 발생했으니 즉시 조치를 취해야 한다는 내용이었다.

이런 이메일은 사용자를 쉽게 긴장하게 만든다. 하드웨어 지갑과 보안 취약점에 관한 내용이니, 누구도 이로 인해 자신의 자산이 손실되기를 바라지 않기 때문이다.

바로 이것이 공격자가 Trezor가 사용하는 제3자 이메일 마케팅 플랫폼인 Brevo를 악용한 것으로, 악성 콘텐츠가 정상적인 이메일 발송 인프라를 통해 사용자 메일함에 도달하게 한 것이다.

Brevo의 후속 사고 보고서에 따르면, 공격자는 자사의 싱글 사인온(SSO) 시스템의 권한 경계 결함을 이용해 다른 고객 계정에 대한 비인가 접근 권한을 획득했고, 최종적으로 138개 고객 계정이 관련되었으며 그중 일부는 피싱 이메일 발송이나 연락처 데이터 유출에 사용되었다.

Trezor는 이후 347,149개의 마케팅 이메일 연락처 주소가 이번 사건에서 유출되었으며, 공격 이메일은 사용자를 유도해 악성 앱을 다운로드하고 지갑 백업 정보를 입력하도록 시도했다고 확인했다.

주목해야 할 점은, 이번 사건에서 Trezor의 하드웨어 지갑이나 개인키 보호 시스템이 뚫렸다는 증거는 없으며, 공격자가 먼저 획득한 것은 사용자 정보와 공식 커뮤니케이션 채널의 악용 능력이다.

하지만 이메일을 받은 일반 사용자 입장에서는 위험을 식별하기가 오히려 더 어려워졌다. 이메일이 익숙한 공식 도메인에서 발송되었을 수 있고 정상적인 이메일 인증 검사도 통과할 수 있지만, 내용은 이미 공격자에 의해 피싱 정보로 바뀌어 있기 때문이다.

만약 사용자가 이로 인해 자발적으로 니모닉을 입력한다면, 원래는 제3자 이메일 서비스의 문제에 불과했던 것이 실제 자산 손실로 이어질 수 있다.

이제 Bitget을 보자.

9월 24일, Bitget의 일부 핫월렛과 웜월렛에서 비인가 자산 이체가 발생했으며, 최종적으로 약 3억 8,800만 달러 규모로 확인되었다.

Bitget이 공식 발표한 조사 결과에 따르면, 공격자는 제3자 보안 제품의 취약점을 이용해 거래소 내부의 고권한 자격 증명을 획득한 뒤, 지갑 관련 백엔드 시스템에 침입해 출금 지시를 위조하고 기존 리스크 관리 검사를 우회하여 비정상 송금이 정상 실행 절차에 진입하도록 했다.

Bitget은 이번 사건에서 개인키 유출은 발견되지 않았고 콜드월렛도 영향을 받지 않았다고 밝혔는데, 이는 다소 모순되어 들린다. 개인키가 도난당하지 않았다면 왜 자금이 이체될 수 있었던 것일까?

사실 이해하기 어렵지 않다.

거래소 같은 수탁형 플랫폼의 경우, 사용자가 출금을 요청하면 매번 사람이 직접 개인키를 들고 건별로 서명하는 것이 아니라, 계정 검증, 리스크 관리 심사, 거래 생성, 지갑 서명 등 일련의 내부 절차를 거쳐야 한다.

이는 은행 금고와 같다. 금고 열쇠를 매우 엄격하게 보관하더라도, 누군가가 내부의 고권한 신원을 도용해 승인을 통과한 이체 지시를 위조할 수 있다면, 금고 안의 자금은 여전히 잘못 이체될 수 있다.

Bitget이 이번에 드러낸 것은 바로 상위 권한과 지시 검증이 무너진 후 위험이 어떻게 자산 실행 시스템으로 추가 전이되는가였다. 따라서 '개인키가 유출되지 않았다'는 것과 '자금이 불법적으로 이체되지 않는다'는 것은 사실 별개의 문제다.

9월 말 MetaMask가 공개한 인프라 보안 사건은 또 다른 차원의 운영 위험을 보여준다.

당시 MetaMask는 예방적 조치로 영향을 받은 일부 스테이킹 검증자에서 자발적으로 이탈했다. 공식 10월 1일 조사 업데이트에 따르면, 아직 MetaMask 지갑이나 고객 자금이 영향을 받았다는 징후는 발견되지 않았으며, 관련 스테이킹 사업도 고객을 대신해 출금 키를 관리하지 않는다.

하지만 이것이 인프라에 문제가 생기면 다른 영향이 발생하지 않는다는 것을 의미하지는 않는다. 비수탁(Non-custodial)이 해결하는 것은 주로 자산 통제권 문제이며, 외부 인프라의 운영 위험을 자동으로 제거하지는 못한다.

이 몇 가지 사건을 함께 놓고 보면, 그 맥락은 사실 매우 명확하다.

  • Ledger가 드러낸 것은 하드웨어 유통 단계의 물리적 변조 위험으로, 최종적으로 니모닉 탈취로 이어질 수 있다;
  • Trezor / Brevo가 드러낸 것은 사용자 정보 유출과 공식 커뮤니케이션 채널 악용 위험으로, 지갑 자체가 뚫린 것과는 같지 않다;
  • Bitget이 드러낸 것은 제3자 제품 취약점이 내부 고권한 시스템으로 전이되는 위험으로, 자금 실행에 직접 영향을 미칠 수 있다;
  • MetaMask는 자산 통제권과 서비스 운영 위험이 같은 개념이 아니라는 점을 일깨워 준다.

종합해 보면, 오늘날의 Crypto 제품은 이미 오래전부터 고립된 섬이 아니다.

지갑은 외부 RPC 노드에 의존해 온체인 데이터를 읽고, 집계 인터페이스에 의존해 시세를 가져온다. 거래소는 외부 보안 모니터링, KYC 인증, 리스크 관리 컴포넌트 없이는 운영할 수 없다. 더 나아가 노드 운영사, 클라우드 업체, 고객 지원 티켓, 그리고 Brevo 같은 이메일 시스템도 있다.

이러한 외부 서비스는 제품이 더 효율적으로 작동하도록 하고 사용자 경험도 개선하지만, 동시에 새로운 외부 의존성을 하나 도입할 때마다 제품은 관리해야 할 신뢰 관계를 한 겹 더 갖게 된다.

제3자가 무엇에 접근할 수 있고, 얼마나 큰 권한을 가지며, 그것이 무너질 경우 위험이 다른 핵심 시스템으로 계속 전이될 수 있는가?

3. 제품과 사용자는 어떻게 방어해야 하나?

점점 더 복잡해지는 제3자 의존 위험과 서로 맞물린 의존 관계에 직면하여, 제품 팀이 '어떤 외부 서비스도 이용하지 않는' 원시 상태로 돌아가기를 기대하는 것은 분명 비현실적이며 시장 법칙에도 맞지 않는다.

진정으로 보안 아키텍처의 역량을 시험하는 것은 가능한 한 모든 위험 노출을 축소하는 것이다.

예를 들어, 마케팅 이메일 발송만 담당하는 SaaS 서비스 제공업체가 무슨 이유로 전체 사용자의 연락처 데이터를 장기간 보유해야 하는가? 제3자 보안 모니터링 도구가 왜 독립적인 다중 승인 없이 핵심 프로덕션 환경에 접근할 수 있는가? 특히 자금 이체와 관련된 민감한 작업의 경우, 내부 시스템 간에 '기본 신뢰'를 해서는 절대 안 되며, 엄격한 권한 격리와 독립적인 교차 검증을 반드시 수행해야 한다.

이는 보안 아키텍처에서 흔히 말하는 '최소 권한'과 '직무 분리'이기도 하다. 이메일 발송 플랫폼은 이메일 발송에 필요한 권한만 가져야 하고, 보안 모니터링 도구는 임의로 자금 이체를 실행해서는 안 되며, 대액 출금도 특정 내부 시스템에서 전달된 지시만으로 바로 승인되어서는 안 된다.

그리고 Ledger 사건은 하드웨어 지갑 제조사에게 보안 관리가 제품의 물리적 유통 단계까지 확장되어야 함을 한층 더 일깨워 준다.

출하, 창고 보관, 물류, 유통업체 전달에 이르기까지, 추적 가능한 관리 프로세스를 어떻게 구축할 것인지, 기기의 이상 분해·조립이나 교체를 어떻게 발견할 것인지, 그리고 문제 발생 시 영향을 받은 배치와 사용자를 어떻게 특정할 것인지는 단순한 채널 관리 업무로 간주되어서는 안 된다.

개인키를 보호하는 하드웨어 기기에게 전달 과정 자체가 보안 체계의 일부이기 때문이다.

물론 일반 사용자로서 우리는 지갑의 소프트웨어 공급망을 감사할 수도 없고, 하드웨어 지갑의 모든 창고 보관 및 물류 단계를 하나하나 조사할 수도 없다.

하지만 이것이 수동적으로 위험을 감수할 수밖에 없다는 것을 의미하지는 않는다. 최소한 몇 가지는 일상 사용에서 습관으로 들일 가치가 있다.