
ML 모델 파일에서 악성 코드와 보안 취약점을 스캔하는 GitHub Action
YAML 한 줄로 파이프라인의 악성 AI 모델을 차단하세요.
GuardModel은 CI/CD 파이프라인에서 ML 모델 파일을 자동으로 스캔하여 악성 코드, 취약점, 보안 위험을 탐지하는 GitHub Action입니다. pickle 역직렬화 공격, 포함된 악성코드, 알려진 CVE를 탐지하여 위험한 모델이 프로덕션에 도달하기 전에 차단합니다.
워크플로우에 추가하세요:
name: GuardModel Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: guardmodel/scan@v1
이것으로 끝입니다! GuardModel은 모든 모델 파일을 스캔하고 위협이 탐지되면 검사를 실패 처리합니다.
| 확장자 | 형식 | 스캐너 | 위험 수준 |
|---|---|---|---|
.pkl, .pickle | Python Pickle | Pickle Agent | 치명적 |
.pt, .pth | PyTorch | Pickle Agent | 치명적 |
.bin | PyTorch/Transformers | Pickle Agent | 치명적 |
.h5, .hdf5 | HDF5/Keras | Keras Agent | 높음 |
.keras | Keras v3 | Keras Agent | 높음 |
.onnx | ONNX | ONNX Agent | 중간 |
.safetensors | SafeTensors | SafeTensors Agent | 낮음 |
저장소에 .guardmodel.yml을 생성하세요:
version: 1
# Directories to scan
include:
- models/
- weights/
# Directories to ignore
exclude:
- tests/fixtures/
# Severity threshold to fail CI
fail_on: high # critical, high, medium, low, none
# Allowlist known-safe models by SHA256
allowlist:
- sha256: "abc123..."
reason: "Verified by security team"
# Maximum file sizes
max_file_size: 5GB
max_total_size: 20GB
GuardModel은 다음을 탐지합니다:
os.system, subprocess, eval, execctypes, 동적 임포트GuardModel 보안 스캔
상태: 실패 - 위협 2개 탐지됨
탐지 항목은 GitHub 보안 탭에 다음 정보와 함께 표시됩니다:
# Install dependencies
npm install
pip install -r requirements.txt
# Build
npm run build
# Test
npm test
pytest tests/
# Package for release
npm run package
guardmodel/
├── action.yml # GitHub Action definition
├── src/ # TypeScript source
│ ├── index.ts # Entry point
│ ├── orchestrator.ts # Scan coordination
│ ├── config.ts # Configuration
│ ├── walker.ts # File discovery
│ └── reporters/ # Output formatters
├── python/
│ ├── agents/ # Scanner agents
│ │ ├── pickle_agent.py
│ │ ├── keras_agent.py
│ │ ├── onnx_agent.py
│ │ └── safetensors_agent.py
│ └── rules/ # Detection rules
└── tests/ # Test suite
GuardModel:
MIT
기여를 환영합니다! CONTRIBUTING.md를 참조하세요.
| 입력 | 설명 | 기본값 |
|---|
path | 스캔할 디렉터리 | . |
config | 구성 파일 경로 | .guardmodel.yml |
fail-on | 실패 기준 최소 심각도 | high |
output-sarif | SARIF 출력 생성 여부 | true |
output-json | JSON 출력 생성 여부 | true |
comment-on-pr | PR 댓글 게시 여부 | true |
max-file-size | 최대 파일 크기 | 5GB |
| 출력 | 설명 |
|---|
status | 스캔 상태 (passed, failed, error) |
findings-count | 전체 발견 항목 수 |
critical-count | 치명적 심각도 발견 항목 수 |
high-count | 높음 심각도 발견 항목 수 |
sarif-file | SARIF 출력 파일 경로 |
json-file | JSON 출력 파일 경로 |
scan-duration | 소요 시간(밀리초) |
| 파일 | 심각도 | 위협 | 세부 정보 |
|---|
models/model.pkl | 치명적 | CODE_EXECUTION | os.system 호출 탐지됨 |
models/utils.pt | 높음 | NETWORK | socket.socket 생성 |