GN⁺: 파일을 스캔하여 높은 엔트로피 라인을 찾는 CLI 도구 Entropy
(github.com/EwenQuim)Entropy
Entropy는 코드베이스에서 높은 엔트로피 라인을 스캔하여 비밀 정보를 찾아주는 CLI 도구임.
설치 방법
Go를 이용한 소스 설치 (권장)
-
go install github.com/EwenQuim/entropy@latest
-
entropy
명령어 사용 가능 - 추가 옵션:
entropy -h
,entropy -top 20 -ext go,py,js
,entropy -top 5 -ignore-ext min.js,pdf,png,jpg,jpeg,zip,mp4,gif my-folder my-file1 my-file2
- 한 줄 설치:
go run github.com/EwenQuim/entropy@latest
Brew를 이용한 설치
- 작업 진행 중 (WIP)
Docker를 이용한 설치
-
docker run --rm -v $(pwd):/data ewenquim/entropy /data
- 추가 옵션:
docker run --rm -v $(pwd):/data ewenquim/entropy -h
,docker run --rm -v $(pwd):/data ewenquim/entropy -top 20 -ext go,py,js /data
,docker run --rm -v $(pwd):/data ewenquim/entropy -top 5 /data/my-folder /data/my-file
- Docker Hub에서 이미지 사용 가능
-
-v
옵션은 현재 디렉토리를 컨테이너에 마운트하는 데 사용됨 -
명령어 끝에
/data
를 추가해야 함, 그렇지 않으면 도구가 로컬 파일 시스템이 아닌 컨테이너 내부를 검색함
다른 프로젝트
- Fuego: 코드베이스에서 OpenAPI 문서를 생성하는 Go 프레임워크
- Renpy-Graphviz: Ren'Py 게임 엔진의 화면과 레이블을 그래프로 생성하는 도구
GN⁺의 의견
- 보안 강화: 코드베이스에서 비밀 정보를 자동으로 찾아내어 보안 강화를 도울 수 있음.
- 사용 편의성: 다양한 설치 방법을 제공하여 사용자가 편리하게 도구를 설치하고 사용할 수 있음.
-
유사 도구: 비슷한 기능을 제공하는 도구로는
git-secrets
,truffleHog
등이 있음. - 도입 고려 사항: 도구 사용 시 코드베이스의 크기와 복잡성을 고려해야 하며, 높은 엔트로피 라인이 반드시 비밀 정보를 의미하지 않을 수 있음.
- 기술 선택의 득과 실: Entropy 도입으로 보안 사고를 예방할 수 있지만, 잘못된 긍정(false positive) 결과가 나올 수 있어 추가 검토가 필요함.
Hacker News 의견
- Perl 스크립트 사용: Perl 스크립트를 사용하여 텍스트의 엔트로피를 측정하는 방법을 제안함. 짧은 줄에서는 압축이 잘 안 되는 문제가 있음.
- 데이터베이스 비밀번호: 모든 데이터베이스 비밀번호를 'abcd'로 설정하여 문제를 해결함.
- 엔트로피 사용에 대한 궁금증: 엔트로피를 텍스트 분석에 사용하는 방법에 대한 좋은 글을 찾고 있음. 엔트로피의 정의와 효과에 대해 궁금해함.
- 엔트로피 정의 문제: 텍스트의 엔트로피를 정의하는 것이 모호함. 자연 언어와 무작위 문자열의 엔트로피를 비교하는 더 나은 방법이 필요함.
- 관련 프로젝트: 트러플호그, 디텍트-시크릿, 세미그렙 시크릿과 같은 관련 프로젝트를 소개함.
- 고마움 표현: 몇 년 전 엔트로피에 대한 질문을 한 DrJones에게 감사하며, 관련 좋은 글을 링크함.
- CLI 도구 칭찬: 유용한 CLI 도구이며, Go 코드도 훌륭하다고 칭찬함.
- 'ent' 프로그램: 오래 사용해온 'ent' 프로그램을 떠올리게 함.
- 언어 모델 사용: Llama 3 같은 언어 모델이 토큰별로 놀라움을 모델링하여 높은 엔트로피 영역을 감지할 수 있을 것이라고 제안함.
- CLI 도구 개선 제안: .gitignore 파일을 자동으로 읽어 내용을 제외하는 플래그와 다양한 비밀 탐지 전략을 추가하면 좋겠다고 제안함.
- 압축 비교 방법: 파일을 압축하여 압축된 크기와 원본 크기를 비교하는 방법을 제안함. 암호화된 파일은 코드보다 압축이 잘 안 됨.