우리가 제일 믿는 곳에 악성코드가 숨어 있었어요
개발자한테 GitHub은 거의 '믿고 쓰는 동네'잖아요. 코드도 받아오고, 라이브러리도 가져다 쓰고, 남이 만든 도구도 클론해서 돌려보고요. 그런데 바로 그 신뢰를 노린 일이 있었어요. 한 보안 연구자가 GitHub에서 트로이목마(Trojan)를 퍼뜨리는 저장소를 무려 1만 개 가까이 찾아냈다는 거예요.
트로이목마가 뭐냐면, 겉보기엔 멀쩡하고 쓸모 있어 보이는 프로그램인데 그 안에 몰래 악성 기능이 숨어 있는 걸 말해요. 트로이 목마 신화에서 따온 이름이죠. '이거 좋은 도구네' 하고 받아서 실행하는 순간, 뒤에서 조용히 비밀번호나 지갑 정보를 빼가는 식이에요.
어떻게 사람을 낚는 걸까요
공격 패턴이 꽤 영리해요. 사람들이 검색창에 '○○ 프로그램 무료 다운로드', '게임 치트', '유료 소프트 크랙' 같은 걸 치잖아요. 그럼 검색 결과 상단에 GitHub 저장소 링크가 뜨는데, 이게 바로 미끼예요. README(설명 문서)는 진짜 그럴듯하게 꾸며져 있고, 정작 받으라는 파일은 외부 링크나 'Releases'에 올려둔 압축 파일이거든요.
여기서 한 가지 더 교묘한 게 있어요. 압축 파일에 비밀번호를 걸어두는 거예요. 왜 그러냐면, 비번 걸린 압축은 백신이 안을 들여다보고 검사하기가 어렵거든요. 사용자가 직접 비번 넣고 풀어야 백신을 피해 슥 들어오는 거죠. 그렇게 실행되는 정체는 보통 인포스틸러(infostealer)예요. 이게 뭐냐면, 브라우저에 저장된 비밀번호, 로그인 쿠키, 암호화폐 지갑, 디스코드 토큰 같은 걸 싹 긁어가는 정보 탈취 프로그램이에요.
그리고 이 모든 걸 사람이 일일이 하는 게 아니라 자동화로 수천, 수만 개를 찍어낸다는 게 핵심이에요. 저장소마다 가짜 스타(별표)와 포크, 커밋 기록까지 만들어서 '이거 많은 사람이 쓰는 신뢰할 만한 프로젝트네'처럼 위장하는 거죠. 진짜처럼 보이게 분장을 시키는 거예요.
이건 '공급망 공격'의 한 갈래예요
사실 이런 흐름은 GitHub만의 문제가 아니에요. 공급망 공격(supply chain attack)이라고 부르는 더 큰 그림의 일부거든요. npm이나 PyPI 같은 패키지 저장소에서도 유명 라이브러리 이름과 한두 글자만 다르게 만든 가짜 패키지(타이포스쿼팅)를 올려두고, 오타로 잘못 설치하길 기다리는 수법이 꾸준히 나왔어요. 핵심은 '개발자가 당연히 믿는 통로'를 노린다는 점, 그리고 갈수록 자동화되고 대규모화된다는 점이에요. 사람이 하나하나 만들던 시절과는 위협의 덩치가 달라진 거죠.
한국 개발자라면 이렇게 막아요
실무에서 바로 써먹을 수 있는 방어법을 정리해볼게요.
- 출처를 꼭 확인하세요. 공식 조직 계정인지, 인증 배지가 있는지, 활동 이력이 자연스러운지 보세요. 스타 개수만 보고 믿으면 안 돼요. 위에서 봤듯 스타는 조작이 쉬워요.
- Releases의 바이너리와 비번 걸린 압축은 의심하세요. 정상 오픈소스는 보통 소스코드를 그대로 보여줘요. 비번 걸린 zip을 받아서 실행하라고 하면 일단 멈추는 게 좋아요.
- 의존성 추가할 때 패키지 이름 오타를 확인하세요. 복붙하거나 공식 문서에서 확인한 이름을 쓰는 습관이 중요해요.
- 검색으로 '무료/크랙' 같은 걸 받지 마세요. 이런 키워드 자체가 미끼들이 가장 몰리는 곳이에요.
- 의심스러운 건 격리 환경(가상머신·샌드박스)에서 돌려보세요. 내 메인 PC에서 바로 실행하지 않는 거죠.
마무리
정리하면, GitHub 도메인이라는 신뢰를 무기 삼아 자동화로 대량 생산된 가짜 저장소가 인포스틸러를 뿌리고 있었고, 이건 점점 커지는 공급망 공격의 한 단면이에요. '유명한 곳에 올라와 있으니 안전하겠지'라는 생각이 가장 위험한 틈이거든요. 여러분은 오픈소스나 패키지를 받을 때 출처를 어디까지 검증하시나요? 팀에서 외부 코드를 들여올 때 쓰는 본인만의 체크 루틴이 있다면 댓글로 공유해주시면 서로 큰 도움이 될 것 같아요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공