Hoppscotch — это экосистема разработки API с открытым исходным кодом. До версии 2026.2.0 любой вошедший в систему пользователь мог читать, изменять или удалять личную среду другого пользователя по идентификатору. `user-environments.resolver.ts:82-109`, мутация `updateUserEnvironment` использует `@UseGuards(GqlAuthGuard)`, но полностью лишен декоратора `@GqlUser()`. Идентификация пользователя никогда не извлекается, поэтому служба получает только идентификатор среды и выполняет `prisma.userEnvironment.update({where: { id } })` без какого-либо фильтра владения. `deleteUserEnvironment` извлекает пользователя, но служба использует только UID, чтобы проверить, является ли цель глобальной средой.
Фактический запрос на удаление использует WHERE { id } без AND userUid. Среды Hoppscotch хранят ключи API, токены аутентификации и секреты, используемые в запросах API. Злоумышленник, прошедший проверку подлинности и получивший идентификатор среды другого пользователя, может прочитать его секреты, заменить их вредоносными значениями или полностью удалить.
Формат идентификатора среды — CUID, что ограничивает массовую эксплуатацию, но сценарии внутренней угрозы и комбинированной утечки информации вполне реалистичны. Версия 2026.2.0 устраняет проблему.
Показать оригинальное описание (EN)
hoppscotch is an open source API development ecosystem. Prior to version 2026.2.0, any logged-in user can read, modify or delete another user's personal environment by ID. `user-environments.resolver.ts:82-109`, `updateUserEnvironment` mutation uses `@UseGuards(GqlAuthGuard)` but is missing the `@GqlUser()` decorator entirely. The user's identity is never extracted, so the service receives only the environment ID and performs a `prisma.userEnvironment.update({ where: { id } })` without any ownership filter. `deleteUserEnvironment` does extract the user but the service only uses the UID to check if the target is a global environment. Actual delete query uses WHERE { id } without AND userUid. hoppscotch environments store API keys, auth tokens and secrets used in API requests. An authenticated attacker who obtains another user's environment ID can read their secrets, replace them with malicious values or delete them entirely. The environment ID format is CUID, which limits mass exploitation but insider threat and combined info leak scenarios are realistic. Version 2026.2.0 fixes the issue.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Hoppscotch Hoppscotch
cpe:2.3:a:hoppscotch:hoppscotch:*:*:*:*:*:*:*:*
|
— |
2026.2.0
|