[{"id":1765341,"web_url":"http://patchwork.ozlabs.org/comment/1765341/","msgid":"<5d183826-dc0c-6d52-9ba5-3c8598f38cdf@redhat.com>","list_archive_url":null,"date":"2017-09-08T13:13:56","subject":"Re: [Qemu-devel] [PATCHv6 4/5] seccomp: add spawn argument to\n\tcommand line","submitter":{"id":66152,"url":"http://patchwork.ozlabs.org/api/people/66152/","name":"Thomas Huth","email":"thuth@redhat.com"},"content":"On 08.09.2017 13:44, Eduardo Otubo wrote:\n> This patch adds [,spawn=deny] argument to `-sandbox on' option. It\n> blacklists fork and execve system calls, avoiding Qemu to spawn new\n> threads or processes.\n> \n> Signed-off-by: Eduardo Otubo <otubo@redhat.com>\n> ---\n>  include/sysemu/seccomp.h |  1 +\n>  qemu-options.hx          |  9 +++++++--\n>  qemu-seccomp.c           |  4 ++++\n>  vl.c                     | 16 ++++++++++++++++\n>  4 files changed, 28 insertions(+), 2 deletions(-)\n> \n> diff --git a/include/sysemu/seccomp.h b/include/sysemu/seccomp.h\n> index 4a9e63c7cd..3ab5fc4f61 100644\n> --- a/include/sysemu/seccomp.h\n> +++ b/include/sysemu/seccomp.h\n> @@ -18,6 +18,7 @@\n>  #define QEMU_SECCOMP_SET_DEFAULT     (1 << 0)\n>  #define QEMU_SECCOMP_SET_OBSOLETE    (1 << 1)\n>  #define QEMU_SECCOMP_SET_PRIVILEGED  (1 << 2)\n> +#define QEMU_SECCOMP_SET_SPAWN       (1 << 3)\n>  \n>  #include <seccomp.h>\n>  \n> diff --git a/qemu-options.hx b/qemu-options.hx\n> index 5c1b163fb5..2b04b9f170 100644\n> --- a/qemu-options.hx\n> +++ b/qemu-options.hx\n> @@ -4018,6 +4018,7 @@ ETEXI\n>  \n>  DEF(\"sandbox\", HAS_ARG, QEMU_OPTION_sandbox, \\\n>      \"-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]\\n\" \\\n> +    \"          [,spawn=allow|deny]\\n\" \\\n>      \"                Enable seccomp mode 2 system call filter (default 'off').\\n\" \\\n>      \"                use 'obsolete' to allow obsolete system calls that are provided\\n\" \\\n>      \"                    by the kernel, but typically no longer used by modern\\n\" \\\n> @@ -4025,10 +4026,12 @@ DEF(\"sandbox\", HAS_ARG, QEMU_OPTION_sandbox, \\\n>      \"                use 'elevateprivileges' to allow or deny QEMU process to elevate\\n\" \\\n>      \"                    its privileges by blacklisting all set*uid|gid system calls.\\n\" \\\n>      \"                    The value 'children' will deny set*uid|gid system calls for\\n\" \\\n> -    \"                    main QEMU process but will allow forks and execves to run unprivileged\\n\",\n> +    \"                    main QEMU process but will allow forks and execves to run unprivileged\\n\" \\\n> +    \"                use 'spawn' to avoid QEMU to spawn new threads or processes by\\n\" \\\n> +    \"                     blacklisting *fork and execve\\n\",\n>      QEMU_ARCH_ALL)\n>  STEXI\n> -@item -sandbox @var{arg}[,obsolete=@var{string}][,elevateprivileges=@var{string}]\n> +@item -sandbox @var{arg}[,obsolete=@var{string}][,elevateprivileges=@var{string}][,spawn=@var{string}]\n>  @findex -sandbox\n>  Enable Seccomp mode 2 system call filter. 'on' will enable syscall filtering and 'off' will\n>  disable it.  The default is 'off'.\n> @@ -4037,6 +4040,8 @@ disable it.  The default is 'off'.\n>  Enable Obsolete system calls\n>  @item elevateprivileges=@var{string}\n>  Disable set*uid|gid system calls\n> +@item spawn=@var{string}\n> +Disable *fork and execve\n>  @end table\n>  ETEXI\n>  \n> diff --git a/qemu-seccomp.c b/qemu-seccomp.c\n> index 978d66bd28..f3878a5e29 100644\n> --- a/qemu-seccomp.c\n> +++ b/qemu-seccomp.c\n> @@ -78,6 +78,10 @@ static const struct QemuSeccompSyscall blacklist[] = {\n>      { SCMP_SYS(setresgid),              QEMU_SECCOMP_SET_PRIVILEGED },\n>      { SCMP_SYS(setfsuid),               QEMU_SECCOMP_SET_PRIVILEGED },\n>      { SCMP_SYS(setfsgid),               QEMU_SECCOMP_SET_PRIVILEGED },\n> +    /* spawn */\n> +    { SCMP_SYS(fork),                   QEMU_SECCOMP_SET_SPAWN },\n> +    { SCMP_SYS(vfork),                  QEMU_SECCOMP_SET_SPAWN },\n> +    { SCMP_SYS(execve),                 QEMU_SECCOMP_SET_SPAWN },\n>  };\n>  \n>  \n> diff --git a/vl.c b/vl.c\n> index ff3b5c766a..369e3411b1 100644\n> --- a/vl.c\n> +++ b/vl.c\n> @@ -280,6 +280,10 @@ static QemuOptsList qemu_sandbox_opts = {\n>              .name = \"elevateprivileges\",\n>              .type = QEMU_OPT_STRING,\n>          },\n> +        {\n> +            .name = \"spawn\",\n> +            .type = QEMU_OPT_STRING,\n> +        },\n>          { /* end of list */ }\n>      },\n>  };\n> @@ -1082,6 +1086,18 @@ static int parse_sandbox(void *opaque, QemuOpts *opts, Error **errp)\n>              }\n>          }\n>  \n> +        value = qemu_opt_get(opts, \"spawn\");\n> +        if (value) {\n> +            if (g_str_equal(value, \"deny\")) {\n> +                seccomp_opts |= QEMU_SECCOMP_SET_SPAWN;\n> +            } else if (g_str_equal(value, \"allow\")) {\n> +                /* default value */\n> +            } else {\n> +                error_report(\"invalid argument for spawn\");\n> +                return -1;\n> +            }\n> +        }\n> +\n>          if (seccomp_start(seccomp_opts) < 0) {\n>              error_report(\"failed to install seccomp syscall filter \"\n>                           \"in the kernel\");\n\nReviewed-by: Thomas Huth <thuth@redhat.com>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=thuth@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xpd8J41yyz9ryk\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  8 Sep 2017 23:14:40 +1000 (AEST)","from localhost ([::1]:45416 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dqJ7G-0007up-Mt\n\tfor incoming@patchwork.ozlabs.org; Fri, 08 Sep 2017 09:14:38 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:58210)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <thuth@redhat.com>) id 1dqJ6n-0007qr-FH\n\tfor qemu-devel@nongnu.org; Fri, 08 Sep 2017 09:14:10 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <thuth@redhat.com>) id 1dqJ6h-0008LH-Ah\n\tfor qemu-devel@nongnu.org; Fri, 08 Sep 2017 09:14:09 -0400","from mx1.redhat.com ([209.132.183.28]:35558)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <thuth@redhat.com>) id 1dqJ6h-0008Jc-18\n\tfor qemu-devel@nongnu.org; Fri, 08 Sep 2017 09:14:03 -0400","from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 2C4914A703\n\tfor <qemu-devel@nongnu.org>; Fri,  8 Sep 2017 13:14:02 +0000 (UTC)","from [10.36.116.21] (ovpn-116-21.ams2.redhat.com [10.36.116.21])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 7E5BE619C0;\n\tFri,  8 Sep 2017 13:13:58 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 2C4914A703","To":"Eduardo Otubo <otubo@redhat.com>, qemu-devel@nongnu.org","References":"<20170908114407.25906-1-otubo@redhat.com>\n\t<20170908114407.25906-5-otubo@redhat.com>","From":"Thomas Huth <thuth@redhat.com>","Message-ID":"<5d183826-dc0c-6d52-9ba5-3c8598f38cdf@redhat.com>","Date":"Fri, 8 Sep 2017 15:13:56 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170908114407.25906-5-otubo@redhat.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.12","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.38]);\n\tFri, 08 Sep 2017 13:14:02 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCHv6 4/5] seccomp: add spawn argument to\n\tcommand line","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1768695,"web_url":"http://patchwork.ozlabs.org/comment/1768695/","msgid":"<20170914155137.GF11763@redhat.com>","list_archive_url":null,"date":"2017-09-14T15:51:37","subject":"Re: [Qemu-devel] [PATCHv6 4/5] seccomp: add spawn argument to\n\tcommand line","submitter":{"id":2694,"url":"http://patchwork.ozlabs.org/api/people/2694/","name":"Daniel P. Berrangé","email":"berrange@redhat.com"},"content":"On Fri, Sep 08, 2017 at 01:44:06PM +0200, Eduardo Otubo wrote:\n> This patch adds [,spawn=deny] argument to `-sandbox on' option. It\n> blacklists fork and execve system calls, avoiding Qemu to spawn new\n> threads or processes.\n> \n> Signed-off-by: Eduardo Otubo <otubo@redhat.com>\n> ---\n>  include/sysemu/seccomp.h |  1 +\n>  qemu-options.hx          |  9 +++++++--\n>  qemu-seccomp.c           |  4 ++++\n>  vl.c                     | 16 ++++++++++++++++\n>  4 files changed, 28 insertions(+), 2 deletions(-)\n\nReviewed-by: Daniel P. Berrange <berrange@redhat.com>\n\n\nRegards,\nDaniel","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx02.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx02.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=berrange@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xtNMh5xW4z9s9Y\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 15 Sep 2017 01:52:32 +1000 (AEST)","from localhost ([::1]:48562 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dsWRK-0006fG-UZ\n\tfor incoming@patchwork.ozlabs.org; Thu, 14 Sep 2017 11:52:30 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:59617)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <berrange@redhat.com>) id 1dsWQg-0006aG-DN\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 11:51:51 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <berrange@redhat.com>) id 1dsWQc-0003Aj-HL\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 11:51:50 -0400","from mx1.redhat.com ([209.132.183.28]:42438)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <berrange@redhat.com>) id 1dsWQc-00039G-Aq\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 11:51:46 -0400","from smtp.corp.redhat.com\n\t(int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 52EC7883AC\n\tfor <qemu-devel@nongnu.org>; Thu, 14 Sep 2017 15:51:45 +0000 (UTC)","from redhat.com (ovpn-116-81.ams2.redhat.com [10.36.116.81])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 0D51517F20;\n\tThu, 14 Sep 2017 15:51:40 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 52EC7883AC","Date":"Thu, 14 Sep 2017 16:51:37 +0100","From":"\"Daniel P. Berrange\" <berrange@redhat.com>","To":"Eduardo Otubo <otubo@redhat.com>","Message-ID":"<20170914155137.GF11763@redhat.com>","References":"<20170908114407.25906-1-otubo@redhat.com>\n\t<20170908114407.25906-5-otubo@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20170908114407.25906-5-otubo@redhat.com>","User-Agent":"Mutt/1.8.3 (2017-05-23)","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.13","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.26]);\n\tThu, 14 Sep 2017 15:51:45 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCHv6 4/5] seccomp: add spawn argument to\n\tcommand line","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Reply-To":"\"Daniel P. Berrange\" <berrange@redhat.com>","Cc":"thuth@redhat.com, qemu-devel@nongnu.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]