From: Pavel Emelyanov <xemul@openvz.org>
To: Thomas Graf <tgraf@suug.ch>, David Woodhouse <dwmw2@infradead.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux Netdev List <netdev@vger.kernel.org>
Subject: Re: Audit vs netlink interaction problem
Date: Mon, 17 Mar 2008 11:01:14 +0300 [thread overview]
Message-ID: <47DE254A.5070608@openvz.org> (raw)
In-Reply-To: <20080314184052.GR20815@postel.suug.ch>
Thomas Graf wrote:
> * Thomas Graf <tgraf@suug.ch> 2008-03-14 19:29
>> * Pavel Emelyanov <xemul@openvz.org> 2008-03-14 20:05
>>> Hmmm... I'm afraid, that this can break the audit filtering and signal
>>> auditing. I haven't yet looked deep into it, but it compares the
>>> task->tgid with this audit_pid for different purposes. If audit_pid
>>> changes this code will be broken.
>> OK, then both pids have to be stored. audit_pid remains as-is but is
>> no longer used as destination netlink pid. A second pid is stored and
>> updated whenever a netlink message is received from userspace.
>
> The following patch represents what I mean. Untested!
Looks great, all the more so I created very similar patch.
David, can we have this in mainline some day?
Thanks,
Pavel
> Index: net-2.6.26/kernel/audit.c
> ===================================================================
> --- net-2.6.26.orig/kernel/audit.c 2008-03-14 19:31:53.000000000 +0100
> +++ net-2.6.26/kernel/audit.c 2008-03-14 19:38:35.000000000 +0100
> @@ -82,6 +82,9 @@
> * contains the (non-zero) pid. */
> int audit_pid;
>
> +/* Actual netlink pid of the userspace process */
> +static int audit_nlk_pid;
> +
> /* If audit_rate_limit is non-zero, limit the rate of sending audit records
> * to that number per second. This prevents DoS attacks, but results in
> * audit records being dropped. */
> @@ -347,12 +350,12 @@
> skb = skb_dequeue(&audit_skb_queue);
> wake_up(&audit_backlog_wait);
> if (skb) {
> - if (audit_pid) {
> - int err = netlink_unicast(audit_sock, skb, audit_pid, 0);
> + if (audit_nlk_pid) {
> + int err = netlink_unicast(audit_sock, skb, audit_nlk_pid, 0);
> if (err < 0) {
> BUG_ON(err != -ECONNREFUSED); /* Shoudn't happen */
> - printk(KERN_ERR "audit: *NO* daemon at audit_pid=%d\n", audit_pid);
> - audit_pid = 0;
> + printk(KERN_ERR "audit: *NO* daemon at audit_nlk_pid=%d\n", audit_nlk_pid);
> + audit_nlk_pid = 0;
> }
> } else {
> if (printk_ratelimit())
> @@ -623,6 +626,12 @@
> sid, 1);
>
> audit_pid = new_pid;
> +
> + /*
> + * Netlink pid is only updated here to avoid overwrites
> + * from potential processes only querying the interface.
> + */
> + audit_nlk_pid = NETLINK_CB(skb).pid;
> }
> if (status_get->mask & AUDIT_STATUS_RATE_LIMIT)
> err = audit_set_rate_limit(status_get->rate_limit,
> @@ -1350,7 +1359,7 @@
> if (!audit_rate_check()) {
> audit_log_lost("rate limit exceeded");
> } else {
> - if (audit_pid) {
> + if (audit_nlk_pid) {
> struct nlmsghdr *nlh = nlmsg_hdr(ab->skb);
> nlh->nlmsg_len = ab->skb->len - NLMSG_SPACE(0);
> skb_queue_tail(&audit_skb_queue, ab->skb);
>
next prev parent reply other threads:[~2008-03-17 8:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-14 16:22 Audit vs netlink interaction problem Pavel Emelyanov
2008-03-14 16:39 ` Thomas Graf
2008-03-14 17:05 ` Pavel Emelyanov
2008-03-14 18:29 ` Thomas Graf
2008-03-14 18:40 ` Thomas Graf
2008-03-17 8:01 ` Pavel Emelyanov [this message]
2008-03-17 19:41 ` Eric Paris
2008-03-17 7:59 ` Pavel Emelyanov
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=47DE254A.5070608@openvz.org \
--to=xemul@openvz.org \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=tgraf@suug.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.