Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp26105ybp; Thu, 3 Oct 2019 09:41:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqwXJnRbxT7rAAw3riGNTl69/oKSEMgfdifGRYtR1CNEcN5HDGqTQm2cYxmmP01zhkY9ZjFb X-Received: by 2002:a17:906:8043:: with SMTP id x3mr8570381ejw.221.1570120873824; Thu, 03 Oct 2019 09:41:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570120873; cv=none; d=google.com; s=arc-20160816; b=Hf+MTVdDcry/mF2DB3Xg/8eKBrqTSAavTEo+CnStAHU/uGPZdX151Igwy3ThwNSYQp B/NNxgFQpdtsB1vhO5anlX96Tv2OtzQ23vwfrBwT2/z8BaWXkiNGsvC1LnoP+EiepLQe KYE+wqpCdEi2p4cYw4qf9Jm3XlKnzPR0tkN2CbTbeNl6L4KfTa/C92fefJD9D0EqeXEf C0DmbEdybbWvHtBoaoSjHBhTKmQdYCGICHxBHW65huRuaXB/LKO4ojMfWyO6SY+bdIj4 b4R58ZOozvafWVnqstPd340cq+/vLOln8FHyqJQd5qU2wRZe2JNTVp3c0iWKup42rgjl vmvg== 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=kz3vcEuxB8PxKTfwqrzr0YdKss0eujEVYNUzUeNqPK4=; b=Tra2fK2tkinMDlIcJ2gJ4bTpAvfULLZto4wgxAOlaL85Wv/GVfioKL3kTykzFOi7vq uAWksAl8VSbxApmfCebw2tJH6XyfZ5nzN9fha+GUGSTOHI7oReqhT8nyUn+S6YFZunxv EcAkxt+3GlcBJ8zIhCES0naBoazixpn8Ql6S/xLiC/27/esmNcIJmbgCSm3iv0LDRoE2 j8hF70wgdxRDKnhwEc10zmlqjbuUyDXNPmWtrQ5TC1OrRbA6oL43yEEk9j9DIe9KUIVH rGmvqubbIyRH2m1Cph+YWLleF+0Sta4D2AhR7oy9m7aapmjPL7bwJ2xTTLPeDrnfl5GP H3uQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=S7Krhuim; 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 h19si1641581edv.393.2019.10.03.09.40.48; Thu, 03 Oct 2019 09:41: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=S7Krhuim; 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 S2404511AbfJCQg6 (ORCPT + 99 others); Thu, 3 Oct 2019 12:36:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:46256 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404501AbfJCQg4 (ORCPT ); Thu, 3 Oct 2019 12:36:56 -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 7CA3720830; Thu, 3 Oct 2019 16:36:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570120616; bh=CmtXy0D0yuXcEhN0X7903mDS0j4POCGAx1nqzYqdUeI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=S7Krhuim0Zi41s2CLz9+cy2fC9XvW3IsvC4cofChvTLgXiJ1CUu4gn2twKaywlJlC NbOBK2P+k596Ey25ga8LbRiKtsfMAr7ybkmfU2xocFSklqwvv2EE9ZPUUVBXsG5e/f Gov4PfIPpNt09hP3XZusldF4mzhzihz0aLCeH5zY= 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 5.2 250/313] binfmt_elf: Do not move brk for INTERP-less ET_EXEC Date: Thu, 3 Oct 2019 17:53:48 +0200 Message-Id: <20191003154557.675459805@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191003154533.590915454@linuxfoundation.org> References: <20191003154533.590915454@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 @@ -1142,7 +1142,8 @@ out_free_interp: * (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;