Українською. Читати англійською.
Builder-частина проєкту PyCVE. CLI rule-builder перетворює офіційні CVE-фіди (Canonical Ubuntu, Ubuntu OVAL, Debian Security Tracker) на статичні JSON-рулсети — по одному файлу на реліз — та опційний файл пріоритетів cve-priority.json. Далі ці файли роздає будь-який статичний HTTP-сервер, а на хостах їх споживає pycve-agent.
Потрібен Python 3.11+. Збірка з тестового fixture — без мережі, за секунди:
./run-rule-builder.sh \
--canonical-cves \
--canonical-url tests/fixtures/canonical-cves.json \
--releases focal,jammy \
--output-dir /tmp/pycve-rules \
--write-priority
ls /tmp/pycve-rules
# focal.json jammy.json cve-priority.jsonДля постійного використання можна встановити пакет (entrypoint rule-builder):
python3 -m venv .venv && . .venv/bin/activate && pip install -e .Одне джерело на запуск; для змішаного парку Ubuntu + Debian — два запуски в той самий каталог:
# Ubuntu — основне джерело (Canonical CVE feed)
rule-builder --canonical-cves --releases focal,jammy,noble --output-dir /srv/www/pycve/rules
# Ubuntu — альтернативне джерело (OVAL)
rule-builder --ubuntu-oval --releases focal,jammy,noble --output-dir /srv/www/pycve/rules
# Debian (Security Tracker)
rule-builder --debian-cves --releases bookworm,bullseye,trixie --output-dir /srv/www/pycve/rules
# Оновити тільки cve-priority.json, без перезбирання рулсетів
rule-builder --output-dir /srv/www/pycve/rules --priority-onlyПерерваний довгий Canonical-fetch безпечно перезапускати — builder продовжить із checkpoint.
Повна документація живе у вікі цього репозиторію:
- Getting Started — наскрізний приклад: збірка правил → статика → перший вердикт агента.
- Server Reference — повний довідник CLI: всі ключі, режими пріоритетів, checkpoint/resume, OVAL-мапінг, fixtures.
- Data Sources — порівняння джерел і критерії вибору.
- Operations — продакшн-розкат: cron, статичний хостинг, оновлення правил.
- Architecture, Rule Format, Priority — як влаштована система і її артефакти.
python3 -m unittest discover -s tests -p 'test_*.py'
# або: uv run python3 -m unittest discover -s tests -p 'test_*.py'