CVE-2021-47249

In the Linux kernel, the following vulnerability has been resolved: net: rds: fix memory leak in rds_recvmsg Syzbot reported memory leak in rds. The problem was in unputted refcount in case of error. int rds_recvmsg(struct socket *sock, struct msghdr *msg, size_t size, int msg_flags) { ... if (!rds_next_incoming(rs, &inc)) { ... } After this "if" inc refcount incremented and if (rds_cmsg_recv(inc, msg, rs)) { ret = -EFAULT; goto out; } ... out: return ret; } in case of rds_cmsg_recv() fail the refcount won't be decremented. And it's easy to see from ftrace log, that rds_inc_addref() don't have rds_inc_put() pair in rds_recvmsg() after rds_cmsg_recv() 1) | rds_recvmsg() { 1) 3.721 us | rds_inc_addref(); 1) 3.853 us | rds_message_inc_copy_to_user(); 1) + 10.395 us | rds_cmsg_recv(); 1) + 34.260 us | }
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc6:*:*:*:*:*:*

History

30 Dec 2024, 19:01

Type Values Removed Values Added
First Time Linux
Linux linux Kernel
CWE CWE-401
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
References () https://git.kernel.org/stable/c/06b7cb0194bd1ede0dd27f3a946e7c0279fba44a - () https://git.kernel.org/stable/c/06b7cb0194bd1ede0dd27f3a946e7c0279fba44a - Patch
References () https://git.kernel.org/stable/c/1f79bc8ae81c05eb112a53f981cb2c244ee50d02 - () https://git.kernel.org/stable/c/1f79bc8ae81c05eb112a53f981cb2c244ee50d02 - Patch
References () https://git.kernel.org/stable/c/2038cd15eacdf7512755c27686822e0052eb9042 - () https://git.kernel.org/stable/c/2038cd15eacdf7512755c27686822e0052eb9042 - Patch
References () https://git.kernel.org/stable/c/423c6939758fb3b9cf5abbd1e7792068a5c4ae8c - () https://git.kernel.org/stable/c/423c6939758fb3b9cf5abbd1e7792068a5c4ae8c - Patch
References () https://git.kernel.org/stable/c/49bfcbfd989a8f1f23e705759a6bb099de2cff9f - () https://git.kernel.org/stable/c/49bfcbfd989a8f1f23e705759a6bb099de2cff9f - Patch
References () https://git.kernel.org/stable/c/5946fbf48355f5a8caeff72580c7658da5966b86 - () https://git.kernel.org/stable/c/5946fbf48355f5a8caeff72580c7658da5966b86 - Patch
References () https://git.kernel.org/stable/c/8c3ec88b03e9e4ca117dcdc4204fd3edcd02084f - () https://git.kernel.org/stable/c/8c3ec88b03e9e4ca117dcdc4204fd3edcd02084f - Patch
References () https://git.kernel.org/stable/c/b25b60d076164edb3025e85aabd2cf50a5215b91 - () https://git.kernel.org/stable/c/b25b60d076164edb3025e85aabd2cf50a5215b91 - Patch
CPE cpe:2.3:o:linux:linux_kernel:5.13:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.13:rc4:*:*:*:*:*:*

21 Nov 2024, 06:35

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux se ha resuelto la siguiente vulnerabilidad: net:rds: corrige pérdida de memoria en rds_recvmsg. Syzbot informó pérdida de memoria en rds. El problema estaba en el recuento no puesto en caso de error. int rds_recvmsg(struct socket *sock, struct msghdr *msg, size_t size, int msg_flags) { ... if (!rds_next_incoming(rs, &inc)) { ... } Después de esto "if" inc refcount incrementado y if (rds_cmsg_recv (inc, mensaje, rs)) { ret = -EFAULT; salir; } ... fuera: devolver ret; } en caso de que rds_cmsg_recv() falle, el recuento no disminuirá. Y es fácil ver en el registro de ftrace que rds_inc_addref() no tiene el par rds_inc_put() en rds_recvmsg() después de rds_cmsg_recv() 1) | rds_recvmsg() { 1) 3.721 us| rds_inc_addref(); 1) 3.853 us| rds_message_inc_copy_to_user(); 1) + 10.395 us| rds_cmsg_recv(); 1) + 34.260 us| }
References () https://git.kernel.org/stable/c/06b7cb0194bd1ede0dd27f3a946e7c0279fba44a - () https://git.kernel.org/stable/c/06b7cb0194bd1ede0dd27f3a946e7c0279fba44a -
References () https://git.kernel.org/stable/c/1f79bc8ae81c05eb112a53f981cb2c244ee50d02 - () https://git.kernel.org/stable/c/1f79bc8ae81c05eb112a53f981cb2c244ee50d02 -
References () https://git.kernel.org/stable/c/2038cd15eacdf7512755c27686822e0052eb9042 - () https://git.kernel.org/stable/c/2038cd15eacdf7512755c27686822e0052eb9042 -
References () https://git.kernel.org/stable/c/423c6939758fb3b9cf5abbd1e7792068a5c4ae8c - () https://git.kernel.org/stable/c/423c6939758fb3b9cf5abbd1e7792068a5c4ae8c -
References () https://git.kernel.org/stable/c/49bfcbfd989a8f1f23e705759a6bb099de2cff9f - () https://git.kernel.org/stable/c/49bfcbfd989a8f1f23e705759a6bb099de2cff9f -
References () https://git.kernel.org/stable/c/5946fbf48355f5a8caeff72580c7658da5966b86 - () https://git.kernel.org/stable/c/5946fbf48355f5a8caeff72580c7658da5966b86 -
References () https://git.kernel.org/stable/c/8c3ec88b03e9e4ca117dcdc4204fd3edcd02084f - () https://git.kernel.org/stable/c/8c3ec88b03e9e4ca117dcdc4204fd3edcd02084f -
References () https://git.kernel.org/stable/c/b25b60d076164edb3025e85aabd2cf50a5215b91 - () https://git.kernel.org/stable/c/b25b60d076164edb3025e85aabd2cf50a5215b91 -

21 May 2024, 15:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-05-21 15:15

Updated : 2024-12-30 19:01


NVD link : CVE-2021-47249

Mitre link : CVE-2021-47249

CVE.ORG link : CVE-2021-47249


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-401

Missing Release of Memory after Effective Lifetime