From: Daniel Borkmann <daniel@iogearbox•net>
To: Tycho Andersen <tycho.andersen@canonical•com>,
Kees Cook <keescook@chromium•org>,
Alexei Starovoitov <ast@kernel•org>
Cc: "David S. Miller" <davem@davemloft•net>,
Will Drewry <wad@chromium•org>, Oleg Nesterov <oleg@redhat•com>,
Andy Lutomirski <luto@amacapital•net>,
Pavel Emelyanov <xemul@parallels•com>,
"Serge E. Hallyn" <serge.hallyn@ubuntu•com>,
linux-kernel@vger•kernel.org, netdev@vger•kernel.org,
linux-api@vger•kernel.org
Subject: Re: [PATCH v2 4/5] seccomp: add a way to access filters via bpf fds
Date: Fri, 11 Sep 2015 13:47:38 +0200 [thread overview]
Message-ID: <55F2BF5A.8010006@iogearbox.net> (raw)
In-Reply-To: <1441930862-14347-5-git-send-email-tycho.andersen@canonical.com>
On 09/11/2015 02:21 AM, Tycho Andersen wrote:
> This patch adds a way for a process that is "real root" to access the
> seccomp filters of another process. The process first does a
> PTRACE_SECCOMP_GET_FILTER_FD to get an fd with that process' seccomp filter
> attached, and then iterates on this with PTRACE_SECCOMP_NEXT_FILTER using
> bpf(BPF_PROG_DUMP) to dump the actual program at each step.
>
> Signed-off-by: Tycho Andersen <tycho.andersen@canonical•com>
> CC: Kees Cook <keescook@chromium•org>
> CC: Will Drewry <wad@chromium•org>
> CC: Oleg Nesterov <oleg@redhat•com>
> CC: Andy Lutomirski <luto@amacapital•net>
> CC: Pavel Emelyanov <xemul@parallels•com>
> CC: Serge E. Hallyn <serge.hallyn@ubuntu•com>
> CC: Alexei Starovoitov <ast@kernel•org>
> CC: Daniel Borkmann <daniel@iogearbox•net>
[...]
> diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
> index 58ae9f4..ac3ed1c 100644
> --- a/kernel/bpf/syscall.c
> +++ b/kernel/bpf/syscall.c
> @@ -506,6 +506,30 @@ struct bpf_prog *bpf_prog_get(u32 ufd)
> }
> EXPORT_SYMBOL_GPL(bpf_prog_get);
>
> +int bpf_prog_set(u32 ufd, struct bpf_prog *new)
> +{
> + struct fd f;
> + struct bpf_prog *prog;
> +
> + f = fdget(ufd);
> +
> + prog = get_prog(f);
> + if (!IS_ERR(prog) && prog)
> + bpf_prog_put(prog);
> +
> + atomic_inc(&new->aux->refcnt);
> + f.file->private_data = new;
> + fdput(f);
> + return 0;
So in case get_prog() fails, and for example f.file is infact NULL,
you assign the bpf prog then to ERR_PTR(-EBADF)'s private_data? :(
> +}
> +EXPORT_SYMBOL_GPL(bpf_prog_set);
> +
> +int bpf_new_fd(struct bpf_prog *prog, int flags)
> +{
> + return anon_inode_getfd("bpf-prog", &bpf_prog_fops, prog, flags);
> +}
> +EXPORT_SYMBOL_GPL(bpf_new_fd);
Any reason why these two need to be exported for modules? Which
modules are using them?
I think modules should probably not mess with this.
If you already name it generic, it would also be good if bpf_new_fd()
is used in case of maps that call anon_inode_getfd(), too.
next prev parent reply other threads:[~2015-09-11 11:47 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-11 0:20 v2 of seccomp filter c/r patches Tycho Andersen
2015-09-11 0:20 ` [PATCH v2 2/5] seccomp: make underlying bpf ref counted as well Tycho Andersen
[not found] ` <1441930862-14347-3-git-send-email-tycho.andersen-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2015-09-11 13:02 ` Daniel Borkmann
[not found] ` <55F2D0EC.9090004-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2015-09-11 14:44 ` Tycho Andersen
2015-09-11 16:03 ` Daniel Borkmann
[not found] ` <55F2FB6F.7050708-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2015-09-11 17:33 ` Tycho Andersen
2015-09-11 18:28 ` Daniel Borkmann
2015-09-14 16:00 ` Tycho Andersen
2015-09-14 16:48 ` Daniel Borkmann
[not found] ` <55F6FA6B.1060108-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2015-09-14 17:30 ` Tycho Andersen
[not found] ` <1441930862-14347-1-git-send-email-tycho.andersen-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2015-09-11 0:20 ` [PATCH v2 1/5] ebpf: add a seccomp program type Tycho Andersen
2015-09-11 12:09 ` Michael Kerrisk (man-pages)
2015-09-11 0:21 ` [PATCH v2 3/5] ebpf: add a way to dump an eBPF program Tycho Andersen
2015-09-11 12:11 ` Michael Kerrisk (man-pages)
[not found] ` <1441930862-14347-4-git-send-email-tycho.andersen-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2015-09-11 2:29 ` Alexei Starovoitov
[not found] ` <20150911022940.GA4903-2RGepAHry06MXrjNfwE7T/6muRTtt8+awzqs5ZKRSiY@public.gmane.org>
2015-09-11 14:59 ` Tycho Andersen
2015-09-11 13:39 ` Daniel Borkmann
2015-09-11 14:44 ` Tycho Andersen
2015-09-11 0:21 ` [PATCH v2 5/5] seccomp: add a way to attach a filter via eBPF fd Tycho Andersen
2015-09-11 12:10 ` Michael Kerrisk (man-pages)
2015-09-11 12:37 ` Daniel Borkmann
[not found] ` <55F2CB27.7030804-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2015-09-11 14:40 ` Tycho Andersen
2015-09-11 2:50 ` v2 of seccomp filter c/r patches Alexei Starovoitov
2015-09-11 16:30 ` Andy Lutomirski
[not found] ` <CALCETrVYtv1=g-xPjQ-LiX+5GK3xtB6a2hYbat0TuU-Bd4QA6Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-11 17:00 ` Andy Lutomirski
[not found] ` <CALCETrWxLMSgdsdT9gTL80LSovONmCcTYjzqrHqF-WdJ4BN1Uw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-11 17:28 ` Tycho Andersen
2015-09-14 17:52 ` Andy Lutomirski
2015-09-15 16:07 ` Tycho Andersen
2015-09-15 18:13 ` Andy Lutomirski
[not found] ` <CALCETrVxhNvmEdMq0XRy1YZ+oJLDwcmE1y6prs7FGGhsS-Y5gg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-15 18:26 ` Tycho Andersen
2015-09-15 20:01 ` Andy Lutomirski
2015-09-15 21:38 ` Tycho Andersen
2015-09-11 0:21 ` [PATCH v2 4/5] seccomp: add a way to access filters via bpf fds Tycho Andersen
2015-09-11 11:47 ` Daniel Borkmann [this message]
[not found] ` <55F2BF5A.8010006-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2015-09-11 14:29 ` Tycho Andersen
[not found] ` <1441930862-14347-5-git-send-email-tycho.andersen-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2015-09-11 12:08 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAki99ZFgLPE5mWWjj1nvdNyke1w0ttqmiG+Uk0rVfqutZw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-11 14:31 ` Tycho Andersen
2015-09-11 16:20 ` Andy Lutomirski
2015-09-11 16:44 ` Tycho Andersen
2015-09-14 17:52 ` Andy Lutomirski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55F2BF5A.8010006@iogearbox.net \
--to=daniel@iogearbox$(echo .)net \
--cc=ast@kernel$(echo .)org \
--cc=davem@davemloft$(echo .)net \
--cc=keescook@chromium$(echo .)org \
--cc=linux-api@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=luto@amacapital$(echo .)net \
--cc=netdev@vger$(echo .)kernel.org \
--cc=oleg@redhat$(echo .)com \
--cc=serge.hallyn@ubuntu$(echo .)com \
--cc=tycho.andersen@canonical$(echo .)com \
--cc=wad@chromium$(echo .)org \
--cc=xemul@parallels$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox