Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp782255imm; Sat, 26 May 2018 10:59:32 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpDvR72NmiPL0iyYrS4xVKBR7wJLMBoEaiQRQKnwIRegkKA2tspCqZd3P+BWG62r7OQCq96 X-Received: by 2002:a63:7c04:: with SMTP id x4-v6mr5617295pgc.67.1527357572004; Sat, 26 May 2018 10:59:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527357571; cv=none; d=google.com; s=arc-20160816; b=ItedH5D0I30FgFeKush0/VfV3VTLS6LWiMHBI8AY9i6dfW+8zhC4IYrm6qTOVgOFC2 nc4HH4zm/PDn73t8WV0eNauTzD7y11uZRmbgUeS+Y5YFz2TBvgF2J0M2JIo7UsC+uCm/ 0vjknpaTGGPSQeHghJUPxZSOMRqfY8acUkXsJFU6r9C9MhxD8Hp6S187IOIpsTf2ikkZ vObUOUGMMQkMCTa2CippSkd5b8xxI2Zcd1IBT0/bVAzncnvyvygKVyv0Q5dRh1ShXNkr 3WJuUJukmCVvJmlF3TyCCEXu5k/pCWBEaOMLdWgdvyyoXytIYEltr3HpgU/OLAR6fWYW z8Yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=npbrG/NX8XTSGNuU9jq/piZVeix3kXIwRD7YLniYX7c=; b=gOos9RaWS+ptezfHqjLU9q0OTdLAh+bNZhGAEZnavjEExboo9vYbexzxFEln1Imdkw N74cOo3qE4M7EKTi0N4mzV1pglVXhPF+UUtwLvJt50XwV1nHNqqxViMrQ7/WWICFoctr ugbkVce/rjm9ibacBbF6/NONVHb8c1dxZdjpso0wKnU13Rq5/VVPCpOLtrsULP0mDvLI vLiv//wI20heKp1CXSoZsnij8GSvDbavcC9IqloYIklG6/qwYb5dq/pK7ZHV45aPypek vEVbGLpnP0P6JpKmnork62mE32nYvds6HvkCL8U/HrEGkP5XqSj+yoQZnxNZUT6S1r/o OYtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Ao9LMX9z; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p11-v6si9491281plq.192.2018.05.26.10.59.17; Sat, 26 May 2018 10:59:31 -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=@gmail.com header.s=20161025 header.b=Ao9LMX9z; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1032274AbeEZR7E (ORCPT + 99 others); Sat, 26 May 2018 13:59:04 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:51834 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1032112AbeEZR7C (ORCPT ); Sat, 26 May 2018 13:59:02 -0400 Received: by mail-wm0-f67.google.com with SMTP id j4-v6so22055286wme.1; Sat, 26 May 2018 10:59:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=npbrG/NX8XTSGNuU9jq/piZVeix3kXIwRD7YLniYX7c=; b=Ao9LMX9z8pMNSPhzsq8Alu5pcDBsdBnDi8Ud76gbfBFwTgi8p/yOgJDM30fi7e8+GO gB12ARRm2xcMvG+x9jXy6VE+dqgIiQdSmjkDRyZ9iGFobWkSJQ/TSmwQ08X8U1U7eZrb HqgWdlEWfZfCrD5zT+RmzFuCSUToMZTdAZvw7fKLw2SMg5RaDdpmjaxa69vPOetpeer6 Mb48N6MiFM1YZePEXv99j2U1BvTudGDOVKFKZuqH3JdKiVdLZW4+RF5BpJ/2HIsM168J NTSxO4VW/Eiu54I40H0bfyqBetmdFJSDuumRf0E6mv+wynA6h+UqH7inW7y45CDh0mIl uljw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=npbrG/NX8XTSGNuU9jq/piZVeix3kXIwRD7YLniYX7c=; b=SwIn3kUFxub/qh1TjlPm2jB+GzN3zYhFFq8RNFiGvCj7M331BRmp/3fQrniAEu1pHO TfhOh/xFoz5xhnSzcTEwAhi+U5nIK+5fSlQsgGccS37TdXrf1yK74peFjLvKaa/m7OQ+ IqGIyJlpzTWYfRd309DUjwttCFzyShY7vHWmHhwmkkLCMjmZXxe9UfLNNQqKUEcHcFLR 5e78ofZrpTePZz3ReXu20Rj+qDx5Iuk8KXJ1Va5dqq/viZeoVSmkHRNnUAn2/L5iPceb a4QxdW9+2t8rNXIfQBo9s6yBGhfr3efOopwNPczc8x3VFhJiUQM2WU9WNNMSCHDM9JM9 d6Eg== X-Gm-Message-State: ALKqPwccf1l4WrX1dJ2JxagNGpyptwLGgh7YDqFbOrZgu3kGwR1ixhHT Glm5IKrR3SOCZu8srBs1vA== X-Received: by 2002:a1c:a104:: with SMTP id k4-v6mr4677041wme.106.1527357541215; Sat, 26 May 2018 10:59:01 -0700 (PDT) Received: from avx2 (nat4-minsk-pool-46-53-177-92.telecom.by. [46.53.177.92]) by smtp.gmail.com with ESMTPSA id k5-v6sm24523151wrd.13.2018.05.26.10.58.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 May 2018 10:59:00 -0700 (PDT) Date: Sat, 26 May 2018 20:58:58 +0300 From: Alexey Dobriyan To: Salvatore Mesoraca Cc: Kernel Hardening , linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Akinobu Mita , Dmitry Vyukov , Arnd Bergmann , Davidlohr Bueso , Kees Cook Subject: Re: [PATCH] proc: prevent a task from writing on its own /proc/*/mem Message-ID: <20180526175858.GA19115@avx2> References: <1527346246-1334-1-git-send-email-s.mesoraca16@gmail.com> <20180526154819.GA14016@avx2> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, May 26, 2018 at 07:30:47PM +0200, Salvatore Mesoraca wrote: > 2018-05-26 17:48 GMT+02:00 Alexey Dobriyan : > > On Sat, May 26, 2018 at 04:50:46PM +0200, Salvatore Mesoraca wrote: > >> Prevent a task from opening, in "write" mode, any /proc/*/mem > >> file that operates on the task's mm. > >> /proc/*/mem is mainly a debugging means and, as such, it shouldn't > >> be used by the inspected process itself. > >> Current implementation always allow a task to access its own > >> /proc/*/mem file. > >> A process can use it to overwrite read-only memory, making > >> pointless the use of security_file_mprotect() or other ways to > >> enforce RO memory. > > > > You can do it in security_ptrace_access_check() > > No, because that hook is skipped when mm == current->mm: > https://elixir.bootlin.com/linux/v4.17-rc6/source/kernel/fork.c#L1111 OK > > or security_file_open() > > This is true, but it looks a bit overkill to me, especially since many of > the macros/functions used to handle proc's files won't be in scope > for an external LSM. > Is there any particular reason why you prefer it done via LSM? Well, it exists to implement all kinds of non-standard restrictions. You're probably blacklisting mprotect() and worry that compromised program might use /proc/self/mem instead. But you need to blacklist much more that mprotect(). I think forking a dummy "worker" process to open your /proc/*/mem and pass a descriptor back should still work with your patch.