[Libguestfs] [PATCH nbdkit 4/4] reflection: Enhance plugin to support client address mode.
Eric Blake
eblake at redhat.com
Mon Sep 16 16:01:49 UTC 2019
On 9/15/19 9:55 AM, Richard W.M. Jones wrote:
> ---
Short commit message; at a minimum, I'd probably at least mention that
we thought about potential security issues, and didn't see how it could
be abused.
> .../reflection/nbdkit-reflection-plugin.pod | 23 ++++-
> plugins/reflection/reflection.c | 88 +++++++++++++++++++
> tests/Makefile.am | 2 +
> tests/test-reflection-address.sh | 63 +++++++++++++
> 4 files changed, 174 insertions(+), 2 deletions(-)
>
> diff --git a/plugins/reflection/nbdkit-reflection-plugin.pod b/plugins/reflection/nbdkit-reflection-plugin.pod
> index 1b260b6..7f52c58 100644
> --- a/plugins/reflection/nbdkit-reflection-plugin.pod
> +++ b/plugins/reflection/nbdkit-reflection-plugin.pod
> @@ -1,10 +1,10 @@
> =head1 NAME
>
> -nbdkit-reflection-plugin - reflect export name back to the client
> +nbdkit-reflection-plugin - reflect client info back to the client
Could perhaps squash this hunk into patch 1, but it's also fine here.
> +Another use for the reflection plugin is to send back the client's IP
> +address:
> +
> + $ nbdkit reflection mode=address
> + $ nbdsh -u 'nbd://localhost' -c 'print(h.pread(h.get_size(), 0))'
> +
> +which will print something like:
> +
> + b'[::1]:58912'
Do we want a mode that attempts to do DNS lookup to convert an address
back to a name, so that this could result in b'localhost:58912'?
> +
> + case AF_UNIX:
> + /* We don't want to expose the socket path because it's a host
> + * filesystem name. The client might not really be running on the
> + * same machine (eg. it using a proxy). However it doesn't even
missing 'is'
> +++ b/tests/test-reflection-address.sh
> @@ -0,0 +1,63 @@
> +# Test the relection plugin with mode=address.
reflection (hmm, I missed that typo in patch 1, where this was copied from)
> +# Run nbdkit.
> +start_nbdkit -P reflection-address.pid -U $sock \
> + reflection mode=address
Is it worth also trying to test a TCP socket (although we have to worry
about finding a free port for the server, as well as heavily filtering
the result as it might be [::1] or 127.0.0.1, and most certainly will
have a different client port number per test run.
But overall, I think this is a useful thing to add to the plugin, and
I'm not seeing any security holes in letting the client know the
client's IP address as seen by the server.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190916/9495790c/attachment.sig>
More information about the Libguestfs
mailing list