출처: 블록미디어
렛저는 지난 14일(현지 시간) 웹사이트를 지갑에 연결하는 자바스크립트 라이브러리인 렛저 커넥트 키트를 통한 코인 탈취(익스플로잇) 사건을 당했다.
이번 사고의 경위는 [렛저 해킹 사건 총정리 (1)] 도마 위에 오른 셀프 커스터디, “내 코인을 내 지갑에?” 기사에서 알아봤다.
하드웨어 월렛의 라이브러리가 해킹 당했을 경우 어떻게 대처해야 할까? 렛저와 웹3 보안감사 업체 체인라이트가 제시한 대처법과 한계를 알아봤다.
# 렛저가 제시한 대처방법 “블라인드 서명 방식을 지양하세요?” …일반인에게는 너무 어렵다
렛저는 해킹 직후 “블라인드 서명이 아니라 명확한 서명이 이러한 문제를 완화할 수 있다”라고 대처 방법을 제시했다.
사용자가 믿을 수 있는 디스플레이(컴퓨터 화면 자체)에서 서명하는 내용을 볼 수 있다면 본인이 희망하지 않는 불량 트랜잭션에 서명하는 걸 방지할 수 있다는 것.
이는 현실적으로 불가능한 해법이다.
블라인드 서명은 컴퓨터에 적합한 원시 데이터를 사용한다. 일반 사용자들은 이를 해석하고 읽을 수 없다. 몇 바이트만 변경해도 자금이 쉽게 탈취 될 가능성이 높다.
게다가 렛저 생태계 외부 앱과 상호작용할 때는 장치에서 블라인드 서명 활성화가 필수다. 결국 ‘블라인드 서명’은 피할 수 없다.
블라인드 서명이 익숙해진 사용자들은 메시지가 표시되면 정보를 확인하지 않고 무엇이든 승인하게 된다는 부작용까지 있다.
투명한 서명을 사용할 때 신뢰할 수 있는 디스플레이에서 서명 내용을 볼 수 있다. 렛저는 해킹 직후 공식 성명을 통해 투명한 서명 방식을 통해서만 트랜잭션 승인을 할 것을 권장했다.
체인라이트 임준오 리드는 “유저가 트랜잭션을 읽을 수 있다면 투명하고, 분명한 사인을 보는 게 가능하다. 그러나 일반 유저 입장에서 생각해자. 보통의 사람이 확인할 수 있는 메시지가 아니라면 이걸 어떻게 확인하겠나. 현실적으로 어렵다”라고 설명했다.
체인라이트(ChainLight) 팀은 사이버 보안 스타트업인 티오리(Theori) 산하의 웹3 보안을 전문으로 담당하고 있다.
임 리드는 “이번 일은 월렛 커넥트 라이브러리가 해킹 당한 사건이다. 아무리 하드웨어 월렛을 사용해도 트랜잭션을 수락했다면 해킹당할 수밖에 없었다”고 지적했다.
임 리드는 “만약 사용자가 트랜잭션을 시뮬레이션해 줄 수 있는 크롬 익스텐션(예: 포켓 유니버스)를 사용했다면 비정상적인 트랜잭션을 확인할 수 있다. 시뮬레이션 기능이 레인보우 월렛에는 구현돼 있으나 메타마스크에는 아직 제대로 구현되지 않았다”라고 설명했다.
한 마디로 일반인들은 당할 수 밖에 없었다는 것.
# 체인라이트 “브라우저 캐시 삭제가 최선”
체인라이트는 렛저 사태 직후 해결 방안을 이렇게 제시했다.
애플리케이션은 문제가 해결될 때까지 웹사이트를 오프라인 상태로 전환해야 한다.
렛저 회사는 NPM-JS 의 2FA(2단계 인증)를 활성화해야 한다. 렛저 커넥트 패키지 신규 버전을 출시하고 기존 버전 제공을 취소해야 한다. CDN 캐시도 삭제해야 한다.
일반인들의 경우 브라우저 캐시를 삭제해야 한다. 손상된 라이브러리에서 캐시를 불러오는 걸 방지할 수 있다.
우선 F12를 눌러 ‘개발자 도구’를 연다. ‘신청’ 탭을 클릭 후 ‘저장소’ 탭을 선택해 ‘사이트 데이터 지우기’를 클릭한다.
캐시 삭제는 완전한 예방책이 될 수 없다. 해킹 피해가 의심되는 경우 보안을 극대화하기 위한 조치 중 하나에 불과하다.
이미 악성 드레이너와 상호작용한 경우 거래가 취소가 되지 않기 때문이다.
이번 렛저 해킹 사태로 렛저 회사 뿐만 아니라 하드웨어 월렛을 이용하는 ‘셀프 커스터디’ 방식이 위기에 직면했다.