Tour de SOL 첫 공격

Jeeuk Lim
Node A-Team
Published in
5 min readFeb 12, 2020

모든 참가자가 평화로운 주말을 보내고 있던 중, Tour de SOL 네트워크는 처음으로 의도된 공격을 받았습니다. 공격 당시에, 공격자는 Discord chat에 온라인 상태였고, 이 공격이 실행된 과정을 설명하였습니다. 이전 포스팅에서 설명한 바와 같이, Tour de SOL의 첫 스테이지는 네트워크를 멈추게 할 수 잇는 치명적인 공격에 초점을 둡니다. 그러므로, 이 첫 공격이 Tour de SOL에서 중요한 부분이라고 판단되고, 저희 팀은 채팅을 통해서 논의 되었던 내용을 공유하고자 합니다.

무슨 일이 생긴걸까?

첫 공격의 주인공은 Certus One이라는 팀이었습니다. Certus One은 10분 가량의 공격을 감행하였고, 그 결과, Tour de SOL 채팅방에서 여러 검증인들이 약 798,000 슬롯 이상으로 넘어가지 못하고 있다는 제보를 받았습니다. 그 와중에, 네트워크의 슬롯은 계속 증가하고 있었습니다.

TDS (녹색)이 완전히 죽은 것을 볼 수 있습니다.

공격은 정확하게 797,572 슬롯에서 실행되었습니다. 네트워크 물량의 37%를 가지고 있던 Bootstrap 검증인을 제외한 모든 검증인이 생성된 다른 포크로 넘어가면서 네트워크에 문제가 생긴 것으로 보입니다. (아래 그림 참고)

Certus One은 이 명령어를 활용하여 2000줄 가량의 공격 코드를 작성하였고, 이 공격은 Gossip network에서 오직 Live한 노드가 다운될 때까지 지속적으로 패킷을 보내는 공격을 실행하였다고 설명했습니다.

이 공격을 통해서 총 57개의 노드 중, 10개가 Gossip Network에서 떨어져 나갔습니다. 그 후, 네트워크는 곧 멈추게 되었고 Tour de SOL은 바로 다시 복구되지 못했습니다.

왜 바로 복구가 되지 못하였는가?

공격자인 Certus One은 의도적으로 네트워크에서 가장 많은 스테이크를 보유하고 있는 bootstrap 검증인을 공격하지 않았다고 합니다. (만약에 bootstrap을 성공적으로 공격했다면, 온라인 상태인 스테이크 부족으로 네트워크가 중지 되었을 것입니다). Bootstrap이 공격 당하지도 않았는데, 네트워크는 다시 복구되지 못했습니다.

지금까지 논의된 이유는 크게 2가지가 있었습니다:

  1. 단순하게, 공격은 주말에 실행되었고 (한국 시간으로 일요일 새벽 5시 경에 실행된 공격입니다.), 사람들이 다운된 노드를 바로 살릴 수 있는 상황이 아니었다.
  2. 디스크 사용량이 너무 커서, 네트워크를 재시작할 디스크 공간 부족

첫번째 이슈는, 모든 노드가 서로 다른 시차에 있고, 심지어 주말에 공격이 감행되었기 때문에 바로 복구하는 작업을 하기에는 적합하지 않았다는 점입니다. 하지만, 이 문제는 Solana 팀에서 제안한 것 처럼, 자동 재시작 (auto-restart)설정을 해놓으면 이 문제는 쉽게 해결될 수 있습니다.

두번째 이슈는 조금 더 복잡한 문제입니다. 몇몇 Tour de SOL 참여 검증인들은 기대치 보다 훨씬 높은 디스크 사용량을 경험했고, 노드를 재시작 해야할 시점에 벌써 디스크 용량이 부족했다는 이야기를 했습니다. 예상 디스크 사용량은 100GB / 월입니다. 하지만 Staking Fund 팀에서는 47GB / 시간 이라는 엄청난 디스크 사용량을 목격했고, 200GB라는 용량이 금방 소진되어 바로 재시작을 할 수 없다고 이야기 했습니다.

하나의 공격으로, 수정이 필요한 두개의 이슈를 찾은 것입니다.

지금 네트워크 상황은?

첫 공격에 대한 이슈는 Github에 제출된 상황입니다. 동일한 이슈를 가지고 네트워크를 재시작하는 것은 같은 이슈의 재발생으로 이어질 수 있기 때문에, Solana 팀은 바로 이번 공격에 관련된 이슈를를 해결하여, 새로운 버전의 소프트웨어인 v0.23.3을 내놓을 예정입니다. 따라서 참여한 검증인들은 모두 노드를 내려놓은 상태입니다.

계속 더 나은 환경을 제공하려는 Solana 팀과, 첫 공격으로 새로운 이슈를 발견할 수 있게 해준 Certus One에게 진심으로 감사합니다.

Node A-Team

  • Cosmos Game of Stakes “Never Jailed Group”
  • IRISnet Nyancat Testnet: 모든 과제 수행, 만점
  • Terra Genesis Drill #3
  • Kava Founder Member Badge
  • IOV (Internet of Value) Validator Candidate TOP 5
  • LINO Network Validator Prize Winner Top 7
  • Akash Network Founding Member Challenge Winner
  • Solana Dry Run 6–#5 Accumulated stakes

[ATEAM 검증인 주소: cosmosvaloper14l0fp639yudfl46zauvv8rkzjgd4u0zk2aseys]

Webpage: https://nodeateam.com/

Twitter: https://twitter.com/Node_Ateam

E-mail: contact@nodeateam.com

--

--