
GitHub Action, который сканирует файлы моделей ML на наличие вредоносного кода и уязвимостей безопасности.
Блокируйте вредоносные модели ИИ в вашем пайплайне одной строкой YAML.
GuardModel — это GitHub Action, который автоматически сканирует файлы моделей машинного обучения на наличие вредоносного кода, уязвимостей и угроз безопасности в CI/CD-пайплайнах. Он блокирует опасные модели до того, как они попадут в продакшен, обнаруживая атаки десериализации pickle, встроенные вредоносные программы и известные CVE.
Добавьте в ваш workflow:
name: GuardModel Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: guardmodel/scan@v1
Всё! GuardModel просканирует все файлы моделей и завершит проверку с ошибкой, если будут обнаружены угрозы.
Создайте файл .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 Security Scan
Статус: FAILED — обнаружено 2 угрозы
Находки отображаются на вкладке GitHub Security с:
# 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
├── src/ # Исходный код на TypeScript
│ ├── index.ts # Точка входа
│ ├── orchestrator.ts # Координация сканирования
│ ├── config.ts # Конфигурация
│ ├── walker.ts # Обнаружение файлов
│ └── reporters/ # Форматтеры вывода
├── python/
│ ├── agents/ # Агенты-сканеры
│ │ ├── pickle_agent.py
│ │ ├── keras_agent.py
│ │ ├── onnx_agent.py
│ │ └── safetensors_agent.py
│ └── rules/ # Правила обнаружения
└── tests/ # Тестовый набор
GuardModel:
MIT
Приветствуются любые вклады! Пожалуйста, смотрите CONTRIBUTING.md.
| Расширение | Формат | Сканер | Уровень риска |
|---|
.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 | Низкий |
| Параметр | Описание | По умолчанию |
|---|
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 |