ACK[T/Z]: [SRU][P-ESM/T/Z][CVE-2017-11176][PATCH] mqueue: fix a use-after-free in sys_mq_notify()
Kleber Souza
kleber.souza at canonical.com
Thu Oct 5 12:23:13 UTC 2017
On 10/05/2017 12:47 PM, Juerg Haefliger wrote:
> From: Cong Wang <xiyou.wangcong at gmail.com>
>
> The retry logic for netlink_attachskb() inside sys_mq_notify()
> is nasty and vulnerable:
>
> 1) The sock refcnt is already released when retry is needed
> 2) The fd is controllable by user-space because we already
> release the file refcnt
>
> so we when retry but the fd has been just closed by user-space
> during this small window, we end up calling netlink_detachskb()
> on the error path which releases the sock again, later when
> the user-space closes this socket a use-after-free could be
> triggered.
>
> Setting 'sock' to NULL here should be sufficient to fix it.
>
> CVE-2017-11176
>
> Reported-by: GeneBlue <geneblue.mail at gmail.com>
> Signed-off-by: Cong Wang <xiyou.wangcong at gmail.com>
> Cc: Andrew Morton <akpm at linux-foundation.org>
> Cc: Manfred Spraul <manfred at colorfullife.com>
> Cc: stable at kernel.org
> Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
> (cherry picked from commit f991af3daabaecff34684fd51fac80319d1baad1)
> Signed-off-by: Juerg Haefliger <juerg.haefliger at canonical.com>
As pointed out by Po-Hsu Lin, this fix is not needed for
precise-esm/master, only for precise-esm/lts-trusty. So for T and Z:
Acked-by: Kleber Sacilotto de Souza <kleber.souza at canonical.com>
> ---
> ipc/mqueue.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/ipc/mqueue.c b/ipc/mqueue.c
> index 5b4293d9819d..081a2d74b0d1 100644
> --- a/ipc/mqueue.c
> +++ b/ipc/mqueue.c
> @@ -1095,8 +1095,10 @@ retry:
>
> timeo = MAX_SCHEDULE_TIMEOUT;
> ret = netlink_attachskb(sock, nc, &timeo, NULL);
> - if (ret == 1)
> + if (ret == 1) {
> + sock = NULL;
> goto retry;
> + }
> if (ret) {
> sock = NULL;
> nc = NULL;
>
More information about the kernel-team
mailing list