Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp1397550pxx; Fri, 30 Oct 2020 09:04:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwkBtKsNJrRAH7bIiYiKxMYbEiO9Gxz6eR315T4KxsseQe4kCn7V1oxYQJxQsq4XphLiHGk X-Received: by 2002:a17:906:1411:: with SMTP id p17mr3361355ejc.102.1604073856737; Fri, 30 Oct 2020 09:04:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1604073856; cv=none; d=google.com; s=arc-20160816; b=sts9Ps5n9JtgQoVdmw3L44ANvj/7hEsSpua1KVHoUpmUASeLGFM2COrY7SmP13k4uh 2t/Sx/BeWpqJfJL6t60nsK2G3nGtxi5pX+TLLbhkcnJ3Vc9xNccsGoT2/2GmRPg7BKyH hXbbA/qwffROc598d1N5hqqysu58edBWRoO49VMeo7QOiZ669VLAgQIWUkKLs+8RZC08 VavjRppo69AnXNrPiuhSsjdV4TVGmm4S9e5WCaBf+auJOW+P9LtkO9cO1ZIYrqlKglSV isDT/cRKR71m0jKownCje7iAIJcEYgXSFgvnd8JT5qxi85px0G26ir8M432J0OOxx22B 3VOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=n5fNJZqlZetTYIJO8Iqz0w8O2c1vHQHO7CglGMMzaHU=; b=bSeMg646GoTfxvBfMfHr6uwNGkzvRklypqRng1vJGtoov08Zpd+xhZbhTS5WQswKTK gbdP9RCSU+WukBYSfOg7+SnzKoh1hFxDe8MXrx0TmpCK9NiINIhwpOBpIjc2AQpXhsQI YUxxrw/p4hZNpOfvQVYwhrniYDI6ziysOmdyPOgwLb2ephPBLdVYqg4F6go+8gRr5l2l zmY01adRqJK7fDuUjcjQIMjR+CXJ1rHUt6xUV2H2NtldU/zgmv+WKi2Xevit5Se0nkyN qAsUefrN/6SFRO0GjKTzBkG699vNIiaYXpynZNP13fcNnaZLq4c2QXmMuA3Ob4ocOC8x B3kQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r20si4851815edt.265.2020.10.30.09.03.41; Fri, 30 Oct 2020 09:04:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726095AbgJ3QDg (ORCPT + 99 others); Fri, 30 Oct 2020 12:03:36 -0400 Received: from mail.hallyn.com ([178.63.66.53]:57022 "EHLO mail.hallyn.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726061AbgJ3QDg (ORCPT ); Fri, 30 Oct 2020 12:03:36 -0400 Received: by mail.hallyn.com (Postfix, from userid 1001) id 0CBD712C3; Fri, 30 Oct 2020 11:03:32 -0500 (CDT) Date: Fri, 30 Oct 2020 11:03:32 -0500 From: "Serge E. Hallyn" To: Seth Forshee Cc: "Eric W. Biederman" , Aleksa Sarai , Christian Brauner , Alexander Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org, John Johansen , James Morris , Mimi Zohar , Dmitry Kasatkin , Stephen Smalley , Casey Schaufler , Arnd Bergmann , Andreas Dilger , OGAWA Hirofumi , Geoffrey Thomas , Mrunal Patel , Josh Triplett , Andy Lutomirski , Amir Goldstein , Miklos Szeredi , Theodore Tso , Alban Crequy , Tycho Andersen , David Howells , James Bottomley , Jann Horn , =?iso-8859-1?Q?St=E9phane?= Graber , Lennart Poettering , smbarber@chromium.org, Phil Estes , Serge Hallyn , Kees Cook , Todd Kjos , Jonathan Corbet , containers@lists.linux-foundation.org, linux-security-module@vger.kernel.org, linux-api@vger.kernel.org, linux-ext4@vger.kernel.org, linux-unionfs@vger.kernel.org, linux-audit@redhat.com, linux-integrity@vger.kernel.org, selinux@vger.kernel.org Subject: Re: [PATCH 00/34] fs: idmapped mounts Message-ID: <20201030160332.GA30083@mail.hallyn.com> References: <20201029003252.2128653-1-christian.brauner@ubuntu.com> <87pn51ghju.fsf@x220.int.ebiederm.org> <20201029155148.5odu4j2kt62ahcxq@yavin.dot.cyphar.com> <87361xdm4c.fsf@x220.int.ebiederm.org> <20201030150748.GA176340@ubuntu-x1> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201030150748.GA176340@ubuntu-x1> User-Agent: Mutt/1.9.4 (2018-02-28) Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org On Fri, Oct 30, 2020 at 10:07:48AM -0500, Seth Forshee wrote: > On Thu, Oct 29, 2020 at 11:37:23AM -0500, Eric W. Biederman wrote: > > First and foremost: A uid shift on write to a filesystem is a security > > bug waiting to happen. This is especially in the context of facilities > > like iouring, that play very agressive games with how process context > > makes it to system calls. > > > > The only reason containers were not immediately exploitable when iouring > > was introduced is because the mechanisms are built so that even if > > something escapes containment the security properties still apply. > > Changes to the uid when writing to the filesystem does not have that > > property. The tiniest slip in containment will be a security issue. > > > > This is not even the least bit theoretical. I have seem reports of how > > shitfs+overlayfs created a situation where anyone could read > > /etc/shadow. > > This bug was the result of a complex interaction with several > contributing factors. It's fair to say that one component was overlayfs > writing through an id-shifted mount, but the primary cause was related > to how copy-up was done coupled with allowing unprivileged overlayfs > mounts in a user ns. Checks that the mounter had access to the lower fs > file were not done before copying data up, and so the file was copied up > temporarily to the id shifted upperdir. Even though it was immediately > removed, other factors made it possible for the user to get the file > contents from the upperdir. > > Regardless, I do think you raise a good point. We need to be wary of any > place the kernel could open files through a shifted mount, especially > when the open could be influenced by userspace. > > Perhaps kernel file opens through shifted mounts should to be opt-in. > I.e. unless a flag is passed, or a different open interface used, the > open will fail if the dentry being opened is subject to id shifting. > This way any kernel writes which would be subject to id shifting will > only happen through code which as been written to take it into account. For my use cases, it would be fine to require opt-in at original fs mount time by init_user_ns admin. I.e. mount -o allow_idmap /dev/mapper/whoozit /whatzit I'm quite certain I would always be sharing a separate LV or loopback or tmpfs. -serge