feat: README and examples
This commit is contained in:
1 parent
d8c7f3d940
commit
2797151d2c
3 files changed
+861
No files matched your search
@@ -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**
|
||||
---
|
||||
@@ -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
|
||||
Reference in new issue
Block a user