
Автономное однобинарное веб-приложение, которое принимает SBOM в форматах CycloneDX, SPDX и syft, запускает ансамбль сканеров CVE, обогащает результаты данными EPSS, CISA-KEV и nuclei и экспортирует в SARIF, CSAF и PDF.
Однобинарное офлайн веб-приложение для исследования файлов SBOM (Software Bill of Materials). Загрузите SBOM или импортируйте папку с ними, проанализируйте каждый с помощью ансамбля независимых инструментов, просмотрите нормализованные результаты в одном локальном интерфейсе и экспортируйте результат в восьми форматах. Без установки, без сетевого доступа, без телеметрии.
NOASSERTION поставщика от
поля, которое просто отсутствует.Домашняя страница (/) перечисляет каждый сохранённый SBOM и остаётся удобной по мере
роста корпуса:
log4j или
openssl находит каждый SBOM, содержащий этот компонент. Запрос
ограничен по длине и разбирается снисходительно./components отвечает на обратный вопрос — какие из моих SBOM объявляют этот
компонент — по всему корпусу сразу, по имени компонента или точному
package URL. Он читает выделенный индекс компонентов, построенный при приёме, отдельный
от полнотекстового индекса панели.
Поскольку устаревший индекс заставил бы действительно затронутый SBOM читаться как "не затронут", страница сообщает, сколько SBOM ещё не проиндексировано, и предлагает Rebuild index, который повторно разбирает сохранённые байты именно для них. Поиск завершён только тогда, когда это предупреждение исчезло.
"Проиндексирован" означает, что индекс был построен, что не то же самое, что "породил
строки": SBOM только с метаданными не объявляет компонентов, поэтому он не вносит ни одного
и всё равно полностью проиндексирован. Хранилище фиксирует факт индексации для каждого SBOM
(схема v8, components_indexed_at), а не выводит его из наличия строк —
вывод означал бы, что SBOM без компонентов никогда не покинет множество
"ещё не проиндексировано", так что предупреждение переживало каждую перестройку, а кнопка
сообщала бы об одних и тех же SBOM как о заново проиндексированных вечно. Обновление мигрирует
автоматически и заполняет всё, что уже имело строки; одна перестройка улаживает остаток.
Каждый инструмент необязателен во время выполнения и обнаруживается в PATH (переопределите бинарник
через SBA_TOOL_<NAME>_BIN). Находки никогда не зависят от какого-либо одного инструмента. Перед
каждым сканированием инструмент запускается один раз со своим аргументом версии: отсутствие бинарника означает
skip (not found on PATH), тогда как бинарник, который не может запуститься или не
даёт ответа в течение 15 секунд, означает fail с этой причиной.
| Инструмент | Роль | Проверено на |
|---|---|---|
| syft | Нормализатор SBOM / конвертер CycloneDX 1.6 | 1.52.0 |
| grype | Сопоставитель CVE | 0.119.0 |
| trivy | Сканер уязвимостей | 0.74.0 |
| osv-scanner | Поиск в базе OSV | 2.4.0, 2.6.0 |
| bomber | Независимый сопоставитель ансамбля | 0.5.1 |
| bomdrift | Дрейф цепочки поставок / тайпсквоттинг (SARIF) | 0.9.9 |
| inspektr | Сканер уязвимостей SBOM (JSON) | 0.1.9 |
| shieldbom | Офлайн-сканер CVE для встраиваемых/IoT (SARIF) | 0.3.0 |
| provenant | Лицензии / авторские права / происхождение (ScanCode) | 1.0.10 |
"Проверено на" — это версия, с которой фактически выполнялся каждый вызов,
не минимум и не фиксация: инструменты разрешаются в PATH во время выполнения, и любая
совместимая версия работает. osv-scanner указан дважды, потому что 2.6.0 был
перепроверен после того, как линия 2.x изменила своё логирование — документированная
форма scan --lockfile <input> --format json не изменилась и по-прежнему завершается
с ненулевым кодом при находках, так что изменение кода не потребовалось.
Первые восемь инструментов дают находки об уязвимостях в форме CVE;
provenant отличается — он сообщает о происхождении лицензии, авторских прав, правообладателя и автора,
которые аудитор сохраняет и отображает как собственную форму находки (раздел
"Licence & provenance" для каждого запуска, включаемый в экспорт Markdown), а не
отбрасывает.