Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp5812ybp; Thu, 3 Oct 2019 09:24:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqyt956hj5lvzmHEUwCJVJkMmvKFPHktSgYG3CKeGAngBM39xWIPZyUsO/bFgPch8UhaKN80 X-Received: by 2002:a05:6402:383:: with SMTP id o3mr10462908edv.205.1570119853080; Thu, 03 Oct 2019 09:24:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570119853; cv=none; d=google.com; s=arc-20160816; b=fnCAHwAosh3YsjKEMfOjwPicTtyBWnpta8pKBdKH1hgEwYJSA0FtjqVb+6EwGSXH2q 7MwOc4k2KYbNsT/vuH11brYTEkZEGLUZfqsH5LMn1HsMQZZalzBc5wa6I32O+ZEitTjr Aox8rk8rZ6NAI61jtvkyfqQdKucj/vLjvjYLaVJF14Le5yzj0/9f39vxyEHbmUwNlfI6 PaOsQOGWO3j7oTdNDhltOHe7aKV5WGVOazr1ZfNbOEsQKOSfWiQV7XNb5ifvnyYenSVP HXkygo/jZ3lK/gqduTmKlG3fuSvSCr/i94EmO5oUOcvHeR6cWEEjuABD48jnKAPWO6HO uVpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nAmmaNMmvrE06fzLpVw7D7ie3v/xxVAw1yprmSmM7HM=; b=BgPzaGTs8u+2j8uoi966GCcYjCMrvEyOnps6aPl+H4F3eFctN+vK9/uC6QPIRCSCck X+yBFo1B+oiqAiFNmsXyB5ynzedLcXzu2EuoqGkHJ67GmFWF+iYAyVn3+h6b56wQldhV VbsD69W1see0i0kHsbvFFWsC+w5W3H8RUUT+rgEoMp4taAtbqTGk1412XWFXA6Osr9ML 1ASsBefbXvyx5SQp46SIMU5yyY0CNs3qtK4RNn9hl1lMtCo0ylzDZKZxsBDx+VqVscLu EfY+CcWFJVNWbBwItwBjJssNKSxM/7WL3v+BijSpK69iF6c4En/K50WxVMbGPpyTP78W ZfOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2SyIaFiw; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i17si1520040ejy.374.2019.10.03.09.23.47; Thu, 03 Oct 2019 09:24:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2SyIaFiw; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388936AbfJCQWH (ORCPT + 99 others); Thu, 3 Oct 2019 12:22:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:50582 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390236AbfJCQWE (ORCPT ); Thu, 3 Oct 2019 12:22:04 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 75AD22054F; Thu, 3 Oct 2019 16:22:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570119723; bh=63xOMFMQUuzsi+PULzxkPcHXrSObujGwDMEmR4JZZAc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2SyIaFiwR4pwMk2erj4ItUtn/E9EMbUe1/fSuUpclhHpvFwMLjzRm7gO5ppgKRXgN oY9MKolCPh6uKY/3/bwQ6bQ+HXent1zHAsCaeYLoGHGZXNo1nbcv3dInw8jLK3nM8O eRa0kpIpzcjibLfDRh3ItCXh/EXgam17Tcx1q/pI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kees Cook , Linus Torvalds , Richard Kojedzinszky Subject: [PATCH 4.19 170/211] binfmt_elf: Do not move brk for INTERP-less ET_EXEC Date: Thu, 3 Oct 2019 17:53:56 +0200 Message-Id: <20191003154526.183111566@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191003154447.010950442@linuxfoundation.org> References: <20191003154447.010950442@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kees Cook commit 7be3cb019db1cbd5fd5ffe6d64a23fefa4b6f229 upstream. When brk was moved for binaries without an interpreter, it should have been limited to ET_DYN only. In other words, the special case was an ET_DYN that lacks an INTERP, not just an executable that lacks INTERP. The bug manifested for giant static executables, where the brk would end up in the middle of the text area on 32-bit architectures. Reported-and-tested-by: Richard Kojedzinszky Fixes: bbdc6076d2e5 ("binfmt_elf: move brk out of mmap when doing direct loader exec") Cc: stable@vger.kernel.org Signed-off-by: Kees Cook Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- fs/binfmt_elf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -1144,7 +1144,8 @@ static int load_elf_binary(struct linux_ * (since it grows up, and may collide early with the stack * growing down), and into the unused ELF_ET_DYN_BASE region. */ - if (IS_ENABLED(CONFIG_ARCH_HAS_ELF_RANDOMIZE) && !interpreter) + if (IS_ENABLED(CONFIG_ARCH_HAS_ELF_RANDOMIZE) && + loc->elf_ex.e_type == ET_DYN && !interpreter) current->mm->brk = current->mm->start_brk = ELF_ET_DYN_BASE;