Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4755247pxj; Wed, 12 May 2021 12:29:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxrkwNZiJ08UGb7VtvAN/i3GwdGdbaKx1mmjOSNJz1vKrF81A1BJxs3ewKy9kCLrnYa9PWc X-Received: by 2002:a17:906:2bc5:: with SMTP id n5mr4500016ejg.531.1620847794813; Wed, 12 May 2021 12:29:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620847794; cv=none; d=google.com; s=arc-20160816; b=ZSSsJbIiQC9I25fyOOvPEtz1wFNG5f81KyjOVFEocSX8i8NnGtXw5TUKFOH+G9rfCO U6PVxCIPGhK13+tAMtwTH4Jb81KN4pZmcRP/UcI48p81ID2N89G5R3Q3+dFfRS7Ns1BE 1PiMlv6ncgblD5eQ7iP2mhDw/wZkTrh/EbcrFZ5j/ws/sxvjv1yIYozBqcU7RrIguhPy CeJWRP3nh0ottzosihtUS3zHsMGXfvevVFjZlsqF3H8pv2DGwT9XmE2S1khcadiCdJei QnjTKLKOmXx/ApCjKLqYz03E0i4/ebMqzLwN1UaxxxWXlB73ilDE50WQIdQjT3gdPSWY fTLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=RqL0Qy9x3DKEn/yxqsAz18iMj3jttcw3RCGAJhgljo0=; b=bl2zHnbLbKseON6Wacz7KrFusx8mkaR+5K8Q7ImFLVL3/8lW1pMKg7pL3KtNKvlbnx T73e5KcjsUSfzItNw5VHNyPCZglaxNWgbSr/ZjXusik43wAIiLZDSvIHcdSEJ6ZVcUpw oDuJ9SopC5dFAZ9EdvwCnpPC5uF1sGyeY1UKbkhDu2PqwatIYGgJiwDojlkuIOhvVsAP OzwkIuWN0R+VYTvZkp2bdpxllb449cCoIuRgdWmUpyYccASNnJfOkMxNijuRssTu1YTZ rLqm0x+Xszl8Jp+aG08wnspmvPDoU/21QSHBAPQRyOqkrygQswDGbZwMIQm/sahCP55z ed/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=1oB3iDnG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s12si518355edd.416.2021.05.12.12.29.30; Wed, 12 May 2021 12:29:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=1oB3iDnG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379646AbhELTUG (ORCPT + 99 others); Wed, 12 May 2021 15:20:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:43882 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244733AbhELQvI (ORCPT ); Wed, 12 May 2021 12:51:08 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6861361C86; Wed, 12 May 2021 16:17:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620836255; bh=iL9F0uU2nkg5CIRC/Gc/9Qbk5I/M2tuzeiAsq5MVDQM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1oB3iDnGSYzEBh1pK1huXMTJ4g+77fnf1X1LzPmrSPLUAkQpHVKNjOxvJWDhrlsKq YQmcwMoi6LunktX9xnaoLKbluqyTPm1wR/n1rSBrd7UsfFWvLwZAGve2hklRUt84wf AVxMdbrxxQTqo+NXOfr+7tryNNGLJ4kYzka+gaUg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Thadeu Lima de Souza Cascardo , Daniel Borkmann , Andrii Nakryiko , Alexei Starovoitov Subject: [PATCH 5.12 672/677] bpf, ringbuf: Deny reserve of buffers larger than ringbuf Date: Wed, 12 May 2021 16:51:58 +0200 Message-Id: <20210512144859.685292990@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144837.204217980@linuxfoundation.org> References: <20210512144837.204217980@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thadeu Lima de Souza Cascardo commit 4b81ccebaeee885ab1aa1438133f2991e3a2b6ea upstream. A BPF program might try to reserve a buffer larger than the ringbuf size. If the consumer pointer is way ahead of the producer, that would be successfully reserved, allowing the BPF program to read or write out of the ringbuf allocated area. Reported-by: Ryota Shiga (Flatt Security) Fixes: 457f44363a88 ("bpf: Implement BPF ring buffer and verifier support for it") Signed-off-by: Thadeu Lima de Souza Cascardo Signed-off-by: Daniel Borkmann Acked-by: Andrii Nakryiko Acked-by: Alexei Starovoitov Signed-off-by: Greg Kroah-Hartman --- kernel/bpf/ringbuf.c | 3 +++ 1 file changed, 3 insertions(+) --- a/kernel/bpf/ringbuf.c +++ b/kernel/bpf/ringbuf.c @@ -315,6 +315,9 @@ static void *__bpf_ringbuf_reserve(struc return NULL; len = round_up(size + BPF_RINGBUF_HDR_SZ, 8); + if (len > rb->mask + 1) + return NULL; + cons_pos = smp_load_acquire(&rb->consumer_pos); if (in_nmi()) {