
Acción de GitHub que escanea archivos de modelos de ML en busca de código malicioso y vulnerabilidades de seguridad
Bloquea modelos de IA maliciosos en tu pipeline con una línea de YAML.
GuardModel es una GitHub Action que escanea automáticamente archivos de modelos de ML en busca de código malicioso, vulnerabilidades y riesgos de seguridad en pipelines CI/CD. Bloquea modelos peligrosos antes de que lleguen a producción detectando ataques de deserialización pickle, malware incrustado y CVEs conocidos.
Añade a tu flujo de trabajo:
name: GuardModel Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: guardmodel/scan@v1
¡Eso es todo! GuardModel escaneará todos los archivos de modelo y fallará la verificación si se detectan amenazas.
Crea un archivo .guardmodel.yml en tu repositorio:
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 detecta:
os.system, subprocess, eval, execctypes, importaciones dinámicasEscaneo de Seguridad de GuardModel
Estado: FALLIDO - 2 amenazas detectadas
Los hallazgos aparecen en la pestaña Security de GitHub con:
# 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
¡Las contribuciones son bienvenidas! Consulta CONTRIBUTING.md.
| Extensión | Formato | Escáner | Nivel de Riesgo |
|---|
.pkl, .pickle | Python Pickle | Pickle Agent | Crítico |
.pt, .pth | PyTorch | Pickle Agent | Crítico |
.bin | PyTorch/Transformers | Pickle Agent | Crítico |
.h5, .hdf5 | HDF5/Keras | Keras Agent | Alto |
.keras | Keras v3 | Keras Agent | Alto |
.onnx | ONNX | ONNX Agent | Medio |
.safetensors | SafeTensors | SafeTensors Agent | Bajo |
| Entrada | Descripción | Predeterminado |
|---|
path | Directorio a escanear | . |
config | Ruta del archivo de configuración | .guardmodel.yml |
fail-on | Severidad mínima para fallar | high |
output-sarif | Generar salida SARIF | true |
output-json | Generar salida JSON | true |
comment-on-pr | Publicar comentario en PR | true |
max-file-size | Tamaño máximo de archivo | 5GB |
| Salida | Descripción |
|---|
status | Estado del escaneo (passed, failed, error) |
findings-count | Total de hallazgos |
critical-count | Hallazgos de severidad crítica |
high-count | Hallazgos de severidad alta |
sarif-file | Ruta al archivo SARIF |
json-file | Ruta al archivo JSON |
scan-duration | Duración en milisegundos |
| Archivo | Severidad | Amenaza | Detalles |
|---|
models/model.pkl | Crítico | CODE_EXECUTION | Llamada a os.system detectada |
models/utils.pt | Alto | NETWORK | Creación de socket.socket |