When a Botnet Accidentally Nukes a Network: The I2P Sybil Attack Analysis

분산 시스템, 특히 익명성 네트워크(Anonymity Network)를 설계하고 운영한다는 건 매일이 살얼음판입니다. 그런데 최근 I2P(Invisible Internet Project) 네트워크에서 발생한 사건은 단순한 보안 사고를 넘어, P2P 네트워크의 근본적인 한계를 시험하는 흥미로운 케이스 스터디가 되었습니다.
2026년 2월 3일, I2P 네트워크가 사실상 붕괴되었습니다. 처음엔 다들 “또 2월이네, 국가 주도 공격인가?”라고 생각했습니다. (지난 3년간 매년 2월마다 공격이 있었거든요.) 하지만 진상은 훨씬 더 어이없고, 동시에 기술적으로 시사하는 바가 큽니다.
오늘은 이 사건을 엔지니어링 관점에서 뜯어보고, Hacker News에서 오가는 뜨거운 논쟁들을 정리해 보겠습니다.
39대 1의 싸움: Sybil Attack의 끝판왕
상황은 이렇습니다. 평소 I2P 네트워크는 약 15,000에서 20,000개의 활성 노드(Router)로 유지됩니다. 그런데 갑자기 700,000개의 새로운 노드 가 네트워크에 쏟아져 들어왔습니다.
기존 네트워크 규모의 약 39배에 달하는 노드가 순식간에 유입된 겁니다. 이건 단순한 트래픽 폭주(DDoS)와는 결이 다릅니다. Sybil Attack 입니다. 분산 네트워크에서 악의적인 노드가 다수를 차지하게 되면, 정상적인 노드들이 서로를 찾지 못하게 됩니다. I2P의 핵심인 분산 해시 테이블(DHT)이나 Network Database(NetDB)가 오염되어, 라우팅 자체가 불가능해지는 것이죠.
범인은 누구인가?
재미있는 건 이 공격의 주체가 국가 기관이 아니었다는 점입니다. 범인은 Kimwolf 라는 IoT 봇넷이었습니다. 이들은 작년 말 31.4 Tbps라는 기록적인 DDoS 공격을 했던 그룹인데, 이번엔 의도가 좀 달랐습니다.
보안 연구가들이 그들의 C2(Command and Control) 서버 550개를 날려버리자, “아, I2P를 백업 C2 채널로 써야겠다” 라고 생각한 모양입니다. 문제는 그들이 가진 감염된 봇(가정용 라우터, 셋톱박스 등)이 70만 대나 되었다는 거죠. 그들은 자신들이 I2P에 접속하는 순간, 코끼리가 도자기 가게에 들어가는 꼴이 될 줄은 몰랐던 것 같습니다. 말 그대로 “실수(Accidentally)” 로 네트워크를 박살 낸 겁니다.
대응책: 양자 내성 암호가 왜 거기서 나와?
I2P 개발팀은 공격 6일 만에 v2.11.0을 배포했습니다. 여기서 엔지니어로서 고개를 갸웃하게 만드는 부분이 있습니다. 주요 변경 사항이 Hybrid ML-KEM + X25519 Post-Quantum Encryption 의 기본 활성화라는 점입니다.
물론, 양자 컴퓨터 시대를 대비해 PQC(Post-Quantum Cryptography)를 도입하는 건 훌륭합니다. 하지만 “Sybil Attack 방어와 PQC가 무슨 직접적인 상관이 있지?” 라는 의문이 듭니다. 암호화 알고리즘을 바꾼다고 해서 70만 개의 가짜 노드가 사라지는 건 아니니까요.
실제로 Hacker News의 한 유저도 이 점을 지적했습니다:
- User anon: “Post-quantum encryption이 Sybil 공격을 완화했다는 주장이 있는데, 설명이 부족하다. 이 둘이 어떻게 연결되는지 이해가 안 된다.”
제 생각엔, 이번 릴리즈에 포함된 Additional Sybil mitigations와 SAMv3 API upgrades가 실제 방어 기제였을 것이고, PQC는 예정된 로드맵상의 업데이트였는데 마케팅적으로 묶인 게 아닌가 싶습니다. 혹은 새로운 암호화 핸드셰이크를 강제함으로써, 구형 프로토콜만 구현된 봇넷 노드들을 필터링하려는 의도였을 수도 있겠죠.
분산 네트워크의 딜레마: 1000%의 악성 노드를 버틸 수 있는가?
이번 사건의 핵심 논쟁은 Hacker News 댓글 타래에서 불붙었습니다. “과연 어떤 분산 프로토콜이 정상 노드보다 10배나 많은 악성 노드를 버틸 수 있는가?” 라는 질문입니다.
- Tor: 중앙화된 Directory Authority(DA) 10개가 존재합니다. 만약 이런 공격이 오면 DA 레벨에서 악성 노드들을 잘라낼 수 있습니다. (물론 DA가 공격받으면 끝장이라는 단점이 있죠.)
- I2P: 완전히 분산된 구조입니다. 누구나 참여할 수 있지만, 그렇기 때문에 이런 대규모 Sybil 공격에 취약합니다.
- Nostr: Web of Trust 모델을 사용합니다. 신뢰할 수 있는 릴레이 리스트를 개인이 관리하죠.
한 유저의 코멘트가 인상 깊었습니다:
- User anon: “10배나 많은 악성 노드가 들어오면 살아남으려 하지 마라. 그냥 셧다운하고, 공격자가 지나갈 때까지 기다리는 게 낫다. 억지로 운영하다간 익명성만 훼손된다.”
엔지니어로서 뼈아픈 현실입니다. 우리는 항상 가용성(Availability)을 최우선으로 두지만, 익명 네트워크에서는 가용성을 포기하는 것이 보안(Security)을 지키는 유일한 방법일 때가 있습니다.
정보의 출처와 신뢰성 문제
기술 외적으로도 이번 사건은 시사하는 바가 큽니다. Hacker News에서는 원본 기사의 신뢰성에 대한 논쟁이 치열했습니다. KrebsOnSecurity 같은 유명 보안 블로그와 비교하며, 이번 기사의 시각화 자료가 “AI가 만든 쓰레기(AI Slop)” 같다는 비판도 있었습니다.
- User anon: “시각화 자료가 정말 이상하다. Alice와 Bob 사이를 녹색 점이 떠다니는데 스파게티 면발을 통과한다. AI가 생성한 게 분명하다.”
저도 기사를 읽으며 느꼈지만, 요즘 기술 블로그들 사이에서 검증되지 않은 정보나 과장된 AI 생성 이미지가 범람하는 건 경계해야 합니다. 팩트(Fact)와 뇌피셜을 구분하는 능력이 그 어느 때보다 필요한 시점입니다.
결론: 그래서 I2P는 안전한가?
솔직히 말해서, 현재 구조로는 어렵습니다.
39배 규모의 노드가 덮쳐오는 상황에서 순수 P2P 알고리즘만으로 버티는 건 수학적으로 불가능에 가깝습니다. I2P가 이번에 보여준 빠른 패치 배포는 인상적이었지만, 근본적으로 Reputation System(평판 시스템) 이나 Web of Trust 개념 없이는 앞으로도 ‘돈 많은 공격자’ 혹은 ‘봇넷을 가진 공격자’에게 휘둘릴 수밖에 없습니다.
이번 사건은 I2P 개발팀에게는 악몽이었겠지만, 분산 시스템을 연구하는 우리들에게는 거대한 실험실이었습니다. PQC 도입이 과연 실질적인 봇넷 차단 효과를 가져올지, 아니면 그저 마케팅 용어에 불과했는지는 다음 몇 주간의 네트워크 안정성을 지켜보면 알게 되겠죠.