가상화폐를 인터넷으로부터 격리하는 방식으로 안전하게 관리할 수 있는 하드웨어 월렛. 그러나 이 하드웨어 월렛의 비밀번호를 잊어버려 200만 달러(약 23억 원) 상당의 가상화폐를 사용할 수 없게 되어 버렸다는 인물이 등장했습니다. 이 하드웨어 월렛의 비밀번호를 잊어버리는 상황은 비교적 빈번한데, 해커인 친구에게 이 하드웨어 월렛을 해킹하도록 요청해 대처한 사례가 보고되었습니다.

Cracking a $2 million crypto wallet - The Verge
https://www.theverge.com/2022/1/24/22898712/crypto-hardware-wallet-hacking-lost-bitcoin-ethereum-nft

Cracking a $2 million crypto wallet

Breaking through crypto security

www.theverge.com


2018년 초 댄 라이히와 그 친구는 비트코인으로 다른 가상화폐인 세타(Theta) 토큰을 5만 달러(약 5700만 원)어치 구매했습니다. 당시 세타토큰은 1개당 불과 21센트(약 240원)이었기 때문에 라이히 씨는 대량의 세타토큰을 입수하게 됩니다. 라이히 씨는 중국에 거점을 두는 가상화폐 거래소에 세타토큰을 보유하고 있었지만 몇 주 후에 중국 정부에 의한 광범위한 단속이 시작되면서 그대로 둔다면 거래소에 액세스할 수 없게 되어 세타토큰도 취급할 수 없게 되어 버리기 때문에 라이히 씨는 가상화폐를 통신으로부터 격리된 장소에 보관하는 하드웨어 월렛에 세타토큰을 보관할 필요성을 느꼈습니다. 라이히 씨는 Trezor이 만든 하드웨어 월렛을 구입해 비밀번호를 설정한 후 세타토큰을 보관했습니다. 그 후 라이히 씨는 바쁜 일상에 치이면서 하드웨어 월렛의 존재를 완전히 잊어버렸다고 합니다.

어느 날 세타토큰을 현금화하고 싶다고 생각하게 된 라이히 씨는 친구가 하드웨어 월렛의 비밀번호가 적힌 종이를 분실한 것을 알게 되었습니다. 당초 라이히 씨는 4자리의 비밀번호를 설정했다고 생각해 입력하며 숫자를 추측하려고 했지만 실패할 때마다 대기시간이 2배로 연장되어 갔다고 합니다. 또 비밀번호 입력에 16회 실패하면 하드웨어 월렛 내의 데이터가 모두 자동으로 삭제되는 사양이었기 때문에 라이히 씨는 비밀번호를 입력해 찾는 시도를 포기합니다.


하드웨어 월렛에 저장된 세타토큰의 가치는 최소 1만2000달러 정도였지만 가격상승으로 300만 달러(약 34억 원)까지 상승한 적도 있었다고 합니다.

블록체인으로 구축된 가상화폐를 이용하려면 비밀키를 사용해야 합니다. 비밀키 혹은 비밀키를 출력하기 위해서 사용되는 단어의 문자열(시드) 없이는 가상화폐를 판매하고 사용할 수 없습니다. 그러나 비밀키를 얻을 수 있다면 한 번의 익명 트랜잭션으로 가상화폐를 얻을 수 있습니다. 비밀키는 가상화폐의 소프트웨어 월렛에 저장할 수 있지만 소프트웨어 월렛은 인터넷에 있으므로 원격공격에 취약하다는 단점이 있습니다.

반면 라이히 씨가 사용한 USB 메모리 크기의 하드웨어 월렛은 비밀키를 로컬장치에 저장해 인터넷으로부터 격리하고 안전하게 가상화폐를 운영할 수 있습니다. 다만 사용시에 입력하는 비밀번호를 잊어버렸을 경우 라이히 씨처럼 가상화폐를 이용할 수 없게 되어 버린다는 단점이 있습니다.

가상화폐 관련 조사기업인 Chainalysis에 따르면 비밀키를 분실하거나 소프트웨어 월렛이 저장된 PC나 스마트폰을 분실함으로써 가상화폐에 액세스할 수 없게 된다는 사례는 상상 이상으로 많다고 합니다. Chainalysis의 추정에 따르면 665억 달러(약 76조 원) 상당의 비트코인이 비밀키에 액세스할 수 없게 된 상태라고 합니다.


세타토큰의 가치가 급등한 2020년이 들어 라이히 씨는 하드웨어 월렛에 접근하는 방법을 필사적으로 찾기 시작했습니다. 2018년에 Trezor이 제작한 하드웨어 월렛에 액세스하는 방법을 발견했다는 하드웨어 전문가의 강연을 발견한 라이히 씨는 이 전문가에게 연락했지만 돕는 것을 거부했다고 합니다.

그 후 스위스의 금융업자가 "프랑스에 하드웨어 월렛을 크래킹할 수 있는 지인이 있다"고 소개했지만 하드웨어 월렛을 금융업자에게 맡기고 프랑스까지 옮겨 달라는 요구가 있었습니다.

그 후 신종 코로나바이러스의 대유행에 하드웨어 월렛을 크래킹하는 계획이 좌절하고 있었는데, 갑자기 보다 좋은 선택지가 생겼다고 합니다. 그 선택지는 미국의 하드웨어 해커인 조 그랜드 씨에게 의뢰한다는 것이었습니다.


그랜드 씨는 10세 무렵부터 하드웨어 해커로 활약해 온 인물로 유명한 해커집단인 L0pht의 일원이며 1998년에 상원의회에서 취약성에 대해 강연한 이력도 있습니다.

소프트웨어 개발기업을 운영하는 전기기사이기도 한 라이히 씨는 그랜드 씨가 하드웨어 월렛을 크래킹하는 능력을 가지고 있다는 것을 바로 확신했다고 합니다.

라이히 씨로부터 하드웨어 월렛의 크래킹을 의뢰받은 그랜드 씨는 같은 하드웨어 월렛을 여러 개 구입한 후 3개월에 걸쳐 하드웨어 월렛을 크래킹하는 방법을 연구해 실험용으로 구입한 것을 크래킹하는 데 성공했습니다.

그랜드 씨에 따르면 하드웨어 월렛을 크래킹하는 데 도움이 되는 몇 가지 선행연구가 있는데, 2017년 영국 하드웨어 해커인 Saleem Rashid 씨가 기술저널리스트인 Mark Frauenfelder 씨가 소유한 Trezor이 제작한 하드웨어 월렛을 크래킹한 방법이 참고가 되었다는 것.


Rashid 씨는 Trezor의 하드웨어 월렛이 전원을 켜면 시큐러티로 보호된 플래시메모리 부분에 보존되고 있는 비밀번호의 카피를 메모리(RAM)에 카피한다는 사실을 발견했습니다. 따라서 취약점을 이용하여 하드웨어 월렛을 펌웨어 업데이트 모드로 시작하고 독자적으로 만든 코드를 설치하여 RAM의 비밀번호를 읽는 데 성공했습니다. 다만 이 방법은 데이터를 읽기 전에 RAM의 데이터를 지워버리면 비밀번호가 영원히 없어져 버리게 됩니다.

그 외에도 Rashid 씨가 Trezor의 하드웨어 월렛을 크래킹하는 방법을 공개하자 Trezor사는 하드웨어 월렛의 사양을 변경해 기동시에 RAM에 카피되는 비밀번호를 펌웨어 갱신모드가 되었을 때에 RAM에서 삭제되도록 했습니다.

그래서 그랜드 씨는 2018년에 발표된 'wallet.fail'이라는 기술에 주목합니다. 이 방법은 Trezor의 하드웨어 월렛에 있는 '시동시 RAM에 복사된 비밀번호를 삭제하지만 다른 단계에서 삭제된 비밀번호가 복원된다'는 사양을 찌른 공격입니다.

Trezor의 하드웨어 월렛에 탑재된 마이크로컨트롤러에는 RAM을 읽을 수 없는 가장 안전한 'RDP2', RAM을 읽을 수 있는 'RDP1'과 'RDP0'라는 3가지의 보안레벨이 존재합니다. Trezor의 하드웨어 월렛에서는 RDP2를 이용함으로써 RAM내의 비밀번호가 가로채어질 위험이 막혀 있는데, 마이크로컨트롤러에 흐르는 전압에 영향을 주는 칩에 폴트 인젝션 공격을 가하면 보안레벨을 RDP2에서 RDP1로 다운그레이드할 수 있습니다. 따라서 wallet.fail은 폴트 인젝션을 사용한다는 점을 제외하면 Rashid 씨가 고안한 공격방법과 매우 비슷합니다.


그랜드 씨는 라이히 씨의 하드웨어 월렛에 설치된 펌웨어 버전에서 하드웨어 월렛을 켤 때 비밀번호가 RAM에 복사된다는 사실을 발견합니다. 이는 비밀번호를 스토리지에서 복사하고 비밀번호의 마스터키는 스토리지에 저장되어 있음을 의미합니다. 즉 만약 크래킹을 잘못해서 하드웨어 월렛의 RAM을 삭제해도 비밀번호는 스토리지에 남아 있으므로 비밀번호가 사라져 버리는 위험을 한없이 낮추면서 크래킹에 도전할 수 있다는 것입니다.

따라서 그랜드 씨는 'wallet.fail'을 기반으로 크래킹을 실행해 약 3시간 반이 걸려 마침내 하드웨어 월렛의 비밀번호를 읽어내는 데 성공했습니다. 라이히 씨는 4자리의 비밀번호를 설정했다고 생각했는데 실제로는 5자리의 비밀번호가 설정되어 있었다고 합니다.

Trezor사는 라이히 씨의 하드웨어 월렛을 그랜드 씨가 크래킹하는 데 성공했다는 보도에 "크래킹에 사용된 취약점은 이미 수정되었으며 당사의 모든 신제품은 수정된 부트로더로 배송됩니다”라고 트윗했습니다.



Posted by 말총머리
,