보안 현실 확인: 시드프레이즈를 훔치는 최고 순위의 Chrome '지갑'

이 기사는 기계로 번역되었습니다
원문 표시

11월 며칠 동안 악성 Chrome 확장 프로그램이 Chrome 웹 스토어에서 "이더리움 지갑" 검색 결과에서 4위를 차지했습니다.

"Safery: Ethereum Wallet"이라는 이름의 이 확장 프로그램은 겉보기에 정식 앱처럼 보였습니다. 깔끔한 아이콘, 보안 관련 용어 옆에 붙은 일반 이름, 별 다섯 개 만점 리뷰, 그리고 암호화폐 지갑을 다운로드해 본 사람이라면 누구나 익숙할 법한 판에 박힌 설명까지.

프런트엔드 뒤에는 시드 문구를 훔치고 Sui 블록체인에서 훔친 비밀을 마이크로 트랜잭션으로 인코딩하여 사용자 지갑을 비우도록 설계된 특수 공격이 있었습니다.

오픈소스 소프트웨어 공급망에 중점을 둔 보안 툴 회사인 소켓은 해당 확장 프로그램이 발견된 후 설치하고 분석했습니다.

그들의 목표는 "Safery"가 어떻게 탐지를 피하고, Chrome 스토어 순위를 상승시키고, 도난당한 시드 구문을 경보 없이 이동시켰는지, 그리고 사용자가 유사한 위협을 감지하기 위해 무엇을 할 수 있는지 파악하는 것이었습니다. 이 보고서는 공격자의 접근 방식을 자세히 살펴보는 동시에, 브라우저 확장 프로그램이 암호화폐 업계에서 여전히 위험한 맹점으로 남아 있다는 경고이자 사후 분석의 역할을 합니다.

이 사건은 해커들이 단순히 시드 문구만 훔친 것이 아니기 때문에 주목할 만합니다. 안타깝게도 이 부분은 암호화폐 업계에서 흔히 다뤄지는 영역입니다.

주목할 점은 Safery가 기존 지갑 브랜드를 스푸핑하지 않았다는 것입니다. MetaMask와 유사하거나 재활용된 피싱 도메인도 아니었습니다. Safery는 신원을 만들어내고, 검색 순위를 올리기 위해 가짜 리뷰를 구매하거나 봇으로 전송하여 "새로운" 지갑 옵션으로 출시했습니다.

이러한 접근 방식 덕분에 목록에 즉각적인 위험 신호가 나타나지 않았습니다. 문법 오류, 이상한 권한, 불법 도메인으로의 리디렉션이 없었습니다.

Chrome 웹 스토어 게시자 페이지에는 이전에 불만 사항이 없었고, 지원 URL은 Socket의 분석 당시 보안 추적기에 의해 플래그가 지정되지 않은 오프 플랫폼 사이트로 연결되었습니다.

세련된 디자인 덕분에 대부분의 사용자는 "Chrome에 추가"를 클릭하기 전에 주저하지 않았을 것입니다. 이 확장 프로그램은 "모든 웹사이트에서 실행"을 요청하는데, 이는 분산형 앱에 접근해야 하는 암호화폐 지갑에서 흔히 볼 수 있는 요청입니다.

특히, 추가 권한을 요청하거나 Chrome의 더욱 공격적인 경고를 유발하는 콘텐츠 스크립트를 삽입하지 않았습니다. 브랜딩은 간결했고, 웹사이트는 확장 프로그램 이름과 일치했으며, 설정 화면에서는 사용자에게 지갑을 생성하거나 가져오라는 안내가 표시되었는데, 이는 역시 일반적인 동작입니다.

수이에서 방송된 씨앗 강도 사건

진짜 피해는 시드 문구가 입력된 순간부터 시작되었습니다. 해당 확장 프로그램은 문구를 로컬에 저장하거나 사용자 접근을 위해 암호화하는 대신, 자동으로 여러 조각으로 분할하여 마치 무작위 지갑 주소처럼 보이도록 인코딩했습니다.

소켓의 조사에 따르면 이러한 조각들이 Sui 블록체인 거래에 삽입된 것으로 나타났습니다. 구체적으로, 해당 확장 프로그램은 공격자가 관리하는 주소로 주의를 끌지 않을 정도로 작은 SUI 토큰을 전송했습니다.

이러한 거래 내역, 즉 메모 필드나 난독화된 주소 안에는 사용자의 시드 문구 일부가 숨겨져 있었습니다.

이 접근 방식에는 전술적인 이점이 있었습니다. 확장 프로그램이 악성 서버로 아웃바운드 요청을 보낼 필요가 없었습니다. 브라우저나 바이러스 백신 프로그램이 탐지할 수 있는 HTTP 또는 웹소켓을 통한 명령 및 제어(C&C) 비콘이나 유출도 없었습니다.

페이로드는 사용자 기기에서 일반적인 블록체인 거래처럼 보이며, 널리 사용되는 저비용 체인을 통해 전송되었습니다. 온체인으로 전송된 데이터는 공개적으로 접근 가능하여 공격자는 나중에 사용자 기기를 다시 건드리지 않고도 데이터를 검색하고, 시드 구문을 재구성하고, 지갑을 훔칠 수 있습니다.

실제로 이 사기는 Sui 블록체인 자체를 통신 채널로 사용했습니다. Sui는 확인 시간이 빠르고 거래 비용이 거의 들지 않기 때문에 마치 저지연 메시지 버스처럼 작동했습니다.

소켓은 이러한 시드 조각 거래의 여러 사례를 추적하여 시드 입력과 최종 자산 손실 간의 연관성을 확인했습니다. 도난은 이더리움이나 피해자 지갑에 자금이 보관된 다른 L1 네트워크 등 오프체인에서 발생했지만, 이를 실행하는 방법은 뻔히 드러났습니다.

Chrome 지갑 상위 검색 결과에 포함된 버전을 출시하기 전에 해당 게시자는 비공개로 이 방법을 테스트했을 가능성이 높습니다. 증거에 따르면 이전 빌드는 Sui 인코딩이 개선되기 전에 더 간단한 데이터 유출을 시도했습니다.

활성 확장 프로그램이 신고되었을 당시, 크롬의 "트렌딩" 단계에 도달할 만큼 충분한 설치 수를 기록하며 가시성을 더욱 높였습니다. 브레이브 뉴 코인(Brave New Coin)은 레딧(Reddit)과 텔레그램(Telegram)에 의심스러운 동작에 대한 신고가 유포되고 있음에도 불구하고 "세이퍼리(Safery)" 지갑이 "이더리움 지갑" 검색 결과 상위권에 올랐다고 보도했습니다.

Chrome 알고리즘이 이런 일이 일어나도록 한 방법

"Safery"의 성공은 Chrome의 순위 로직에 달려 있었습니다. 웹 스토어 검색 알고리즘은 키워드 일치도, 설치 수, 리뷰 속도, 평균 평점, 업데이트 최신성 등을 평가합니다.

특히 틈새 시장에서 폭발적인 활동을 보이는 확장 프로그램은 검증된 경쟁 업체가 자주 업데이트되지 않으면 빠르게 성장할 수 있습니다. 이 경우, "Safery"는 일반적인 검색어에서 높은 점수를 받은 이름, 긍정적인 리뷰, 템플릿 또는 중복 리뷰가 많았으며, 업로드 날짜도 최신이었습니다.

Google이 게시 전에 이 목록을 수동으로 검토했다는 증거는 없습니다. Chrome 웹 스토어 정책에 따라 대부분의 새로운 확장 프로그램은 간단한 자동 검사와 기본적인 정적 분석으로 처리됩니다.

확장 프로그램은 탭, 클립보드, 파일 시스템 또는 기록 접근과 같은 높은 권한을 요청할 때 더욱 심층적인 조사를 받습니다. 지갑 확장 프로그램은 iframe 내에서 작동하거나 승인된 API를 사용하여 이러한 플래그를 피하는 경우가 많습니다. "안전성"은 이러한 범위 내에서 유지되었습니다.

사용자가 우려를 제기했을 때조차, 신고와 삭제 사이의 시간이 길어져 피해가 발생할 수 있었습니다. 이러한 지연의 일부는 구조적인 문제입니다. Chrome은 압도적인 합의나 알려진 악성코드 시그니처가 없는 한 신고된 확장 프로그램에 즉시 조치를 취하지 않습니다.

이 경우, 페이로드는 외부 호스트가 아닌 블록체인 인프라에 의존하는 난독화된 JavaScript였습니다. 기존의 악성코드 탐지 방법으로는 이를 포착할 수 없었습니다.

크롬 확장 프로그램을 이용해 암호화폐를 훔친 사례는 이번이 처음이 아닙니다. 이전에도 가짜 Ledger Live 앱을 이용해 사용자에게 복구 문구를 입력하게 하거나, 합법적인 확장 프로그램을 해킹하여 공격자가 개발자의 퍼블리싱 키에 접근할 수 있도록 하는 사기 사례가 있었습니다.

"세이퍼리(Safery)"를 차별화하는 요소는 매끄러운 외관과 백엔드 인프라의 부재입니다. 제거할 피싱 사이트도, 차단할 서버도 없었습니다. 단지 하나의 확장 프로그램이 비밀 정보를 퍼블릭 체인으로 옮기고 그냥 지나가는 것뿐이었습니다.

사용자들은 여전히 어느 정도 대응책을 마련할 수 있었습니다. 신속하게 조치를 취하면 시드를 순환시키고 거래 승인을 취소하여 노출을 제한할 수 있었습니다.

소켓을 비롯한 여러 업체는 해당 확장 프로그램을 설치한 모든 사용자에게 다음과 같은 진단 단계를 제공했습니다. 즉시 삭제하고, 토큰 승인을 취소하고, 깨끗한 기기를 사용하여 새 지갑으로 자산을 옮기고, 관련 주소를 모니터링하는 것입니다. 유출 사실을 인지하지 못했거나 핫 월렛에 많은 금액을 보관한 사용자의 경우 복구 가능성은 낮았습니다.

진짜 문제는 지갑이 로드되기 전에 시작됩니다.

보안 연구원과 개발자들은 크롬 자체에 더욱 강력한 휴리스틱을 요구하고 있습니다. 제안된 해결책 중 하나는 12단어 또는 24단어 구문을 요구하는 UI 요소가 포함된 모든 확장 프로그램에 자동으로 플래그를 지정하는 것입니다.

또 다른 접근 방식은 지갑 확장 프로그램에 대해 퍼블리셔 증명을 요구하는 것입니다. 이를 통해 특정 퍼블리셔가 유명 지갑 브랜드의 코드베이스를 관리하고 있다는 검증 가능한 증거를 제공합니다. 또한 위험한 접근 패턴이 포함되지 않은 경우에도 지갑 관련 권한에 대한 엄격한 검사가 필요하다는 요구도 있습니다.

최종 사용자를 위해 Socket은 확장 프로그램 관리를 위한 실용적인 체크리스트를 공개했습니다. 암호화 확장 프로그램을 설치하기 전에 사용자는 게시자의 이력을 검토하고, 알려진 프로젝트와의 연관성을 확인하고, 리뷰 패턴, 특히 동일한 리뷰가 반복적으로 나타나는지 확인하고, 공개 GitHub 저장소와 실제 웹사이트 링크가 있는지 확인하고, 권한 탭에서 모호하거나 광범위한 접근 권한이 있는지 확인해야 합니다.

깨끗한 이름과 높은 평가만으로는 충분하지 않습니다.

이 사례는 암호화폐에서 브라우저의 역할에 대한 더 광범위한 의문을 제기합니다. 브라우저 지갑은 접근성과 사용 편의성 덕분에 인기를 얻었습니다. 브라우저 지갑을 사용하면 사용자가 플랫폼을 변경하거나 별도의 앱을 다운로드하지 않고도 분산형 애플리케이션과 상호 작용할 수 있습니다.

하지만 이러한 접근성은 노출이라는 대가를 치렀습니다. 브라우저는 확장 프로그램 조작, 세션 하이재킹, 클립보드 스크래퍼, 그리고 이제는 은밀한 블록체인 유출에 취약한 고위험 환경입니다.

지갑 개발자들은 배포 모델을 재고할 가능성이 높습니다. 일부 팀은 이미 Chrome 웹 스토어 설치를 권장하지 않고 모바일 앱이나 데스크톱 바이너리를 선호합니다. 다른 팀들은 검증되지 않은 출처에서 설치를 시도하는 사용자에게 경고 메시지를 표시할 수도 있습니다.

핵심적인 문제는 여전히 존재합니다. 배포가 분산되어 있고, 대부분 사용자는 합법적인 지갑과 세련된 복제품을 구별하는 방법을 모릅니다.

"Safery" 확장 프로그램은 MetaMask처럼 보이거나 Phantom처럼 위장할 필요가 없었습니다. 자체 브랜드를 만들고, 가짜 신뢰 신호를 생성하고, Sui 블록체인을 전송 수단으로 사용하는 보이지 않는 백도어를 구축했습니다.

이는 암호화폐 UX에서 신뢰가 구축되는 방식과 브라우저 확장 프로그램과 같은 일반 도구조차 실제로 얼마나 핵심에 가까운지에 대한 재고를 요구합니다.

암호화폐 사용자들은 Web3가 주권과 자체 보관을 의미한다고 생각합니다. 하지만 잘못된 손에 들어가면 브라우저 지갑은 금고가 아니라 열린 포트에 불과합니다. 게다가 크롬은 무언가가 유출되기 전에 항상 경고를 해주는 것도 아닙니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
81
즐겨찾기에 추가
11
코멘트