Плагин Grav API (getgrad/grad-plugin-api) версий >= 1.0.6 и <= 1.0.11 содержит уязвимость повышения привилегий. Ключ API с ограниченной областью, созданный в учетной записи суперадминистратора, обходит объявленное ограничение области на четырех конечных точках записи, контролируемых isSuperAdmin() (в GroupsController, AccountsConfigController, PreferencesController и DashboardWidgetController). Эти конечные точки авторизуются посредством раннего возврата суперадминистратора, который никогда не вызывает requirePermission() — единственную точку применения ограничения области — поэтому ключ с областью действия «только для чтения» (например, api.pages.read) может выполнять операции записи только для суперадминистратора, включая перезапись групповых карт ACL для предоставления привилегий суперадминистратора произвольным учетным записям.
Таким образом, утекший или делегированный ключ CI/мониторинга только для чтения может получить полную возможность записи суперадминистратора. Исправлено в 1.0.13.
Показать оригинальное описание (EN)
The Grav API plugin (getgrav/grav-plugin-api) versions >= 1.0.6 and <= 1.0.11 contain a privilege escalation vulnerability. A scoped API key minted on a super-admin account bypasses its declared scope cap on four isSuperAdmin()-gated write endpoints (in GroupsController, AccountsConfigController, PreferencesController, and DashboardWidgetController). These endpoints authorize via a super-admin early-return that never invokes requirePermission()—the sole enforcement point of the scope cap—so a 'read-only'-scoped key (e.g. api.pages.read) can perform super-only write operations, including rewriting group ACL maps to grant super-admin privileges to arbitrary accounts. A leaked or delegated read-only CI/monitoring key can therefore gain full super-admin write capability. Fixed in 1.0.13.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 20
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:1.0.6:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.10:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.9:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.8:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.7:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.6:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.5:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:1.7.53.2:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:1.7.53.1:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.4:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.3:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.2:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.1:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.0:-:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.0:rc10:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.0:rc9:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:1.7.53:*:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.0:rc8:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.0:rc7:*:*:*:*:*:*
|
— | — |
|
Getgrav Grav
cpe:2.3:a:getgrav:grav:2.0.0:rc6:*:*:*:*:*:*
|
— | — |