보안 문제를 위해 22개의 인기 GitHub 리포를 스캔했더니 - 68%가 노출된 비밀을 포함하고 있었습니다
Source: Dev.to
개요
저는 shinobi 라는 CLI 도구를 만들었습니다(shinobi-scan이라는 이름으로 PyPI에 배포). 이 도구는 프로젝트 디렉터리나 GitHub 저장소에 대해 10초 정도의 빠른 보안 스캔을 수행합니다. 스캔에서는 다음을 확인합니다:
- 노출된 API 키 및 비밀 패턴
- 위험한 기본값(예: debug 모드, 와일드카드 CORS)
- 취약한 의존성
- 보안 기본 사항 누락
- AI‑특화 위험
이 도구는 완전히 파이썬으로 작성되었으며, CLI를 위해 argparse를 사용하고, 비밀 탐지를 위해 정규식 패턴 매칭을, 히스토리 스캔을 위해 gitpython을, 의존성 감사를 위해 서브프로세스 호출을 사용합니다. 100 % 로컬에서 실행되므로 데이터가 머신을 떠나지 않습니다.
pip install shinobi-scan
GitHub 저장소:
방법론
저는 shinobi를 22개의 인기 오픈소스 프로젝트에 적용했습니다. 포함된 프로젝트는 다음과 같습니다:
- FastAPI
- Flask
- Dify
- Flowise
- LiteLLM
- Lobe‑Chat
각 저장소는 위에 열거한 카테고리별로 스캔되었습니다. 도구는 발견된 문제의 심각도에 따라 위협 수준(낮음, 중간, 높음, 치명적)을 보고합니다.
결과
- 스캔된 저장소의 **86 %**가 높음 또는 치명적 위협 수준을 반환했습니다.
- 가장 흔한 문제는 노출된 비밀 패턴(소스 코드에 직접 나타난 API 키 형식)였습니다.
- 두 번째로 빈번한 문제는
debug=True를 그대로 두거나 와일드카드 CORS 설정을 사용하는 등 위험한 기본값이었습니다.
많은 노출된 키가 테스트용 고정값일지라도, 수천 파일에 걸쳐 실제와 유사한 키 패턴이 존재한다는 점은 이러한 템플릿을 포크하거나 기반으로 개발하는 개발자들이 상당한 보안 부채를 물려받는다는 것을 의미합니다.
결론
이 스캔은 인기 있는 오픈소스 프로젝트 중 상당 부분에 쉽게 탐지 가능한 보안 취약점이 존재한다는 것을 보여줍니다. shinobi와 같은 로컬 자동 스캔을 실행하면 개발자가 이러한 문제를 사전에 식별하고 수정하여 하위 프로젝트로 전파되는 것을 방지할 수 있습니다.
연락처
피드백이나 질문이 있으면 언제든지 연락 주세요. 저는 하루 종일 X(구 Twitter)에서 활동하고 있습니다.