In etcd before versions 3.3.23 and 3.4.10, a large slice causes panic in decodeRecord method. The size of a record is stored in the length field of a WAL file and no additional validation is done on this data. Therefore, it is possible to forge an extremely large frame size that can unintentionally panic at the expense of any RAFT participant trying to decode the WAL.
{ "availability": "Available with Ubuntu Pro: https://ubuntu.com/pro", "ubuntu_priority": "medium", "binaries": [ { "binary_version": "3.2.17+dfsg-1ubuntu0.1+esm1", "binary_name": "etcd" }, { "binary_version": "3.2.17+dfsg-1ubuntu0.1+esm1", "binary_name": "etcd-client" }, { "binary_version": "3.2.17+dfsg-1ubuntu0.1+esm1", "binary_name": "etcd-client-dbgsym" }, { "binary_version": "3.2.17+dfsg-1ubuntu0.1+esm1", "binary_name": "etcd-server" }, { "binary_version": "3.2.17+dfsg-1ubuntu0.1+esm1", "binary_name": "etcd-server-dbgsym" }, { "binary_version": "3.2.17+dfsg-1ubuntu0.1+esm1", "binary_name": "golang-etcd-server-dev" } ] }
{ "availability": "No subscription required", "ubuntu_priority": "medium", "binaries": [ { "binary_version": "3.2.26+dfsg-6ubuntu0.1", "binary_name": "etcd" }, { "binary_version": "3.2.26+dfsg-6ubuntu0.1", "binary_name": "etcd-client" }, { "binary_version": "3.2.26+dfsg-6ubuntu0.1", "binary_name": "etcd-client-dbgsym" }, { "binary_version": "3.2.26+dfsg-6ubuntu0.1", "binary_name": "etcd-server" }, { "binary_version": "3.2.26+dfsg-6ubuntu0.1", "binary_name": "etcd-server-dbgsym" }, { "binary_version": "3.2.26+dfsg-6ubuntu0.1", "binary_name": "golang-etcd-server-dev" } ] }