[apparmor] AppArmor io_uring: uring_sqpoll implemented but uring_cmd is missing
John Johansen
john.johansen at canonical.com
Mon Mar 16 07:12:31 UTC 2026
On 3/15/26 22:48, Sang-Hoon Choi wrote:
> Hi John,
>
> I noticed that AppArmor implements two of the three io_uring LSM
> hooks but not the third:
>
> security_uring_sqpoll -> apparmor_uring_sqpoll (implemented)
> security_uring_override_creds -> apparmor_uring_override_creds
> (implemented)
> security_uring_cmd -> (not implemented)
>
> SELinux implements all three, including uring_cmd (selinux_uring_cmd,
> added August 2022).
>
correct
> The missing uring_cmd hook means that URING_CMD operations (used by
> ublk, NVMe passthrough, and the upcoming fuse-io-uring) are not
> mediated by AppArmor. On Ubuntu/Debian systems, these operations go
> through with no LSM check at all.
>
sadly yes
> I ran into this while testing ublk in container environments. A
> privileged container can create block devices via URING_CMD on
> /dev/ublk-control, and AppArmor profiles that restrict device access
> do not cover URING_CMD operations on already-open file descriptors.
>
correct
> For context, I previously discussed the SQPOLL credential caching
> behavior with Jens Axboe, who confirmed it is by design and pointed
> to the LSM hooks as the correct enforcement point. Since AppArmor
yeah, I am not fond of the credential caching behavior
> already handles sqpoll and credential override, adding uring_cmd
> seems like a natural extension.
>
yes, it is coming, it is just a matter of dev time.
> Is there a reason uring_cmd was left out when the other two hooks
> were added, or is this just something that hasn't been gotten to yet?
>
the initial implementation ran into problems with uring_cmd, so
instead of delaying all uring mediation, it was split from sqpoll
and override_creds.
> I am writing a paper analyzing ublk security in containers and want
> to accurately describe AppArmor's coverage. Any information about
> plans for uring_cmd support would help me get the paper right.
>
yes. Support for uring_cmd is coming as well as uring_allowed. The
issue really is just developer time. Landing new mediation requires
not only the mediation, but also tests, and tooling etc.
There is a lot happening in apparmor atm, with a lot of competing
priorities. The single biggest push atm, has been to fix bugs,
and performance issues, and dramatically expand the CI. This will
put us in a better place to ensure we aren't causing regressions
as we land new mediation.
And there is a bunch of improvements to mediation coming,
including better uring, network, namespace, task, rlimits, object
delegation, identify delegation, and more.
> Thanks.
>
> Best regards
> Sang-Hoon Choi
>
More information about the AppArmor
mailing list