--- title: 솔라나 지갑 해킹 tags: security, wallet description: --- # 솔라나 지갑 해킹 사건 slope, phantom 지갑의 개인키 저장 방식 때문에 해당 지갑으로 니모닉을 생성하거나 import하여 쓴 사용자의 대부분이 해킹된 사건 ## 해킹의 원인 slope의 중앙 서버에 암호화되지 않은 평문으로 비밀키와 니모닉이 저장되고 있어, 대규모 정보유출이 발생했다. [defi 개발자 foobar의 해당 사건 관련 tweet](https://twitter.com/0xfoobar/status/1554881291451088896?s=20&t=JL7Xnd9ANVCDr5x0lpFHWw) ## 사건 대응 ![해커지갑 #3](https://i.imgur.com/iRqEMK2.png) 이미 solscan상에서 labeling 이 되었으며 solanafoundation에서 form 작성하도록 하여 문제 파악을 하고있다. 해커의 지갑에는 지갑당 거의 10~20만달러 가량의 토큰이 존재하고 있다. 4개의 지갑이 현재 labeling 되어있는걸 생각한다면 대략 40~80만 달러 가량의 토큰을 가지고 있다. 피해액 규모를 보아하니 800만 달러라고 한다 ㅎㄷㄷ... slope팀은 해커에게 90%의 자금을 자진 반납해달라고 요청하고 있다고한다. 10%는 포상금이라고...? ## 메타마스크의 개인키 저장방식 메타마스크는 자체 서버DB에 개인키, 니모닉을 저장하지 않고 있다. 대신 컴퓨터 내부에 저장이 되는데 구글 확장프로그램의 local setting 파일 내부에 log형태로 저장되고 있다. 메타마스크에 설정한 password를 통해 decrypt할 수 있도록 해서 암호화 저장을 하고있다. 단순히 평문으로 저장하는 것이 아니라 암호화해서 저장하기 때문에 솔라나 기반 지갑들 보다는 더 안전하다고 볼 수 있다. 그러나 컴퓨터가 털리고 password가 털린다면 이것도 완전히 안전하다고 볼순 없기 때문에 hw 지갑을 사용하여 개인키를 저장하는 것이 제일 안전할 것이다. ## 교훈 많은 유저들이 사용하고 있는 지갑이 이렇게 허무하게 털릴 수 있다는 것이 놀라웠고, 나도 이것들을 사용하면서 아무런 위화감 없이 사용하고 있었다는게 반성해야할 점이다. 앞으로 지갑을 import해야하는 경우에 꼭 이러한 점을 주의해서 아무 서비스에나 내 소중한 개인키를 넘기는 짓은 삼가 해야겠다. ## 참조 자료 * [해커지갑 #3](https://solscan.io/account/5WwBYgQG6BdErM2nNNyUmQXfcUnB68b6kesxBywh1J3n) * [해커지갑 #4](https://solscan.io/account/GeEccGJ9BEzVbVor1njkBCCiqXJbXVeDHaXDCrBDbmuy) * [솔라나 지갑 해킹 뉴스](https://coincode.kr/archives/78957) * [메타마스크 개인키 저장 방식](https://95decode.tistory.com/m/10) <style> html, body, .ui-content { background-color: #333; color: #ddd; } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { color: #ddd; } .markdown-body h1, .markdown-body h2 { border-bottom-color: #ffffff69; } .markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: #fff; } .markdown-body img { background-color: transparent; } .ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a { color: white; border-left: 2px solid white; } .expand-toggle:hover, .expand-toggle:focus, .back-to-top:hover, .back-to-top:focus, .go-to-bottom:hover, .go-to-bottom:focus { color: white; } .ui-toc-dropdown { background-color: #333; } .ui-toc-label.btn { background-color: #191919; color: white; } .ui-toc-dropdown .nav>li>a:focus, .ui-toc-dropdown .nav>li>a:hover { color: white; border-left: 1px solid white; } .markdown-body blockquote { color: #bcbcbc; } .markdown-body table tr { background-color: #5f5f5f; } .markdown-body table tr:nth-child(2n) { background-color: #4f4f4f; } .markdown-body code, .markdown-body tt { color: #eee; background-color: rgba(230, 230, 230, 0.36); } a, .open-files-container li.selected a { color: #5EB7E0; } </style>