All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Dickson <SteveD@redhat.com>
To: Chuck Lever <chuck.lever@oracle.com>,
	Linux NFS Mailing list <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH] rpc.statd: Bind downcall socket to loopback address
Date: Wed, 03 Aug 2011 13:44:53 -0400	[thread overview]
Message-ID: <4E398915.6070603@RedHat.com> (raw)
In-Reply-To: <20110801201129.3503.99913.stgit@seurat.1015granger.net>



On 08/01/2011 04:13 PM, Chuck Lever wrote:
> In the past, rpc.statd posted SM_NOTIFY requests using the same socket
> it used for sending downcalls to the kernel.  To receive replies from
> remote hosts, the socket was bound to INADDR_ANY.
> 
> With commit f113db52 "Remove notify functionality from statd in
> favour of sm-notify" (Mar 20, 2007), the downcall socket is no longer
> used for sending requests to remote hosts.  However, the downcall
> socket is still bound to INADDR_ANY.
> 
> Thus a remote host can inject data on this socket since it is an
> unconnected UDP socket listening for RPC replies.  Thanks to f113db52,
> the port number of this socket is no longer controlled by a command
> line option, making it difficult to firewall.
> 
> We have demonstrated that data injection on this socket can result in
> a DoS by causing rpc.statd to consume CPU and log bandwidth, but so
> far we have not found a breach.
> 
> To prevent unwanted data injection, bind this socket to the loopback
> address.
> 
> BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=177
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Committed..

steved.

> ---
> 
> Confirmed that reboot recovery still works, and that data injection
> is no longer possible.  This is an updated and final version of this
> patch.
> 
>  utils/statd/rmtcall.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/utils/statd/rmtcall.c b/utils/statd/rmtcall.c
> index 0e52fe2..4ecb03c 100644
> --- a/utils/statd/rmtcall.c
> +++ b/utils/statd/rmtcall.c
> @@ -85,7 +85,7 @@ statd_get_socket(void)
>  
>  		memset(&sin, 0, sizeof(sin));
>  		sin.sin_family = AF_INET;
> -		sin.sin_addr.s_addr = INADDR_ANY;
> +		sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
>  
>  		if (bindresvport(sockfd, &sin) < 0) {
>  			xlog(D_GENERAL, "%s: can't bind to reserved port",
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2011-08-03 17:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-01 20:13 [PATCH] rpc.statd: Bind downcall socket to loopback address Chuck Lever
2011-08-03 17:44 ` Steve Dickson [this message]
2011-08-03 21:18   ` Chuck Lever
2011-08-03 22:54     ` Steve Dickson
  -- strict thread matches above, loose matches on Subject: below --
2011-07-30 22:43 Chuck Lever
     [not found] ` <20110730224034.30227.2179.stgit-x+BlCsqV7M/wdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2011-08-03 16:58   ` Steve Dickson
     [not found]     ` <4E397E2C.1040001-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2011-08-03 17:18       ` Steve Dickson

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=4E398915.6070603@RedHat.com \
    --to=steved@redhat.com \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    /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.