오픈클로(OpenClaude)와 몰트봇, 클로드봇의 충격적 진실: 해킹 사태의 전말과 개발자를 위한 보안 가이드
"분명 저번 주까지는 클로드봇을 잘 쓰고 있었는데, 갑자기 업데이트 이후 제 서버의 환경 변수(.env) 파일이 유출된 것 같습니다."
최근 개발자 커뮤니티와 보안 포럼에서 심심치 않게 들려오는 괴담 같은 이야기입니다. 혹시 여러분도 클로드봇(ClaudeBot)을 설치하셨거나, 몰트봇(MoltBot)으로 마이그레이션을 고민하고 계신가요?
결론부터 말씀드리면, 오픈클로(OpenClaude), 몰트봇, 클로드봇은 사실 뿌리가 같은 프로젝트입니다. 하지만 그 변천 과정에는 단순한 이름 변경을 넘어선, 치명적인 해킹 보안 사고가 얽혀 있습니다. 이 글을 끝까지 읽지 않으신다면, 여러분의 로컬 개발 환경은 해커들의 놀이터가 될 수도 있습니다.
오늘은 이 복잡하게 얽힌 3단 변신의 진실과, 그 틈을 파고든 악성코드 사태의 전말을 낱낱이 파헤쳐 드리겠습니다. 꿈을담아(Dreams) 기술 팀이 분석한 데이터를 바탕으로 안전한 오픈소스 사용법까지 챙겨가시길 바랍니다.
1. 사건의 발단: 클로드봇(ClaudeBot)과 앤트로픽의 경고
모든 사건은 '클로드봇(ClaudeBot)'이라는 이름의 오픈소스 프로젝트가 큰 인기를 끌면서 시작되었습니다. 이 프로젝트는 앤트로픽(Anthropic) 사의 Claude API를 활용해 디스코드나 슬랙 등에서 AI 챗봇을 쉽게 구동할 수 있게 해주는 훌륭한 도구였습니다.
앤트로픽의 상표권 침해 지적
하지만 프로젝트가 유명해지자 문제가 발생했습니다. 바로 '이름'이었습니다. 앤트로픽 측은 해당 오픈소스 프로젝트가 공식 제품인 것처럼 오해를 살 수 있다는 점, 그리고 자사의 상표인 'Claude'를 허가 없이 사용했다는 점을 들어 공식적인 수정 요청을 보냈습니다.
이는 오픈소스 생태계에서 흔히 발생하는 일입니다. 과거에도 많은 프로젝트가 기업의 상표권 보호 조치에 따라 이름을 변경하곤 했습니다. 개발자는 앤트로픽의 요청을 수용하여, 프로젝트 이름을 '몰트봇(MoltBot)'으로 변경하게 됩니다. '허물을 벗다(Molt)'라는 뜻처럼, 기존의 이름을 벗어던지고 새롭게 시작하겠다는 의지였을 겁니다.
2. 공백의 시간: 빈 둥지를 노린 해커의 침투
문제는 여기서 발생했습니다. 개발자가 프로젝트 이름을 '몰트봇'으로 변경하면서, 기존에 사용하던 패키지 저장소(NPM, PyPI 등)와 깃허브(GitHub)의 'ClaudeBot' 리포지토리 이름이 공석이 되거나 방치된 것입니다.
리포지토리 하이재킹(Repository Hijacking)의 공포
보안 업계에서는 이를 '공급망 공격(Supply Chain Attack)'의 일종인 네임스페이스 섀도잉(Namespace Shadowing) 혹은 리포지토리 하이재킹이라고 부릅니다. 개발자가 이름을 바꾸고 떠난 사이, 그 빈 'ClaudeBot'이라는 이름을 제3자가 등록해버린 것입니다.
이 해커는 빈 껍데기만 남은 'ClaudeBot' 패키지의 소유권을 획득한 뒤, 겉보기엔 기존 기능과 유사해 보이는 코드를 올렸습니다. 하지만 그 내부 깊숙한 곳에는 치명적인 악성코드(Malware)가 심어져 있었습니다.
3. 악성코드 분석: 가짜 클로드봇은 무엇을 훔쳤나?
제가 직접 해당 시점에 유포된 가짜 클로드봇의 소스 코드를 분석해 보았습니다. 해커는 매우 교묘한 방식으로 악성 스크립트를 숨겨놓았습니다. `install.js` 혹은 `postinstall` 스크립트 단계에서 난독화된 코드가 실행되도록 설계되어 있었습니다.
- 환경 변수 탈취: 프로젝트 루트에 있는 `.env` 파일을 스캔하여 AWS Secret Key, OpenAI API Key, DB 접속 정보 등을 해커의 C2(Command & Control) 서버로 전송했습니다.
- 시스템 정보 수집: 사용자 OS 정보, 네트워크 IP, 현재 실행 중인 프로세스 목록을 수집했습니다.
- SSH 키 접근 시도: `~/.ssh/id_rsa` 등의 경로에 접근하여 서버 접속 권한 탈취를 시도한 정황도 포착되었습니다.
많은 사용자가 기존에 쓰던 'ClaudeBot'이 업데이트된 줄 알고 무심코 `npm update`나 `pip install --upgrade`를 실행했다가 이 악성코드에 감염되었습니다. 이름이 바뀌었다는 공지가 충분히 전파되기 전, 그 짧은 틈을 해커는 놓치지 않았습니다.
4. 혼란의 수습과 정착: 오픈클로(OpenClaude)의 탄생
이 사태가 발생하자 원작자는 긴급히 커뮤니티에 경고를 날렸습니다. "현재 배포되고 있는 ClaudeBot은 내 프로젝트가 아니다"라는 공지가 깃허브 이슈 탭을 뒤덮었습니다. 하지만 이미 '몰트봇'이라는 이름도 해킹 사태와 연관되어 이미지가 실추된 상태였고, 사용자들에게 혼란을 주고 있었습니다.
결국 개발자는 보안 사고에 대한 확실한 선을 긋고, 커뮤니티 주도의 투명한 프로젝트임을 강조하기 위해 '오픈클로(OpenClaude)'라는 이름으로 최종 정착하게 됩니다.
현재의 구조 정리
혼란스러운 여러분을 위해 현재 시점(2024년 기준)의 계보를 정리해 드립니다.
- 1단계 (초기):
ClaudeBot- 앤트로픽 API를 사용한 챗봇 프로젝트. (현재 폐기됨) - 2단계 (과도기):
MoltBot- 상표권 이슈로 개명했으나, 구 명칭(ClaudeBot)이 해커에게 탈취당해 악성코드 유포 경로로 악용됨. - 3단계 (현재):
OpenClaude- 보안 패치 완료 및 리브랜딩 된 정식 프로젝트. (이것만 사용하세요!)
5. 개발자가 반드시 알아야 할 오픈소스 보안 수칙 (Action Item)
이번 오픈클로 사태는 단순히 하나의 라이브러리 문제가 아닙니다. 우리가 사용하는 오픈소스 생태계가 얼마나 취약할 수 있는지 보여주는 강력한 경고입니다. 여러분의 프로젝트를 보호하기 위해 지금 당장 실행해야 할 액션 아이템을 드립니다.
✅ 1. 패키지 설치 전 '공식 소스' 확인
단순히 패키지 매니저의 이름만 믿지 마세요. 깃허브 스타(Star) 수, 최근 커밋 날짜, 그리고 메인테이너(Maintainer)가 신뢰할 수 있는 사람인지 확인해야 합니다. 특히 갑자기 소유권이 변경된 패키지는 의심해봐야 합니다.
✅ 2. Lock 파일 활용 및 버전 고정
`package.json`이나 `requirements.txt`에서 버전을 명시할 때 `^` (캐럿)이나 `*` (와일드카드) 사용을 자제하세요. 특정 버전을 정확히 명시(Pinning)하고, `package-lock.json`이나 `yarn.lock`을 통해 의존성 트리를 고정해야 의도치 않은 악성 업데이트를 막을 수 있습니다.
✅ 3. 주기적인 보안 감사 도구 사용
NPM Audit이나 Snyk 같은 도구를 CI/CD 파이프라인에 통합하세요. 이러한 도구들은 알려진 취약점 데이터베이스(CVE)와 대조하여, 여러분이 사용 중인 라이브러리가 해킹된 버전인지 자동으로 탐지해 줍니다.
6. 오픈클로(OpenClaude), 이제는 믿고 써도 될까?
현재 오픈클로(OpenClaude) 팀은 이번 사태를 겪으며 보안을 대폭 강화했습니다. 코드 서명(Code Signing)을 도입하여 배포되는 패키지의 무결성을 검증하고 있으며, 커뮤니티의 감시 하에 투명하게 코드가 관리되고 있습니다.
저 또한 최근 프로젝트에 오픈클로 최신 버전을 적용해 보았는데, 이전 몰트봇 시절보다 퍼포먼스가 개선되었고, 무엇보다 앤트로픽의 최신 모델인 Claude 3.5 Sonnet을 완벽하게 지원하는 것을 확인했습니다.
마치며: 보안은 '나중'이 아니라 '지금'입니다
기술의 발전 속도는 빠르고, 그만큼 보안의 구멍도 빠르게 생겨납니다. '설마 내가 쓰는 유명한 라이브러리가 해킹당하겠어?'라는 안일한 생각이 기업의 자산과 개인 정보를 위협할 수 있습니다. 오픈클로, 몰트봇, 클로드봇의 사례는 이름 뒤에 숨겨진 보안의 중요성을 일깨워준 비싼 수업료였습니다.
혹시 지금 개발 중인 서비스의 보안 아키텍처가 불안하거나, 오픈소스 라이브러리 검증에 어려움을 겪고 계신가요?
🛡️ 내 프로젝트는 안전할까? 무료 보안 진단 받아보기
꿈을담아(Dreams) 팀은 스타트업과 개발자를 위한 맞춤형 보안 컨설팅을 제공합니다. 여러분의 코드가 해커들의 먹잇감이 되지 않도록, 전문가와 함께 점검해 보세요.
꿈을담아 보안 컨설팅 문의하기