|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: xenstored file descriptor leak
On 03.02.21 08:57, Manuel Bouyer wrote: On Wed, Feb 03, 2021 at 07:18:51AM +0100, Jürgen Groß wrote:On 02.02.21 19:37, Manuel Bouyer wrote:Hello, on NetBSD I'm tracking down an issue where xenstored never closes its file descriptor to /var/run/xenstored/socket and instead loops at 100% CPU on these descriptors. xenstored loops because poll(2) returns a POLLIN event for these descriptors but they are marked is_ignored = true. I'm seeing this with xen 4.15, 4.13 and has also been reported with 4.11 with latest security patches. It seems to have started with patches for XSA-115 (A user reported this for 4.11) I've tracked it down to a difference in poll(2) implementation; it seems that linux will return something that is not (POLLIN|POLLOUT) when a socket if closed; while NetBSD returns POLLIN (this matches the NetBSD's man page).Yeah, Linux seems to return POLLHUP additionally.Overall, it seems that the poll(2) behavior with non-regular files is highly OS-dependant when it comes to border cases (like a remote close of a socket)First I think there may be a security issue here, as, even on linux it should be possible for a client to cause a socket to go to the is_ignored state, while still sending data and cause xenstored to go to a 100% CPU loop.No security issue, as sockets are restricted to dom0 and user root. In case you are suspecting a security issue, please don't send such mails to xen-devel in future, but to security@xxxxxxxxxxxxxxxxxxxx.Yes, sorry. Will do next time. Adding the fd of an ignored socket connection to the list is the real problem here. Why should that be done?
Every connection to another domain. Is there a way to know if a connection is socket or non-socket ? Active socket connections have conn->fd >= 0. Juergen Attachment:
OpenPGP_0xB0DE9DD628BF132F.asc Attachment:
OpenPGP_signature
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |