
GitHub Action qui analyse les fichiers de modèles ML pour détecter les codes malveillants et les vulnérabilités de sécurité
Bloquez les modèles d'IA malveillants dans votre pipeline avec une seule ligne de YAML.
GuardModel est une GitHub Action qui scanne automatiquement les fichiers de modèles ML pour détecter les codes malveillants, les vulnérabilités et les risques de sécurité dans les pipelines CI/CD. Il bloque les modèles dangereux avant qu'ils n'atteignent la production en détectant les attaques de désérialisation pickle, les malwares intégrés et les CVE connues.
Ajoutez à votre workflow :
name: GuardModel Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: guardmodel/scan@v1
C'est tout ! GuardModel scannera tous les fichiers de modèles et échouera la vérification si des menaces sont détectées.
Créez .guardmodel.yml dans votre dépôt :
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 détecte :
os.system, subprocess, eval, execctypes, importations dynamiquesScan de sécurité GuardModel
Statut : ÉCHEC - 2 menaces détectées
Les résultats apparaissent dans l'onglet Sécurité GitHub avec :
# 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
Les contributions sont les bienvenues ! Veuillez consulter CONTRIBUTING.md.
| Extension | Format | Scanneur | Niveau de risque |
|---|
.pkl, .pickle | Python Pickle | Pickle Agent | Critique |
.pt, .pth | PyTorch | Pickle Agent | Critique |
.bin | PyTorch/Transformers | Pickle Agent | Critique |
.h5, .hdf5 | HDF5/Keras | Keras Agent | Élevé |
.keras | Keras v3 | Keras Agent | Élevé |
.onnx | ONNX | ONNX Agent | Moyen |
.safetensors | SafeTensors | SafeTensors Agent | Faible |
| Entrée | Description | Défaut |
|---|
path | Répertoire à scanner | . |
config | Chemin du fichier de configuration | .guardmodel.yml |
fail-on | Sévérité minimale pour échouer | high |
output-sarif | Générer une sortie SARIF | true |
output-json | Générer une sortie JSON | true |
comment-on-pr | Publier un commentaire PR | true |
max-file-size | Taille maximale de fichier | 5GB |
| Sortie | Description |
|---|
status | Statut du scan (passed, failed, error) |
findings-count | Nombre total de résultats |
critical-count | Résultats de sévérité critique |
high-count | Résultats de sévérité élevée |
sarif-file | Chemin vers la sortie SARIF |
json-file | Chemin vers la sortie JSON |
scan-duration | Durée en millisecondes |
| Fichier | Sévérité | Menace | Détails |
|---|
models/model.pkl | Critique | CODE_EXECUTION | Appel os.system détecté |
models/utils.pt | Élevé | NETWORK | Création de socket.socket |