Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1600219imu; Wed, 12 Dec 2018 00:35:34 -0800 (PST) X-Google-Smtp-Source: AFSGD/V1nbp/K9GbCH/RBPx6lGOmAtXkqc/hsX1sNiGFsOa00Qb2HJBYahYzwfTS0KGDklPCXUa/ X-Received: by 2002:a62:de06:: with SMTP id h6mr20009281pfg.158.1544603734747; Wed, 12 Dec 2018 00:35:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544603734; cv=none; d=google.com; s=arc-20160816; b=l7WilLFr1WYYe/gjZMU8IuJDGJieiJRF9cX9vR9qcF20WZlyObN12Rpb4/Y48UI4PN goPCjGwkdPeE8dxS4Tlyw/v/h17uzZBeEJ8aL4rYA1osdKy6SiiyeA4UePNJo5XKT8xr qpT5efnyLAgTQwxffnLNOx2jausCMXxuvB25JV5Bhmx9d+W5ZZJdxgXlbJkmJESsnwv0 Vs3mVJZpzxBiH3+1va7jH534dO6T0dkMr8tkQrKaLkAhfNljin618HVmCzduGgO7ciXM yemSAOvCkZqA2xkg7epp7ou556n51lZT8voA+T7HNuSx2erWRiBlJ3L/clvX6xdJ8bCO niAQ== 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 :message-id:date:subject:cc:to:from; bh=3NSzFs5OZ9MY8humRP+IY+gXmIqRVJelmxvmvvthGrM=; b=Ok7XrIwzW2cDQ2PwDMxX61bYnKiEeQN9PhAzO0rKD7AMCXX9f6uzLlttDP1TCaBZLo 9GhuXU96JJepv+jkdps1QnwCPGbaJ7skTH6BBwp7Yiy4Tn0l3vS4yeZD03TytLPyRQ4C cSsnalbRkkNrqbS3K3T1PL3oUWcdxGkR6JI6hdVwhhU0Udo8eY0/mqPnarEh9DMtgUet MXB1PQAkfJOyoV0uNznpXpQRGswnrtkzYvuum2E5xBjBx15pWUHnHJrGLPO3BGSw0n60 n/o/pykkHx5vJX9FlpVMs9kLfF6qQ4BhjYUkrKAazcQJYu1FJmjb47mDJXqQMb8o21O3 8Dbw== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b5si14639007ple.387.2018.12.12.00.35.19; Wed, 12 Dec 2018 00:35:34 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726830AbeLLId7 (ORCPT + 99 others); Wed, 12 Dec 2018 03:33:59 -0500 Received: from smtp-sh2.infomaniak.ch ([128.65.195.6]:48195 "EHLO smtp-sh2.infomaniak.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726242AbeLLId6 (ORCPT ); Wed, 12 Dec 2018 03:33:58 -0500 Received: from smtp5.infomaniak.ch (smtp5.infomaniak.ch [83.166.132.18]) by smtp-sh.infomaniak.ch (8.14.5/8.14.5) with ESMTP id wBC8Hch1022149 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Dec 2018 09:17:38 +0100 Received: from localhost (ns3096276.ip-94-23-54.eu [94.23.54.103]) (authenticated bits=0) by smtp5.infomaniak.ch (8.14.5/8.14.5) with ESMTP id wBC8Hal6056080; Wed, 12 Dec 2018 09:17:36 +0100 From: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= To: linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= , Al Viro , James Morris , Jonathan Corbet , Kees Cook , Matthew Garrett , Michael Kerrisk , =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= , Mimi Zohar , =?UTF-8?q?Philippe=20Tr=C3=A9buchet?= , Shuah Khan , 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: [RFC PATCH v1 0/5] Add support for O_MAYEXEC Date: Wed, 12 Dec 2018 09:17:07 +0100 Message-Id: <20181212081712.32347-1-mic@digikod.net> X-Mailer: git-send-email 2.20.0.rc2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Antivirus: Dr.Web (R) for Unix mail servers drweb plugin ver.6.0.2.8 X-Antivirus-Code: 0x100000 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, The goal of this patch series is to control script interpretation. A new O_MAYEXEC flag used by sys_open() is added to enable userland script interpreter to delegate to the kernel (and thus the system security policy) the permission to interpret scripts or other files containing what can be seen as commands. The security policy is the responsibility of an LSM. A basic system-wide policy is implemented with Yama and configurable through a sysctl. The initial idea come from CLIP OS and the original implementation has been used for more than 10 years: https://github.com/clipos-archive/clipos4_doc An introduction to O_MAYEXEC was given at the Linux Security Summit Europe 2018 - Linux Kernel Security Contributions by ANSSI: https://www.youtube.com/watch?v=chNjCRtPKQY&t=17m15s The "write xor execute" principle was explained at Kernel Recipes 2018 - CLIP OS: a defense-in-depth OS: https://www.youtube.com/watch?v=PjRE0uBtkHU&t=11m14s This patch series can be applied on top of v4.20-rc6. This can be tested with CONFIG_SECURITY_YAMA. I would really appreciate constructive comments on this RFC. Regards, Mickaël Salaün (5): fs: Add support for an O_MAYEXEC flag on sys_open() fs: Add a MAY_EXECMOUNT flag to infer the noexec mount propertie Yama: Enforces noexec mounts or file executability through O_MAYEXEC selftest/yama: Add tests for O_MAYEXEC enforcing doc: Add documentation for Yama's open_mayexec_enforce Documentation/admin-guide/LSM/Yama.rst | 41 +++ MAINTAINERS | 1 + fs/fcntl.c | 2 +- fs/namei.c | 2 + fs/open.c | 4 + include/linux/fcntl.h | 2 +- include/linux/fs.h | 4 + include/uapi/asm-generic/fcntl.h | 3 + security/yama/Kconfig | 3 +- security/yama/yama_lsm.c | 82 +++++- tools/testing/selftests/Makefile | 1 + tools/testing/selftests/yama/.gitignore | 1 + tools/testing/selftests/yama/Makefile | 19 ++ tools/testing/selftests/yama/config | 2 + tools/testing/selftests/yama/test_omayexec.c | 276 +++++++++++++++++++ 15 files changed, 439 insertions(+), 4 deletions(-) create mode 100644 tools/testing/selftests/yama/.gitignore create mode 100644 tools/testing/selftests/yama/Makefile create mode 100644 tools/testing/selftests/yama/config create mode 100644 tools/testing/selftests/yama/test_omayexec.c -- 2.20.0.rc2