GitHub 리포지토리를 복제하기 전에: 안전한지 확인하는 방법
Source: Dev.to
1. Check the Repository Owner
- 저장소 소유자를 확인합니다.
- 스스로에게 물어보세요:
- 실제 개발자나 조직인가요?
- 계정에 활동 기록이 있나요?
- 저장소가 여러 개 있나요?
- 기여자들이 신뢰할 수 있나요?
- 경고 신호:
- 어제 만든 저장소에 히스토리가 없고 문서만 복사된 경우.
- 인기 프로젝트를 흉내 내는 가짜 저장소(예:
react‑official‑tools,nextjs‑fast‑build,docker‑helper‑pro).
2. Inspect the Commit History
건강한 저장소는 보통 다음을 보여줍니다:
- 일관된 커밋
- 의미 있는 커밋 메시지
- 다수의 기여자
- 이슈 토론
- 풀 리퀘스트
다음과 같은 경우는 주의하세요:
- 하나의 거대한 초기 커밋
- 무작위로 생성된 커밋 이름
- 개발 히스토리 없음
- 의심스러운 바이너리 파일 업로드
유용한 명령
git log --oneline
모든 내용이 한 번에 나타난다면 더 자세히 살펴보세요.
3. Read the Installation Instructions Carefully
README에서 명령을 무작정 복사하는 것은 위험합니다. 특히 다음과 같은 명령에 주의하세요:
curl something.sh | bash
sudo chmod -R 777 /
완전히 이해하지 못하는 명령은 절대 실행하지 마세요. 확인할 항목:
- 외부 다운로드
- 숨겨진 쉘 스크립트
- 인코딩된 명령
- 불필요한
sudo사용
4. Check package.json or Build Scripts
JavaScript 프로젝트라면 npm install을 실행하기 전에 scripts 섹션을 살펴보세요.
예시 package.json 스니펫
{
"scripts": {
"postinstall": "node install.js"
}
}
postinstall 스크립트는 설치 중 자동으로 실행됩니다. 확인할 내용:
- 난독화된 JavaScript
- 외부 다운로드
- 암호 채굴 패키지
- 의심스러운 환경 변수 접근
유용한 명령
cat package.json
grep -i "postinstall" package.json
5. Review Dependencies
저장소 자체가 깨끗하더라도 의존성이 악성일 수 있습니다. 공격자는 인기 라이브러리와 비슷한 이름으로 패키지를 배포하기도 합니다(typo‑squatting), 예:
expresssreeactlodas
의존성 감사 도구
npm audit
pip-audit
go mod verify
또한 다음을 확인하세요:
- 오래된 의존성
- 폐기된 패키지
- 알 수 없는 사설 레지스트리
6. Avoid Running Unknown Code on Your Main Machine
가장 안전한 방법은 알 수 없는 프로젝트를 격리하는 것입니다:
- Docker 사용
- 가상 머신 사용
- 별도 개발 환경 사용
예시 Docker 명령
docker run -it --rm node:20 bash
무작위 저장소를 개인 컴퓨터에서 직접 실행하는 것은 권장되지 않습니다.
7. Look at the Security Tab
GitHub은 유용한 보안 정보를 제공합니다. 다음을 확인하세요:
- 보안 정책
- 의존성 알림
- 취약점 보고서
- 서명된 커밋
활발히 유지 관리되고 보안 관행을 갖춘 저장소가 일반적으로 더 신뢰할 수 있습니다.
8. Be Extra Careful With AI‑Generated Repositories
AI 도구가 가짜 혹은 저품질 프로젝트를 생성할 수 있습니다. 이러한 저장소에는 다음이 포함될 수 있습니다:
- 복사된 README 파일
- 자동 생성 코드
- 숨겨진 악성 페이로드
- 가짜 스타 또는 가짜 참여
전문적으로 보이는 README가 안전을 보장하지는 않습니다. 실제 코드를 반드시 검토하세요.
오픈 소스 소프트웨어는 강력한 자산이지만, 개발자는 인터넷에서 소프트웨어를 다운로드할 때와 동일한 주의를 알 수 없는 저장소에 적용해야 합니다. 몇 분만 투자해 검토하면 다음과 같은 위험을 예방할 수 있습니다:
- 자격 증명 유출
- 악성코드 감염
- SSH 키 노출
- 개발 환경 침해
코드를 실행하기 전에 실제로 무엇을 설치하고 있는지 한 번 확인하는 습관을 가지세요.