LWN: Comments on "Operations restrictions for io_uring" https://lwn.net/Articles/826053/ This is a special feed containing comments posted to the individual LWN article titled "Operations restrictions for io_uring". en-us Wed, 08 Oct 2025 13:46:29 +0000 Wed, 08 Oct 2025 13:46:29 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Operations restrictions for io_uring https://lwn.net/Articles/826351/ https://lwn.net/Articles/826351/ stefanha <div class="FormattedComment"> This is more like seccomp for io_uring (a single syscall interface that multiplexes many other syscalls). Restrictions are finer-grained than what running a separate process with different credentials achieves.<br> </div> Fri, 17 Jul 2020 08:02:24 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826308/ https://lwn.net/Articles/826308/ rwmj <div class="FormattedComment"> I think the thing I was missing is the guest and the hypervisor, if it&#x27;s like qemu, are in fact the same process so they have the same set of file descriptors. Thanks.<br> </div> Thu, 16 Jul 2020 17:48:29 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826304/ https://lwn.net/Articles/826304/ corbet First of all, just being able to access the other file descriptors the hypervisor has open would be a hole in its own right. The hypervisor surely doesn't want to share all of its open files with the client. <p> Beyond that, io_uring supports operations like <tt>openat2()</tt>, which will again use the credentials of the hypervisor. Thu, 16 Jul 2020 17:22:09 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826303/ https://lwn.net/Articles/826303/ rwmj <i> giving such a ring to a client would open the door to actions like accessing other file descriptors opened by the hypervisor or opening new files with the hypervisor's credentials</i> <p> I'm a bit confused on this point. It seems io_uring operations each include a file descriptor, so surely no matter how the uring was set up they can still only access file descriptors which the process has open (ie. ones passed in, or ones the process is able to open itself). Thu, 16 Jul 2020 17:13:25 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826146/ https://lwn.net/Articles/826146/ clugstj <div class="FormattedComment"> &quot;using the credentials of the process that created the ring&quot;<br> <p> Instead of all this, why not provide a way to transfer ownership of the ring - then all the usual checks would work, right?<br> </div> Wed, 15 Jul 2020 12:34:12 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826145/ https://lwn.net/Articles/826145/ flussence <div class="FormattedComment"> It may be a bit late for the yearly predictions, but I think once sharp edges like these are fixed in io_uring there&#x27;s going to be an inflection point where post-libc languages flock to it en masse. It has the same “shape” as things like the OpenGL fixed-function to shaders transition, and when I think about it that way it&#x27;s weird that it came as late as it did. Linux&#x27;s async story has historically been a bit dire.<br> </div> Wed, 15 Jul 2020 11:39:58 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826142/ https://lwn.net/Articles/826142/ onlyben <div class="FormattedComment"> Thanks cyphar, good to know. I imagine disabling io_uring (whether in a container or not) is not preferable due to its overall utility, however I imagine the patch mentioned in the article will be useful in cases like this and especially so if io_uring trends toward becoming more generic. <br> </div> Wed, 15 Jul 2020 06:36:19 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826140/ https://lwn.net/Articles/826140/ cyphar <p>That link is out-dated and it's written as though the Docker seccomp configuration is a denylist rather than an allowlist -- it's the latter (anything else would be insecure). The correct source to use would be <a href="https://github.com/docker/docker/blob/master/profiles/seccomp/seccomp_default.go">the source code for the default profile</a> -- but it does turn out that they enabled support for io_uring last year and there wasn't much discussion on whether this would cause issues in the future.</p> <p><em>However</em>, io_uring only allows certain syscall-like operations to be done through it and they are all also permitted in the default seccomp profile (in both Docker and LXD) so there really isn't a change in security policy. However as io_uring gains more features we may have to revisit this.</p> Wed, 15 Jul 2020 06:25:17 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826138/ https://lwn.net/Articles/826138/ onlyben <div class="FormattedComment"> Interesting, thanks for the response. <br> <p> I noticed that Docker&#x27;s default seccomp profile (<a href="https://docs.docker.com/engine/security/seccomp/">https://docs.docker.com/engine/security/seccomp/</a>) doesn&#x27;t prevent io_uring inside containers. Looks like most of the syscalls it prevents are already gated by capabilities, but it&#x27;d be interesting to see if you could circumvent anything with io_uring.<br> </div> Wed, 15 Jul 2020 05:12:59 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826137/ https://lwn.net/Articles/826137/ josh <div class="FormattedComment"> Only if the seccomp filters allowed the use of the io_uring syscalls.<br> </div> Wed, 15 Jul 2020 03:38:56 +0000 Operations restrictions for io_uring https://lwn.net/Articles/826135/ https://lwn.net/Articles/826135/ onlyben <div class="FormattedComment"> Interesting that seccomp() filters do not apply in io_uring. Does this mean that a process restricted under seccomp() could potentially execute prohibited system calls via io_uring?<br> </div> Wed, 15 Jul 2020 03:09:26 +0000