etcd — это распределенное хранилище значений ключей для данных распределенной системы. До версий 3.5.33, 3.6.14 и 3.7.1 пользователь, которому предоставлено разрешение READ для одного точного ключа, может использовать API Watch gRPC с clientv3.WithFromKey() для получения событий наблюдения для каждого ключа, лексикографически превышающего или равного разрешенному ключу. В server/etcdserver/api/v3rpc/watch.go открытый сигнал RangeEnd перезаписывается перед проверкой разрешений RBAC в функции server/auth/range_perm_cache.go isRangeOpPermitted, в результате чего запрос обрабатывается как наблюдение с точным ключом.
Запросы Range/Get и DeleteRange не затрагиваются, и проблема затрагивает только кластеры с включенной проверкой подлинности. Эта проблема исправлена в версиях 3.5.33, 3.6.14 и 3.7.1.
Показать оригинальное описание (EN)
etcd is a distributed key-value store for the data of a distributed system. Prior to versions 3.5.33, 3.6.14, and 3.7.1, a user granted READ permission on a single exact key can use the Watch gRPC API with clientv3.WithFromKey() to receive watch events for every key lexicographically greater than or equal to the permitted key. In server/etcdserver/api/v3rpc/watch.go, the open-ended RangeEnd sentinel is rewritten before the RBAC permission check in server/auth/range_perm_cache.go function isRangeOpPermitted, causing the request to be treated as an exact-key watch. Range/Get and DeleteRange requests are not affected, and the issue affects only clusters with authentication enabled. This issue is fixed in versions 3.5.33, 3.6.14, and 3.7.1.
Характеристики атаки
Последствия
Строка CVSS v4.0