Github Action Runners creating world-writable shared memory section: lttng-ust-wait-n
Kienan Stewart
kstewart at efficios.com
Mon Mar 10 13:36:59 EDT 2025
Hi Bill,
I don't have the context about gha-runner to answer regarding their use
of LTTng.
I can however, give a bit of context about how the those shared memory
allocations are used within the scope of LTTng.
These shared memory sections are used for presence/absence notifications
between lttng-sessiond and applications instrumented with LTTng-UST.
`lttng-ust-wait-8` is intended to be used for applications that are
running as root, or those run as non-root users that are members of the
tracing group (if configured).
`lttng-ust-wait-8-NNN` is used for non-root instrumented applications
where NNN is the UID of the user.
When either lttng-sessiond or an application instrumented with lttng-ust
starts, the shared memory sections will be allocated. There is special
treatment for `lttng-ust-wait-8` since it may be used to notify non-root
applications that are run by users that are members of the tracing
group. In that case, it is created with an extended mode[1], as you are
observing. Those permissions are updated when there is a root
lttng-sessiond that starts and opens or creates a shared memory section
at the same path[2].
On 3/10/25 10:12 AM, bill robertson via lttng-dev wrote:
> GHA runners appear to use lttng-ust for some sort of IPC between runners on
> the same machine.
>
> $ ll /dev/shm/
>
> -rw-rw-rw- 1 gha-runner-7 gha-runner-7 4096 Feb 20 04:03 lttng-ust-wait-8
> -rw-r----- 1 gha-runner-8 gha-runner-8 4096 Feb 20 04:03 lttng-ust-wait-8-558
> -rw-r----- 1 gha-runner-7 gha-runner-7 4096 Feb 20 04:03 lttng-ust-wait-8-559
> -rw-r----- 1 gha-runner-6 gha-runner-6 4096 Feb 20 04:03 lttng-ust-wait-8-560
> -rw-r----- 1 gha-runner-5 gha-runner-5 4096 Feb 20 04:03 lttng-ust-wait-8-561
> -rw-r----- 1 gha-runner-4 gha-runner-4 4096 Feb 20 04:03 lttng-ust-wait-8-562
> -rw-r----- 1 gha-runner-3 gha-runner-3 4096 Feb 20 04:03 lttng-ust-wait-8-563
> -rw-r----- 1 gha-runner-2 gha-runner-2 4096 Feb 20 04:03 lttng-ust-wait-8-564
> -rw-r----- 1 gha-runner-1 gha-runner-1 4096 Feb 20 04:03 lttng-ust-wait-8-565
>
>
> I assume that this is their code, and not some configuration issue on the
> host machine, but if this may not be the case, can someone explain what can
> be done or point me to information on the subject?
Could you clarify what you are trying to achieve?
>
> Otherwise, is there some sort of environment variable or other setting that
> lttng will reference when creating this shared memory section such that it
> is not world-writable? All of the runners run under user accounts that are
> in a common group.
In LTTng-UST 2.14+, setting `LTTNG_UST_APP_PATH`[3] will disable
connections to root (global) lttng-sessionds for instrumented applications.
>
> Thanks!
> Bill
>
[1]:
https://github.com/lttng/lttng-ust/blob/ce89cb05f0fc02b68396220815070996fa0bb4a5/src/lib/lttng-ust/lttng-ust-comm.c#L1705
[2]:
https://github.com/lttng/lttng-tools/blob/e995b146f3456dd51fd76288db6dae9efdbce592/src/common/shm.cpp#L118
[3]:
https://github.com/lttng/lttng-ust/blob/ce89cb05f0fc02b68396220815070996fa0bb4a5/src/lib/lttng-ust/lttng-ust-comm.c#L611C9-L611C27
More information about the lttng-dev
mailing list