feat: README and examples

This commit is contained in:
Chest committed 2026-01-18 15:19:02 +03:00
1 parent d8c7f3d940
commit 2797151d2c
3 files changed
+861

No files matched your search

View File
Whitespace-only changes.
+219
View File
@@ -0,0 +1,219 @@
# CVExplorer
CVExplorer — утилита для анализа **запущенных Docker-контейнеров**:
- извлекает зависимости приложения (из контейнера **или** по ссылке на исходники)
- сравнивает версии зависимостей с базой уязвимостей **OSV.dev**
- cоздаёт отчет
- отправляет отчёт по выбранным каналам (WIP)
> На текущем этапе анализ выполняется по **манифестам зависимостей**.
---
## Возможности
- Сканирует **запущенные** контейнеры.
- Два пути извлечения зависимостей:
1. из контейнера (если манифесты присутствуют)
2. из репозитория по `source_url` (если контейнер содержит только собранный бинарник)
- Сравнивает найденные версии зависимостей с OSV.dev
- Фильтрует вывод по минимальной серьёзности (например, скрыть `LOW`).
- Есть файл конфигурации для гибкой настройки вывода
---
## Поддерживаемые манифесты
**Python:**
- `requirements*.txt`
- `Pipfile`
- `pyproject.toml`
- `poetry.lock`
**Node.js:**
- `package.json`
- `package-lock.json`
- `yarn.lock`
- `pnpm-lock.yaml`
**Go:**
- `go.mod`
- `go.sum`
**Rust:**
- `Cargo.toml`
- `Cargo.lock`
**Java:**
- `pom.xml`
- `build.gradle`, `build.gradle.kts`
**.NET:**
- `*.csproj`, `*.fsproj`
- `packages.config`
---
## Требования
- Python 3.10+ (рекомендуется 3.11+)
- Docker Engine / Docker Desktop запущен
- `git` в системе (для анализа по `source_url`)
Python-зависимости:
- `docker`
- `tqdm` (опционально, для прогресс-бара)
---
## Установка
### 1) Клонировать проект
```bash
git clone https://g.lair.moe/Chest/CVExplorer
cd CVExplorer
```
### 2) Создать виртуальное окружение
```bash
python -m venv .venv
source .venv/bin/activate
```
### 3) Поставить зависимости
```bash
pip install -U pip
pip install docker
pip install tqdm # опционально для прогресс-бара
```
---
## Запуск
Основной способ:
```bash
python run.py
```
Альтернативно (если используешь пакетный запуск):
```bash
python -m cvexplorer.main
```
> Утилита анализирует **запущенные** контейнеры. Убедись, что нужные сервисы запущены.
---
## Как работает извлечение зависимостей?
Для каждого контейнера:
1. CVExplorer ищет файлы манифестов внутри контейнера (например, `package.json`, `go.mod`).
2. Если манифестов нет, CVExplorer пытается взять `source_url` из OCI labels:
- `org.opencontainers.image.source`
- `org.opencontainers.image.url`
- (и т.п.)
3. Если `source_url` найден — репозиторий клонируется, выбирается commit (если есть `org.opencontainers.image.revision`) и парсятся манифесты в репо.
4. Дальше зависимости дедуплицируются и отправляются в OSV.dev.
---
## Конфигурация
CVExplorer читает конфиг из файла **`cvexplorer_config.json`** в рабочей директории.
Если файла нет или он некорректный — используются значения по умолчанию.
### Пример `cvexplorer_config.json`
```json
{
"output": {
"group_by_service": true,
"sections": {
"show_id_status": false,
"show_ports": false,
"show_language": false,
"show_revision": false,
"show_deps_list": false,
"show_code_files": false,
"show_errors": false
}
},
"vulns": {
"min_severity": "MEDIUM",
"include_unknown": true,
"max_affected_deps_to_show": 8,
"max_vuln_ids_to_show": 10
},
"osv": {
"enabled": true,
"chunk_size": 250,
"hydrate_details": true,
"max_pages": 5,
"timeout_sec": 30
}
}
```
### Параметры `output`
- `group_by_service` — группировать контейнеры по сервису (Compose/имя/образ).
- `sections.*` — включение/выключение блоков вывода:
- `show_id_status` — ID/статус/created
- `show_ports` — используемые порты
- `show_language` — ЯП
- `show_revision` — commit SHA
- `show_deps_list` — печатать списки зависимостей (но их может быть ооооочень много)
- `show_code_files` — найденные `main/app/index` файлы с кодом
- `show_errors` — ошибки извлечения
### Параметры `vulns`
- `min_severity` — минимальная серьёзность для отображения: `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`.
- `include_unknown` — показывать ли уязвимости с неизвестной серьёзностью.
- `max_affected_deps_to_show` — сколько «самых проблемных» пакетов показывать.
- `max_vuln_ids_to_show` — сколько ID уязвимостей выводить в примере.
### Параметры `osv`
- `enabled` — включить/выключить сравнение с OSV.dev.
- `chunk_size` — размер batch-запроса (актуально при сотнях зависимостей).
- `hydrate_details` — догружать ли детали уязвимостей (нужно для фильтрации по severity best-effort).
- `max_pages` — ограничение пагинации.
- `timeout_sec` — таймаут запросов.
---
## Прогресс-бар
Если поставить `tqdm`, появится прогресс-бар для:
- сканирования контейнеров
- batch-запросов OSV
Установка:
```bash
pip install tqdm
```
---
## Troubleshooting
### Нет прав на Docker
Если ошибки про доступ к Docker socket — запусти от пользователя с доступом к Docker или настрой группу `docker`.
### В контейнере нет манифестов
Это нормально для «собранных» образов. Тогда нужен `source_url` в OCI labels.
Если `source_url` отсутствует — CVExplorer сможет показать только метаданные контейнера.
Ручное добавление ссылки на знакомые вам проекты через конфигурацию — **WIP**
---
+642
View File
@@ -0,0 +1,642 @@
──────────────────────────────────────────────────────────────────────────────────────── Сервис: attic:attic Контейнеров: 1 Контейнер: nix-cache Образ: ghcr.io/zhaofengli/attic Версия: tag=latest label=None Source repo: None Источник зависимостей: none Манифесты: 0 Зависимости: 0 (после дедупликации) OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0 ──────────────────────────────────────────────────────────────────────────────────────── Сервис: attic:db Контейнеров: 1 Контейнер: attic-db-1 Образ: postgres:17.6-alpine Версия: tag=17.6-alpine label=None Source repo: None Источник зависимостей: none Манифесты: 0 Зависимости: 0 (после дедупликации) OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0 ──────────────────────────────────────────────────────────────────────────────────────── Сервис: docker:watchtower Контейнеров: 1 Контейнер: docker-watchtower-1 Образ: containrrr/watchtower Версия: tag=latest label=None Source repo: None Источник зависимостей: none Манифесты: 0 Зависимости: 0 (после дедупликации) OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0 ──────────────────────────────────────────────────────────────────────────────────────── Сервис: docker:ygg Контейнеров: 1 Контейнер: yggdrasil Образ: docker-ygg Версия: tag=latest label=None Source repo: None Источник зависимостей: none Манифесты: 0 Зависимости: 0 (после дедупликации) OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0 ──────────────────────────────────────────────────────────────────────────────────────── Сервис: gitea:db Контейнеров: 1 Контейнер: gitea-db Образ: postgres:17 Версия: tag=17 label=None Source repo: None Источник зависимостей: none Манифесты: 0 Зависимости: 0 (после дедупликации) OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0 ──────────────────────────────────────────────────────────────────────────────────────── Сервис: gitea:gitea Контейнеров: 1 Контейнер: gitea Образ: docker.gitea.com/gitea:latest Версия: tag=latest label=1.25.3 Source repo: https://github.com/go-gitea/gitea Источник зависимостей: git Манифесты: 5 Зависимости: 546 (после дедупликации) По экосистемам: go=441, npm=105 OSV: уязвимости=1; затронутые пакеты=1; проверено пакетов=385 (CRITICAL=1, UNKNOWN=0) OSV: топ уязвимых зависимостей: - npm:happy-dom@18.0.1 -> 1 ids (max=CRITICAL) ──────────────────────────────────────────────────────────────────────────────────────── Сервис: gitea:runner Контейнеров: 1 Контейнер: gitea-runner Образ: gitea/act_runner:nightly Версия: tag=nightly label=None Source repo: None Источник зависимостей: none Манифесты: 0 Зависимости: 0 (после дедупликации) OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0 ───────────────────────────────Line truncated
────────────────────────────────────────────────────────────────────────────────────────
Сервис: attic:attic Контейнеров: 1
Контейнер: nix-cache Образ: ghcr.io/zhaofengli/attic
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: attic:db Контейнеров: 1
Контейнер: attic-db-1 Образ: postgres:17.6-alpine
Версия: tag=17.6-alpine label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: docker:watchtower Контейнеров: 1
Контейнер: docker-watchtower-1 Образ: containrrr/watchtower
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: docker:ygg Контейнеров: 1
Контейнер: yggdrasil Образ: docker-ygg
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: gitea:db Контейнеров: 1
Контейнер: gitea-db Образ: postgres:17
Версия: tag=17 label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: gitea:gitea Контейнеров: 1
Контейнер: gitea Образ: docker.gitea.com/gitea:latest
Версия: tag=latest label=1.25.3
Source repo: https://github.com/go-gitea/gitea
Источник зависимостей: git
Манифесты: 5
Зависимости: 546 (после дедупликации)
По экосистемам: go=441, npm=105
OSV: уязвимости=1; затронутые пакеты=1; проверено пакетов=385 (CRITICAL=1, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:happy-dom@18.0.1 -> 1 ids (max=CRITICAL)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: gitea:runner Контейнеров: 1
Контейнер: gitea-runner Образ: gitea/act_runner:nightly
Версия: tag=nightly label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: glitchtip:bug Контейнеров: 1
Контейнер: glitchtip-bug-1 Образ: glitchtip/glitchtip:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 1
Зависимости: 37 (после дедупликации)
По экосистемам: pypi=37
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: glitchtip:bug-postgres Контейнеров: 1
Контейнер: glitchtip-bug-postgres-1 Образ: postgres:17
Версия: tag=17 label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: glitchtip:bug-redis Контейнеров: 1
Контейнер: glitchtip-bug-redis-1 Образ: valkey/valkey:latest
Версия: tag=latest label=None
Source repo: https://github.com/valkey-io/valkey
Источник зависимостей: git
Манифесты: 1
Зависимости: 2 (после дедупликации)
По экосистемам: pypi=2
OSV: уязвимости=4; затронутые пакеты=1; проверено пакетов=2 (HIGH=1, MEDIUM=1, UNKNOWN=2)
OSV: топ уязвимых зависимостей:
- PyPI:redis@4.5.1 -> 4 ids (max=HIGH)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: glitchtip:bug-worker Контейнеров: 1
Контейнер: glitchtip-bug-worker-1 Образ: glitchtip/glitchtip:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 1
Зависимости: 37 (после дедупликации)
По экосистемам: pypi=37
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: immich:database Контейнеров: 1
Контейнер: immich_postgres Образ: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
Версия: tag=None label=14-vectorchord0.4.3-pgvector0.8.1-pgvectors0.2.0
Source repo: https://github.com/immich-app/base-images
Источник зависимостей: git
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: immich:immich-machine-learning Контейнеров: 1
Контейнер: immich_machine_learning Образ: ghcr.io/immich-app/immich-machine-learning:v2
Версия: tag=v2 label=v2.4.1
Source repo: https://github.com/immich-app/immich
Источник зависимостей: git
Манифесты: 14
Зависимости: 272 (после дедупликации)
По экосистемам: npm=251, pypi=21
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=38
────────────────────────────────────────────────────────────────────────────────────────
Сервис: immich:immich-server Контейнеров: 1
Контейнер: immich_server Образ: ghcr.io/immich-app/immich-server:v2
Версия: tag=v2 label=v2.4.1
Source repo: https://github.com/immich-app/immich
Источник зависимостей: container
Манифесты: 2
Зависимости: 142 (после дедупликации)
По экосистемам: npm=142
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=96
────────────────────────────────────────────────────────────────────────────────────────
Сервис: immich:redis Контейнеров: 1
Контейнер: immich_redis Образ: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
Версия: tag=None label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: new_sharkey:new_sharkey Контейнеров: 1
Контейнер: new_blog Образ: registry.activitypub.software/transfem-org/sharkey:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 6
Зависимости: 223 (после дедупликации)
По экосистемам: npm=223
OSV: уязвимости=13; затронутые пакеты=9; проверено пакетов=217 (CRITICAL=1, HIGH=7, MEDIUM=5, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:pnpm@9.6.0 -> 4 ids (max=HIGH)
- npm:nodemailer@6.10.1 -> 2 ids (max=MEDIUM)
- npm:form-data@4.0.2 -> 1 ids (max=CRITICAL)
- npm:glob@11.0.0 -> 1 ids (max=HIGH)
- npm:tar@7.4.3 -> 1 ids (max=HIGH)
- npm:axios@1.9.0 -> 1 ids (max=HIGH)
- npm:systeminformation@5.25.11 -> 1 ids (max=HIGH)
- npm:typeorm@0.3.22 -> 1 ids (max=HIGH)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: new_sharkey:sh_db Контейнеров: 1
Контейнер: new_sharkey-sh_db-1 Образ: postgres:15-alpine
Версия: tag=15-alpine label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: new_sharkey:sh_meilisearch Контейнеров: 1
Контейнер: new_sharkey-sh_meilisearch-1 Образ: getmeili/meilisearch:v1.3.4
Версия: tag=v1.3.4 label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: new_sharkey:sh_redis Контейнеров: 1
Контейнер: new_sharkey-sh_redis-1 Образ: redis:7-alpine
Версия: tag=7-alpine label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: peertube:peertube Контейнеров: 1
Контейнер: peertube Образ: chocobozzz/peertube:production-bookworm
Версия: tag=production-bookworm label=None
Source repo: None
Источник зависимостей: container
Манифесты: 12
Зависимости: 1338 (после дедупликации)
По экосистемам: npm=1336, pypi=2
OSV: уязвимости=13; затронутые пакеты=12; проверено пакетов=1217 (HIGH=10, MEDIUM=4, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:@angular/compiler@19.2.14 -> 2 ids (max=HIGH)
- npm:nodemailer@7.0.3 -> 2 ids (max=MEDIUM)
- npm:@angular/common@19.2.14 -> 1 ids (max=HIGH)
- npm:@angular/core@19.2.14 -> 1 ids (max=HIGH)
- npm:axios@1.11.0 -> 1 ids (max=HIGH)
- npm:glob@10.4.5 -> 1 ids (max=HIGH)
- npm:ip@2.0.1 -> 1 ids (max=HIGH)
- npm:qs@6.14.0 -> 1 ids (max=HIGH)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: peertube:postgres Контейнеров: 1
Контейнер: peertube-postgres-1 Образ: postgres:13-alpine
Версия: tag=13-alpine label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: peertube:redis Контейнеров: 1
Контейнер: peertube-redis-1 Образ: redis:6-alpine
Версия: tag=6-alpine label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: rybbit:backend Контейнеров: 1
Контейнер: backend Образ: ghcr.io/rybbit-io/rybbit-backend:latest
Версия: tag=latest label=v2.3.1
Source repo: https://github.com/rybbit-io/rybbit
Источник зависимостей: container
Манифесты: 12
Зависимости: 138 (после дедупликации)
По экосистемам: npm=138
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=4
────────────────────────────────────────────────────────────────────────────────────────
Сервис: rybbit:clickhouse Контейнеров: 1
Контейнер: clickhouse Образ: clickhouse/clickhouse-server:25.4.2
Версия: tag=25.4.2 label=22.04
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: rybbit:client Контейнеров: 1
Контейнер: client Образ: ghcr.io/rybbit-io/rybbit-client:latest
Версия: tag=latest label=v2.3.1
Source repo: https://github.com/rybbit-io/rybbit
Источник зависимостей: container
Манифесты: 12
Зависимости: 110 (после дедупликации)
По экосистемам: npm=110
OSV: уязвимости=1; затронутые пакеты=1; проверено пакетов=62 (HIGH=1, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:better-auth@1.3.27 -> 1 ids (max=HIGH)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: rybbit:postgres Контейнеров: 1
Контейнер: postgres Образ: postgres:17.4
Версия: tag=17.4 label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: services:dns Контейнеров: 1
Контейнер: blocky Образ: ghcr.io/0xerr0r/blocky
Версия: tag=latest label=v0.28.2
Source repo: https://github.com/0xERR0R/blocky
Источник зависимостей: git
Манифесты: 2
Зависимости: 216 (после дедупликации)
По экосистемам: go=216
OSV: уязвимости=4; затронутые пакеты=1; проверено пакетов=162 (MEDIUM=2, UNKNOWN=2)
OSV: топ уязвимых зависимостей:
- Go:golang.org/x/crypto@v0.44.0 -> 4 ids (max=MEDIUM)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: services:mail Контейнеров: 1
Контейнер: mail Образ: ghcr.io/docker-mailserver/docker-mailserver:latest
Версия: tag=latest label=v15.1.0
Source repo: https://github.com/docker-mailserver/docker-mailserver
Источник зависимостей: git
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: services:matrix Контейнеров: 1
Контейнер: services-matrix-1 Образ: forgejo.ellis.link/continuwuation/continuwuity:latest
Версия: tag=latest label=v0.5.3
Source repo: https://forgejo.ellis.link/continuwuation/continuwuity
Источник зависимостей: git
Манифесты: 15
Зависимости: 926 (после дедупликации)
По экосистемам: cargo=573, npm=353
OSV: уязвимости=4; затронутые пакеты=4; проверено пакетов=917 (HIGH=1, MEDIUM=1, UNKNOWN=2)
OSV: топ уязвимых зависимостей:
- npm:@remix-run/router@1.23.1 -> 1 ids (max=HIGH)
- npm:mdast-util-to-hast@13.2.0 -> 1 ids (max=MEDIUM)
- crates.io:paste@1.0.15 -> 1 ids (max=UNKNOWN)
- crates.io:rustls-pemfile@2.2.0 -> 1 ids (max=UNKNOWN)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: services:ntfy Контейнеров: 1
Контейнер: ntfy Образ: binwiederhier/ntfy
Версия: tag=latest label=None
Source repo: https://github.com/binwiederhier/ntfy
Источник зависимостей: git
Манифесты: 5
Зависимости: 797 (после дедупликации)
По экосистемам: go=111, npm=684, pypi=2
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=774
────────────────────────────────────────────────────────────────────────────────────────
Сервис: services:turn Контейнеров: 1
Контейнер: turn Образ: coturn/coturn:latest
Версия: tag=latest label=4.8.0-r0
Source repo: https://github.com/coturn/coturn
Источник зависимостей: git
Манифесты: 1
Зависимости: 1 (после дедупликации)
По экосистемам: npm=1
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:baikal Контейнеров: 1
Контейнер: baikal Образ: ckulka/baikal:nginx
Версия: tag=nginx label=0.10.1
Source repo: https://github.com/ckulka/baikal-docker
Источник зависимостей: git
Манифесты: 2
Зависимости: 281 (после дедупликации)
По экосистемам: npm=281
OSV: уязвимости=3; затронутые пакеты=3; проверено пакетов=281 (CRITICAL=1, HIGH=1, MEDIUM=1, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:form-data@4.0.2 -> 1 ids (max=CRITICAL)
- npm:qs@6.14.0 -> 1 ids (max=HIGH)
- npm:js-yaml@4.1.0 -> 1 ids (max=MEDIUM)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:caddy Контейнеров: 1
Контейнер: caddy Образ: caddy:latest
Версия: tag=latest label=v2.10.2
Source repo: https://github.com/caddyserver/caddy-docker
Источник зависимостей: git
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:cinny Контейнеров: 1
Контейнер: cinny Образ: ajbura/cinny
Версия: tag=latest label=v4.10.2
Source repo: https://github.com/cinnyapp/cinny
Источник зависимостей: git
Манифесты: 2
Зависимости: 924 (после дедупликации)
По экосистемам: npm=924
OSV: уязвимости=9; затронутые пакеты=11; проверено пакетов=924 (HIGH=3, MEDIUM=8, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:@remix-run/router@1.13.0 -> 1 ids (max=HIGH)
- npm:linkifyjs@4.1.3 -> 1 ids (max=HIGH)
- npm:tar@6.2.1 -> 1 ids (max=HIGH)
- npm:@babel/helpers@7.26.0 -> 1 ids (max=MEDIUM)
- npm:@babel/runtime@7.26.0 -> 1 ids (max=MEDIUM)
- npm:@babel/runtime-corejs3@7.26.0 -> 1 ids (max=MEDIUM)
- npm:esbuild@0.19.12 -> 1 ids (max=MEDIUM)
- npm:js-yaml@4.1.0 -> 1 ids (max=MEDIUM)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:cloud Контейнеров: 1
Контейнер: copyparty Образ: ghcr.io/9001/copyparty-ac:latest
Версия: tag=latest label=None
Source repo: https://github.com/9001/copyparty
Источник зависимостей: git
Манифесты: 1
Зависимости: 10 (после дедупликации)
По экосистемам: pypi=10
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:cryptpad Контейнеров: 1
Контейнер: cryptpad Образ: cryptpad/cryptpad:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 12
Зависимости: 604 (после дедупликации)
По экосистемам: npm=604
OSV: уязвимости=3; затронутые пакеты=3; проверено пакетов=510 (HIGH=2, MEDIUM=1, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:jws@3.2.2 -> 1 ids (max=HIGH)
- npm:qs@6.13.0 -> 1 ids (max=HIGH)
- npm:js-yaml@4.1.0 -> 1 ids (max=MEDIUM)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:dockge Контейнеров: 1
Контейнер: sites-dockge-1 Образ: louislam/dockge:1
Версия: tag=1 label=None
Source repo: None
Источник зависимостей: container
Манифесты: 12
Зависимости: 857 (после дедупликации)
По экосистемам: npm=857
OSV: уязвимости=14; затронутые пакеты=10; проверено пакетов=799 (CRITICAL=1, HIGH=6, MEDIUM=8, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:vite@5.4.15 -> 5 ids (max=MEDIUM)
- npm:tar-fs@2.1.2 -> 2 ids (max=HIGH)
- npm:form-data@4.0.2 -> 1 ids (max=CRITICAL)
- npm:axios@1.8.4 -> 1 ids (max=HIGH)
- npm:jws@3.2.2 -> 1 ids (max=HIGH)
- npm:qs@6.13.0 -> 1 ids (max=HIGH)
- npm:tar@6.2.1 -> 1 ids (max=HIGH)
- npm:@intlify/core-base@10.0.6 -> 1 ids (max=MEDIUM)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:fourget Контейнеров: 1
Контейнер: fourget Образ: luuul/4get:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:intellectual Контейнеров: 1
Контейнер: sites-intellectual-1 Образ: insprill/intellectual:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:it-tools Контейнеров: 1
Контейнер: it-tools Образ: ghcr.io/sharevb/it-tools:latest
Версия: tag=latest label=1.28.0-alpine
Source repo: https://github.com/nginx/docker-nginx-unprivileged
Источник зависимостей: git
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:mail-web Контейнеров: 1
Контейнер: mail-frontend Образ: roundcube/roundcubemail:latest
Версия: tag=latest label=None
Source repo: https://github.com/roundcube/roundcubemail-docker
Источник зависимостей: container
Манифесты: 1
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:main Контейнеров: 1
Контейнер: index Образ: g.lair.moe/sweetbread/lair.moe:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 1
Зависимости: 3 (после дедупликации)
По экосистемам: pypi=3
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=1
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:notes Контейнеров: 1
Контейнер: sites-notes-1 Образ: triliumnext/notes:latest
Версия: tag=latest label=v0.95.0
Source repo: https://github.com/TriliumNext/Notes
Источник зависимостей: container
Манифесты: 3
Зависимости: 25 (после дедупликации)
По экосистемам: npm=25
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=10
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:rss Контейнеров: 1
Контейнер: freshrss Образ: freshrss/freshrss:edge
Версия: tag=edge label=1.28.1-dev
Source repo: https://github.com/FreshRSS/FreshRSS
Источник зависимостей: container
Манифесты: 2
Зависимости: 449 (после дедупликации)
По экосистемам: npm=449
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=449
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:shlink Контейнеров: 1
Контейнер: sites-shlink-1 Образ: shlinkio/shlink:stable
Версия: tag=stable label=5.0.0
Source repo: https://github.com/shlinkio/shlink
Источник зависимостей: container
Манифесты: 1
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:status Контейнеров: 1
Контейнер: uptime-kuma Образ: ghcr.io/louislam/uptime-kuma:nightly2
Версия: tag=nightly2 label=None
Source repo: https://github.com/louislam/uptime-kuma
Источник зависимостей: container
Манифесты: 11
Зависимости: 211 (после дедупликации)
По экосистемам: npm=211
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=2
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:translite Контейнеров: 1
Контейнер: translite Образ: git.bloat.cat/gospodin/translite:master
Версия: tag=master label=None
Source repo: https://git.bloat.cat/gospodin/translite
Источник зависимостей: git
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:vaultwarden Контейнеров: 1
Контейнер: pass Образ: vaultwarden/server:latest
Версия: tag=latest label=1.35.2
Source repo: https://github.com/dani-garcia/vaultwarden
Источник зависимостей: git
Манифесты: 5
Зависимости: 796 (после дедупликации)
По экосистемам: cargo=566, npm=230
OSV: уязвимости=7; затронутые пакеты=7; проверено пакетов=796 (HIGH=2, MEDIUM=2, UNKNOWN=3)
OSV: топ уязвимых зависимостей:
- crates.io:vaultwarden@1.0.0 -> 1 ids (max=HIGH)
- npm:qs@6.14.0 -> 1 ids (max=HIGH)
- npm:body-parser@2.2.0 -> 1 ids (max=MEDIUM)
- npm:nodemailer@7.0.9 -> 1 ids (max=MEDIUM)
- crates.io:async-std@1.13.2 -> 1 ids (max=UNKNOWN)
- crates.io:rsa@0.9.9 -> 1 ids (max=UNKNOWN)
- crates.io:rustls-pemfile@1.0.4 -> 1 ids (max=UNKNOWN)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: sites:vert Контейнеров: 1
Контейнер: vert Образ: ghcr.io/vert-sh/vert:latest
Версия: tag=latest label=main
Source repo: https://github.com/VERT-sh/VERT
Источник зависимостей: git
Манифесты: 1
Зависимости: 46 (после дедупликации)
По экосистемам: npm=46
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=1
────────────────────────────────────────────────────────────────────────────────────────
Сервис: vpn:remnanode Контейнеров: 1
Контейнер: remnanode Образ: remnawave/node:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 12
Зависимости: 92 (после дедупликации)
По экосистемам: npm=92
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=32
────────────────────────────────────────────────────────────────────────────────────────
Сервис: vpn:remnawave Контейнеров: 1
Контейнер: remnawave Образ: remnawave/backend:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 12
Зависимости: 1096 (после дедупликации)
По экосистемам: npm=1096
OSV: уязвимости=2; затронутые пакеты=2; проверено пакетов=1082 (HIGH=2, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:qs@6.14.0 -> 1 ids (max=HIGH)
- npm:systeminformation@5.27.13 -> 1 ids (max=HIGH)
────────────────────────────────────────────────────────────────────────────────────────
Сервис: vpn:remnawave-db Контейнеров: 1
Контейнер: remnawave-db Образ: postgres:17.6
Версия: tag=17.6 label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: vpn:remnawave-redis Контейнеров: 1
Контейнер: remnawave-redis Образ: valkey/valkey:8.0.2-alpine
Версия: tag=8.0.2-alpine label=None
Source repo: None
Источник зависимостей: none
Манифесты: 0
Зависимости: 0 (после дедупликации)
OSV: уязвимости=0; затронутые пакеты=0; проверено пакетов=0
────────────────────────────────────────────────────────────────────────────────────────
Сервис: vpn:remnawave-subscription-page Контейнеров: 1
Контейнер: remnawave-subscription-page Образ: remnawave/subscription-page:latest
Версия: tag=latest label=None
Source repo: None
Источник зависимостей: container
Манифесты: 12
Зависимости: 737 (после дедупликации)
По экосистемам: npm=737
OSV: уязвимости=2; затронутые пакеты=2; проверено пакетов=715 (HIGH=2, UNKNOWN=0)
OSV: топ уязвимых зависимостей:
- npm:qs@6.14.0 -> 1 ids (max=HIGH)
- npm:systeminformation@5.27.13 -> 1 ids (max=HIGH)
========================================================================================
Всего контейнеров проанализировано: 54