---
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>