Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp2092494ybe; Sat, 7 Sep 2019 08:42:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqwiYpmqt74Z+D8Lj6X79sJsiaE7N8boiSArbJVlMzD3nMD9X6/JAK70U5KdU8iB8N6GjaFg X-Received: by 2002:a63:a66:: with SMTP id z38mr13559301pgk.247.1567870948746; Sat, 07 Sep 2019 08:42:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567870948; cv=none; d=google.com; s=arc-20160816; b=QXVRkyd+4GZqo6lHXZMicHkjV3dsBmV8gM95D5d3Fh4UWSxcHjQQ78yrcgUHZmtcEe YtP3nCv8acUrqeYEUJGT58IjFe14vIB99/qmN86dM/TS94k9x8C/e/JaW5TbetHspNyo 5fzxqsmFclHkuymUxOeG8OUalR3yKA99K+c+bkBde+vxwxkRPnZHNL8U6oncM+rn3PEE rZegjX98fodI1epwz3mL0ZBj3gI+MKI8JyaXpvz8rMcBxSRWOx+fdAiD6Dhs9PnzbH8r qLVHhPULa2Kymy/TXLaIM6OkrG2wo5htjyWMvIPZqb4aSYuu0ZMNh1nbb5WKNyBDl/A1 Ai+A== 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:message-id:in-reply-to:date:references:subject:cc:to :from; bh=1ImrRSAS9JmyEYKAX9+P8zuyB+unzWC+F3Z0ZAksBXU=; b=DvC+XZB8L2aa8YmWK5h0Yrs/SuEIvlbpv3myyrhMe2yW+ZiHGEGehR9Aj1ZfD/vilj mcTMaeqe+dUd13u6sX4sgWrIGzWkkTYR4eiAO+kLkGPKdYPb/hjDtH+I2QFn2EYTMuCq o5XBK90MoRkDJ3NkaAhQNJt260aidv2ZH2I7WMApb//JB5WFElk5uhHJm4ADsUc5otpp kGZ1AQhqSG7J4zry5WN0gc/7Y1lcNnbmKtQlpD1wzPd0KRF1CsyIqdNbr2PQEoNFvZmm eSPWIwBJvpENh98d+vXY70ZDUsDn76MRTAbJF4HdCKjjJyzVO8evCJ72ZTyblwSU3nJl wkbA== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p6si7790022plk.121.2019.09.07.08.42.13; Sat, 07 Sep 2019 08:42:28 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404631AbfIFS1o convert rfc822-to-8bit (ORCPT + 99 others); Fri, 6 Sep 2019 14:27:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50020 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392062AbfIFS1o (ORCPT ); Fri, 6 Sep 2019 14:27:44 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 24C82558A1; Fri, 6 Sep 2019 18:27:43 +0000 (UTC) Received: from oldenburg2.str.redhat.com (ovpn-116-27.ams2.redhat.com [10.36.116.27]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E83F85EE1D; Fri, 6 Sep 2019 18:27:33 +0000 (UTC) From: Florian Weimer To: Tycho Andersen Cc: Christian Brauner , Aleksa Sarai , =?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?= , =?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?= , linux-kernel@vger.kernel.org, Alexei Starovoitov , Al Viro , Andy Lutomirski , Christian Heimes , Daniel Borkmann , Eric Chiang , James Morris , Jan Kara , Jann Horn , Jonathan Corbet , Kees Cook , Matthew Garrett , Matthew Wilcox , Michael Kerrisk , Mimi Zohar , Philippe =?utf-8?Q?Tr=C3=A9buchet?= , Scott Shell , Sean Christopherson , Shuah Khan , Song Liu , Steve Dower , Steve Grubb , Thibaut Sautereau , Vincent Strubel , Yves-Alexis Perez , kernel-hardening@lists.openwall.com, linux-api@vger.kernel.org, linux-security-module@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH v2 1/5] fs: Add support for an O_MAYEXEC flag on sys_open() References: <20190906152455.22757-1-mic@digikod.net> <20190906152455.22757-2-mic@digikod.net> <87ef0te7v3.fsf@oldenburg2.str.redhat.com> <75442f3b-a3d8-12db-579a-2c5983426b4d@ssi.gouv.fr> <20190906170739.kk3opr2phidb7ilb@yavin.dot.cyphar.com> <20190906172050.v44f43psd6qc6awi@wittgenstein> <20190906174041.GH7627@cisco> Date: Fri, 06 Sep 2019 20:27:31 +0200 In-Reply-To: <20190906174041.GH7627@cisco> (Tycho Andersen's message of "Fri, 6 Sep 2019 11:40:41 -0600") Message-ID: <87v9u5cmb0.fsf@oldenburg2.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 06 Sep 2019 18:27:43 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Tycho Andersen: > On Fri, Sep 06, 2019 at 07:20:51PM +0200, Christian Brauner wrote: >> On Sat, Sep 07, 2019 at 03:07:39AM +1000, Aleksa Sarai wrote: >> > On 2019-09-06, Mickaël Salaün wrote: >> > > >> > > On 06/09/2019 17:56, Florian Weimer wrote: >> > > > Let's assume I want to add support for this to the glibc dynamic loader, >> > > > while still being able to run on older kernels. >> > > > >> > > > Is it safe to try the open call first, with O_MAYEXEC, and if that fails >> > > > with EINVAL, try again without O_MAYEXEC? >> > > >> > > The kernel ignore unknown open(2) flags, so yes, it is safe even for >> > > older kernel to use O_MAYEXEC. >> > >> > Depends on your definition of "safe" -- a security feature that you will >> > silently not enable on older kernels doesn't sound super safe to me. >> > Unfortunately this is a limitation of open(2) that we cannot change -- >> > which is why the openat2(2) proposal I've been posting gives -EINVAL for >> > unknown O_* flags. >> > >> > There is a way to probe for support (though unpleasant), by creating a >> > test O_MAYEXEC fd and then checking if the flag is present in >> > /proc/self/fdinfo/$n. >> >> Which Florian said they can't do for various reasons. >> >> It is a major painpoint if there's no easy way for userspace to probe >> for support. Especially if it's security related which usually means >> that you want to know whether this feature works or not. > > What about just trying to violate the policy via fexecve() instead of > looking around in /proc? Still ugly, though. How would we do this? This is about opening the main executable as part of an explicit loader invocation. Typically, an fexecve will succeed and try to run the program, but with the wrong dynamic loader. Thanks, Florian