
VS Code 확장 프로그램, npm/PyPI 패키지, git 저장소를 스캔하여 보이지 않는 유니코드 페이로드, 디코더 패턴, C2 마커, 알려진 악성 IOCs를 찾아 GlassWorm 공급망 공격 페이로드를 탐지합니다.

자신의 머신에서 GlassWorm 공급망 공격 페이로드를 탐지합니다. VS Code 확장 프로그램, npm 패키지, Python 패키지, git 저장소를 스캔합니다.
이 스캐너는 공격 기술 자체를 탐지합니다. 보이지 않는 유니코드 변형 선택기 페이로드, GlassWorm 디코더 패턴, C2 지표, 자격 증명 수집 코드 등을 감지합니다.
pip install glassworm-hunter
혹은 pipx를 사용:
pipx install glassworm-hunter
VS Code/Cursor 확장 프로그램을 스캔하지 않고 현재 디렉터리 스캔:
glassworm-hunter scan --no-extensions
특정 프로젝트 스캔:
glassworm-hunter scan /path/to/project
| 수준 | 의미 |
|---|---|
| CRITICAL | 활성 GlassWorm 페이로드 탐지 (코드 내 보이지 않는 유니코드 클러스터, 디코더 패턴) |
| HIGH | 알려진 악성 IOC 일치 (C2 IP, 지갑, 알려진 악성코드에 대한 확장 종속성) |
glassworm-hunter scan [OPTIONS] [PATHS...]
스캔 중 Rich 진행 막대가 stderr에 표시됩니다. --quiet 또는 --verbose를 사용하면 자동으로 숨겨집니다. 스캔 완료 후 요약 줄(스캔한 파일 수, 발견 수, 출력 경로)이 항상 stderr에 출력됩니다.
# 모든 탐지 규칙 ID 나열 (--disable-rule 사용)
glassworm-hunter rules
# GitHub에서 로컬 IoC 데이터베이스 업데이트 (기본 소스:
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update
# 사용자 지정 소스에서 업데이트 (예: 내부 위협 인텔리전스 서버)
glassworm-hunter update --source https://internal.corp/ioc.json
# 기존 로컬 IoC 데이터베이스 강제 덮어쓰기
glassworm-hunter update --force
# 버전 출력
glassworm-hunter version
| 코드 | 의미 |
|---|---|
| 0 | 발견 항목 없음 |
| 1 | 발견 항목 탐지됨 |
| 2 | 스캐너 오류 |
자동 처리를 위한 JSON 출력:
glassworm-hunter scan . --format json --output report.json --no-extensions
GitHub Code Scanning용 SARIF:
glassworm-hunter scan . --format sarif --output results.sarif --no-extensions
SARIF를 GitHub에 업로드:
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
CI에서 종료 코드 사용:
glassworm-hunter scan . --severity critical --no-extensions || exit 1
빌드 아티팩트 및 공급업체 코드 제외:
glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions
이 스캐너는 기본적으로 완전히 오프라인입니다. 로컬 파일만 읽습니다. 텔레메트리, 전화 집, 자동 업데이트 확인이 없습니다. IoC 데이터베이스는 패키지에 번들로 포함되어 있습니다.
네트워크 요청을 하는 유일한 명령은 glassworm-hunter update이며, 이는 GitHub (또는 사용자 지정 --source URL)에서 최신 IoC 데이터베이스를 가져옵니다. 자동으로 호출되지 않습니다.
프로젝트 루트에 .glassworm.yml을 배치하여 기본값을 설정합니다:
exclude:
- "*.min.js"
- "vendor/**"
- "dist/**"
disable_rules:
- zero-width-chars
severity: medium
CLI 플래그는 설정 파일 값을 재정의합니다.
--ioc-file을 사용하여 JSON 파일에서 추가 지표를 로드합니다. 팀별 또는 내부 위협 인텔리전스에 유용합니다:
glassworm-hunter scan /path --ioc-file /path/to/team_ioc.json
파일은 data/ioc.json과 동일한 스키마를 따라야 합니다:
{
"schema_version": "1.0",
"extensions": [{"id": "publisher.name"}],
"npm_packages": [{"name": "pkg", "malicious_versions": "1.0.0"}],
"c2_ips": [{"ip": "1.2.3.4"}],
"c2_wallets": [{"address": "..."}],
"attacker_artifacts": [{"type": "email", "value": "[email protected]"}]
}
사용자 지정 파일은 다른 모든 IoC 계층(하드코딩 → 번들 → 사용자 ~/.glassworm/ioc.json → --ioc-file) 위에 병합됩니다.
스캐너는 3+1 계층 IoC 시스템을 사용합니다 (각 계층은 이전 계층 위에 병합되며 제거하지 않음):
data/ioc.json~/.glassworm/ioc.json, glassworm-hunter update로 업데이트--ioc-file 플래그, 최우선 순위스캐너는 Windows에서 작동합니다. 관리자 권한 명령 프롬프트에서 실행하지 않으면 4개의 테스트가 실패합니다.
MIT
| MEDIUM | 검토할 가치가 있는 의심스러운 패턴 (eval + 동적 콘텐츠, 자격 증명 접근, Trojan Source) |
| LOW | 정보 제공 (비정상적인 제로 폭 문자 밀도, 의심스러운 설치 스크립트) |
| 옵션 | 기본값 | 설명 |
|---|
--extensions / --no-extensions | 켜짐 | VS Code/Cursor/Codium 확장 프로그램 스캔 |
--npm-scan / --no-npm-scan | 켜짐 | node_modules 스캔 |
--pip-scan / --no-pip-scan | 꺼짐 | Python site-packages 스캔 |
--git / --no-git | 켜짐 | git 저장소 스캔 |
--format [console|json|sarif] | console | 출력 형식 |
--output FILE | stdout | 보고서를 파일에 쓰기 |
--severity [critical|high|medium|low] | low | 보고할 최소 심각도 |
--max-file-size SIZE | 10MB | 이 크기보다 큰 파일 건너뛰기 |
--include-hidden | 꺼짐 | 숨김 파일/디렉터리 스캔 |
--quiet | 꺼짐 | 진행 출력 숨기기 |
--verbose | 꺼짐 | 스캔 중인 모든 파일 표시 |
--exclude PATTERN | — | 제외할 글로브 패턴 (반복 가능) |
--disable-rule RULE_ID | — | 특정 탐지 규칙 비활성화 (반복 가능) |
--ioc-file FILE | — | JSON 파일에서 추가 IoC 지표 로드 |