Ad

CVE-2026-47127

MEDIUM CVSS 3.1: 6,5 EPSS 0.24%
Обновлено 13 августа 2026
Ghostfolio
Параметр Значение
CVSS 6,5 (MEDIUM)
Тип уязвимости CWE-862 (Отсутствие авторизации)
Поставщик Ghostfolio
Публичный эксплойт Нет

Ghostfolio — это программное обеспечение для управления активами с открытым исходным кодом. До версии 3.4.0 обработчик URL-адреса успешной проверки Stripe в Ghostfolio по адресу `GET /api/v1/subscription/stripe/callback?checkoutSessionId=<id>` извлекает сеанс Stripe Checkout по идентификатору и безоговорочно предоставляет Премиум-подписку на `client_reference_id` сеанса — без проверки `session.pay_status` или `session.status`. Не существует отдельной конечной точки веб-перехватчика Stripe с проверкой Stripe-Signature; этот обратный вызов — единственный путь кода, который создает подписки, управляемые Stripe.

Любой прошедший аутентификацию пользователь может самостоятельно оформить подписку Premium на 1 год, даже не заплатив. Версия 3.4.0 отклоняет сеансы, если только `session.pay_status === 'paid'` И `session.status === 'complete'` (не удалось закрыть). Кроме того, новый уникальный столбец «stripeCheckoutSessionId» → сеанс не может быть активирован дважды (безопасно для гонок благодаря уникальному ограничению БД).

Показать оригинальное описание (EN)

Ghostfolio is an open source wealth management software. Prior to version 3.4.0, Ghostfolio's Stripe checkout success-URL handler at `GET /api/v1/subscription/stripe/callback?checkoutSessionId=<id>` retrieves the Stripe Checkout Session by ID and unconditionally grants a Premium subscription to the session's `client_reference_id` — without ever checking `session.payment_status` or `session.status`. There is no separate Stripe webhook endpoint with `stripe-signature` verification; this callback is the sole code path that creates Stripe-driven subscriptions. Any authenticated user can self-grant a 1-year Premium subscription without ever paying. Version 3.4.0 rejects sessions unless `session.payment_status === 'paid'` AND `session.status === 'complete'` (fails closed). Additionally, new unique `stripeCheckoutSessionId` column → a session can't be redeemed twice (race-safe via DB unique constraint).

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Высокое
Полная модификация данных
Доступность
Нет
Нет нарушения работы

Строка CVSS v3.1

Уязвимые продукты

ghostfolio:ghostfolio