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/rangepermcache.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.
{
"binaries": [
{
"binary_version": "3.2.17+dfsg-1ubuntu0.1+esm2",
"binary_name": "etcd"
},
{
"binary_version": "3.2.17+dfsg-1ubuntu0.1+esm2",
"binary_name": "etcd-client"
},
{
"binary_version": "3.2.17+dfsg-1ubuntu0.1+esm2",
"binary_name": "etcd-server"
},
{
"binary_version": "3.2.17+dfsg-1ubuntu0.1+esm2",
"binary_name": "golang-etcd-server-dev"
}
]
}{
"binaries": [
{
"binary_version": "3.2.26+dfsg-6ubuntu0.2+esm1",
"binary_name": "etcd"
},
{
"binary_version": "3.2.26+dfsg-6ubuntu0.2+esm1",
"binary_name": "etcd-client"
},
{
"binary_version": "3.2.26+dfsg-6ubuntu0.2+esm1",
"binary_name": "etcd-server"
},
{
"binary_version": "3.2.26+dfsg-6ubuntu0.2+esm1",
"binary_name": "golang-etcd-server-dev"
}
]
}{
"binaries": [
{
"binary_version": "3.3.25+dfsg-7ubuntu0.22.04.2+esm3",
"binary_name": "etcd"
},
{
"binary_version": "3.3.25+dfsg-7ubuntu0.22.04.2+esm3",
"binary_name": "etcd-client"
},
{
"binary_version": "3.3.25+dfsg-7ubuntu0.22.04.2+esm3",
"binary_name": "etcd-server"
},
{
"binary_version": "3.3.25+dfsg-7ubuntu0.22.04.2+esm3",
"binary_name": "golang-etcd-server-dev"
}
]
}{
"binaries": [
{
"binary_version": "3.4.30-1ubuntu0.24.04.3+esm2",
"binary_name": "etcd-client"
},
{
"binary_version": "3.4.30-1ubuntu0.24.04.3+esm2",
"binary_name": "etcd-server"
},
{
"binary_version": "3.4.30-1ubuntu0.24.04.3+esm2",
"binary_name": "golang-etcd-server-dev"
}
]
}{
"binaries": [
{
"binary_version": "3.5.16-10ubuntu0.26.04.1~esm1",
"binary_name": "etcd-client"
},
{
"binary_version": "3.5.16-10ubuntu0.26.04.1~esm1",
"binary_name": "etcd-server"
},
{
"binary_version": "3.5.16-10ubuntu0.26.04.1~esm1",
"binary_name": "golang-etcd-server-dev"
}
]
}