Every CVE Search/ Get API key

CVE-2021-47128

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

5.5 MediumFix available

In the Linux kernel, the following vulnerability has been resolved:

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit:

  1. The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0].

  2. It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like:

    rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+

What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this:

allow <who> <who> : lockdown { <reason> };

However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application:

bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not.

Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second.

The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.18%Up 0.1 points since Mar 16, 2024
90%50%10%1%

What each source reports

NVD Score used 5.5

In the Linux kernel, the following vulnerability has been resolved:

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit:

  1. The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0].

  2. It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like:

    rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+

What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this:

allow <who> <who> : lockdown { <reason> };

However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application:

bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not.

Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second.

The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Record
CVE-2021-47128
CVSS 3.1
5.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-667
Updated
2026-11-02
CVE List No score

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

In the Linux kernel, the following vulnerability has been resolved:

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit:

  1. The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0].

  2. It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like:

    rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+

What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this:

allow <who> <who> : lockdown { <reason> };

However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application:

bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not.

Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second.

The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Record
CVE-2021-47128
Updated
2026-11-02
EUVDEUVD-2021-33776 No score

In the Linux kernel, the following vulnerability has been resolved:

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit:

  1. The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0].

  2. It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like:

    rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+

What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this:

allow <who> <who> : lockdown { <reason> };

However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application:

bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not.

Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second.

The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Record
EUVD-2021-33776
Updated
2026-11-02
GitHub AdvisoriesGHSA-cr4c-ww97-fphq 5.5

In the Linux kernel, the following vulnerability has been resolved: bpf, lockdown, audit: Fix...

In the Linux kernel, the following vulnerability has been resolved:

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit:

  1. The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0].

  2. It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like:

    rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+

What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this:

allow <who> <who> : lockdown { <reason> };

However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application:

bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not.

Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second.

The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Record
GHSA-cr4c-ww97-fphq
CVSS 3.1
5.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-667
Updated
2026-11-02
OSV 5.5

In the Linux kernel, the following vulnerability has been resolved:

bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit:

  1. The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0].

  2. It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like:

    rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+

What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this:

allow <who> <who> : lockdown { <reason> };

However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application:

bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not.

Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second.

The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Record
CVE-2021-47128
CVSS 3.1
5.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVDEBIAN-CVE-2021-47128 5.5

In the Linux kernel, the following vulnerability has been resolved: bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit: 1) The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0]. 2) It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like: rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+ What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this: allow <who> <who> : lockdown { <reason> }; However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application: bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }' bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not. Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second. The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Record
DEBIAN-CVE-2021-47128
CVSS 3.1
5.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2021-47128 5.5

In the Linux kernel, the following vulnerability has been resolved: bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown") added an implementation of the locked_down LSM hook to SELinux, with the aim to restrict which domains are allowed to perform operations that would breach lockdown. This is indirectly also getting audit subsystem involved to report events. The latter is problematic, as reported by Ondrej and Serhei, since it can bring down the whole system via audit: 1) The audit events that are triggered due to calls to security_locked_down() can OOM kill a machine, see below details [0]. 2) It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit() when trying to wake up kauditd, for example, when using trace_sched_switch() tracepoint, see details in [1]. Triggering this was not via some hypothetical corner case, but with existing tools like runqlat & runqslower from bcc, for example, which make use of this tracepoint. Rough call sequence goes like: rq_lock(rq) -> -------------------------+ trace_sched_switch() -> | bpf_prog_xyz() -> +-> deadlock selinux_lockdown() -> | audit_log_end() -> | wake_up_interruptible() -> | try_to_wake_up() -> | rq_lock(rq) --------------+ What's worse is that the intention of 59438b46471a to further restrict lockdown settings for specific applications in respect to the global lockdown policy is completely broken for BPF. The SELinux policy rule for the current lockdown check looks something like this: allow <who> <who> : lockdown { <reason> }; However, this doesn't match with the 'current' task where the security_locked_down() is executed, example: httpd does a syscall. There is a tracing program attached to the syscall which triggers a BPF program to run, which ends up doing a bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does the permission check against 'current', that is, httpd in this example. httpd has literally zero relation to this tracing program, and it would be nonsensical having to write an SELinux policy rule against httpd to let the tracing helper pass. The policy in this case needs to be against the entity that is installing the BPF program. For example, if bpftrace would generate a histogram of syscall counts by user space application: bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }' bpftrace would then go and generate a BPF program from this internally. One way of doing it [for the sake of the example] could be to call bpf_get_current_task() helper and then access current->comm via one of bpf_probe_read_kernel{,_str}() helpers. So the program itself has nothing to do with httpd or any other random app doing a syscall here. The BPF program explicitly initiated the lockdown check. The allow/deny policy belongs in the context of bpftrace: meaning, you want to grant bpftrace access to use these helpers, but other tracers on the system like my_random_tracer not. Therefore fix all three issues at the same time by taking a completely different approach for the security_locked_down() hook, that is, move the check into the program verification phase where we actually retrieve the BPF func proto. This also reliably gets the task (current) that is trying to install the BPF tracing program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since we're moving this out of the BPF helper's fast-path which can be called several millions of times per second. The check is then also in line with other security_locked_down() hooks in the system where the enforcement is performed at open/load time, for example, open_kcore() for /proc/kcore access or module_sig_check() for module signatures just to pick f ---truncated---

Record
UBUNTU-CVE-2021-47128
CVSS 3.1
5.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
linux
Debian:12
before 5.10.46-1
5.10.46-1
linux
Debian:13
before 5.10.46-1
5.10.46-1
linux
Debian:14
before 5.10.46-1
5.10.46-1
linux-hwe-edge
Ubuntu:16.04:LTS
All versions, plus listed versions
4.8.0-28.30~16.04.14.8.0-30.32~16.04.14.8.0-32.34~16.04.14.8.0-34.36~16.04.14.10.0-14.16~16.04.1
Show 18 moreShow less
4.10.0-19.21~16.04.14.10.0-20.22~16.04.14.10.0-21.23~16.04.14.10.0-22.24~16.04.14.10.0-24.28~16.04.14.10.0-26.30~16.04.14.11.0-13.19~16.04.14.11.0-14.20~16.04.14.13.0-16.19~16.04.34.13.0-17.20~16.04.14.13.0-19.22~16.04.14.13.0-21.24~16.04.14.13.0-25.29~16.04.24.15.0-13.14~16.04.14.15.0-15.16~16.04.14.15.0-20.21~16.04.14.15.0-22.24~16.04.14.15.0-23.25~16.04.1
None known
linux-aws-5.0
Ubuntu:18.04:LTS
All versions, plus listed versions
5.0.0-1021.24~18.04.15.0.0-1022.25~18.04.15.0.0-1023.26~18.04.15.0.0-1024.27~18.04.15.0.0-1025.285.0.0-1027.30
None known
linux-aws-5.3
Ubuntu:18.04:LTS
All versions, plus listed versions
5.3.0-1016.17~18.04.15.3.0-1017.18~18.04.15.3.0-1019.21~18.04.15.3.0-1023.25~18.04.15.3.0-1028.30~18.04.1
Show 5 moreShow less
5.3.0-1030.32~18.04.15.3.0-1032.34~18.04.25.3.0-1033.355.3.0-1034.365.3.0-1035.37
None known
linux-azure
Ubuntu:18.04:LTS
All versions, plus listed versions
4.15.0-1002.24.15.0-1003.34.15.0-1004.44.15.0-1008.84.15.0-1009.9
Show 39 moreShow less
4.15.0-1012.124.15.0-1013.134.15.0-1014.144.15.0-1018.184.15.0-1019.194.15.0-1021.214.15.0-1022.234.15.0-1023.244.15.0-1025.264.15.0-1028.294.15.0-1030.314.15.0-1031.324.15.0-1032.334.15.0-1035.364.15.0-1036.384.15.0-1037.394.18.0-1011.11~18.04.14.18.0-1013.13~18.04.14.18.0-1014.14~18.04.14.18.0-1018.18~18.04.14.18.0-1019.19~18.04.14.18.0-1020.20~18.04.14.18.0-1023.24~18.04.14.18.0-1024.25~18.04.14.18.0-1025.27~18.04.15.0.0-1014.14~18.04.15.0.0-1016.17~18.04.15.0.0-1018.19~18.04.15.0.0-1020.21~18.04.15.0.0-1022.23~18.04.15.0.0-1023.24~18.04.15.0.0-1025.27~18.04.15.0.0-1027.29~18.04.15.0.0-1028.30~18.04.15.0.0-1029.31~18.04.15.0.0-1031.335.0.0-1032.345.0.0-1035.375.0.0-1036.38
None known
linux-azure-5.3
Ubuntu:18.04:LTS
All versions, plus listed versions
5.3.0-1007.8~18.04.15.3.0-1008.9~18.04.15.3.0-1009.10~18.04.15.3.0-1010.11~18.04.15.3.0-1012.13~18.04.1
Show 11 moreShow less
5.3.0-1013.14~18.04.15.3.0-1016.17~18.04.15.3.0-1018.19~18.04.15.3.0-1019.20~18.04.15.3.0-1020.21~18.04.15.3.0-1022.23~18.04.15.3.0-1028.29~18.04.15.3.0-1031.32~18.04.15.3.0-1032.33~18.04.15.3.0-1034.35~18.04.15.3.0-1035.36
None known
linux-azure-edge
Ubuntu:18.04:LTS
All versions, plus listed versions
4.18.0-1006.6~18.04.14.18.0-1007.7~18.04.14.18.0-1008.8~18.04.15.0.0-1012.12~18.04.2
None known
linux-gcp
Ubuntu:18.04:LTS
All versions, plus listed versions
4.15.0-1001.14.15.0-1003.34.15.0-1005.54.15.0-1006.64.15.0-1008.8
Show 33 moreShow less
4.15.0-1009.94.15.0-1010.104.15.0-1014.144.15.0-1015.154.15.0-1017.184.15.0-1018.194.15.0-1019.204.15.0-1021.224.15.0-1023.244.15.0-1024.254.15.0-1025.264.15.0-1026.274.15.0-1027.284.15.0-1028.294.15.0-1029.314.15.0-1030.324.15.0-1032.344.15.0-1033.354.15.0-1034.364.15.0-1036.384.15.0-1037.394.15.0-1040.424.15.0-1042.454.15.0-1044.705.0.0-1020.20~18.04.15.0.0-1021.21~18.04.15.0.0-1025.26~18.04.15.0.0-1026.27~18.04.15.0.0-1028.29~18.04.15.0.0-1029.30~18.04.15.0.0-1031.325.0.0-1033.345.0.0-1034.35
None known
Show 57 moreShow less
Affected packages
PackageAffectedFixed
linux-gcp-5.3
Ubuntu:18.04:LTS
All versions, plus listed versions
5.3.0-1008.9~18.04.15.3.0-1009.10~18.04.15.3.0-1010.11~18.04.15.3.0-1012.13~18.04.15.3.0-1014.15~18.04.1
Show 8 moreShow less
5.3.0-1016.17~18.04.15.3.0-1017.18~18.04.15.3.0-1018.19~18.04.15.3.0-1020.22~18.04.15.3.0-1026.28~18.04.15.3.0-1029.31~18.04.15.3.0-1030.32~18.04.15.3.0-1032.34~18.04.1
None known
linux-gke-4.15
Ubuntu:18.04:LTS
All versions, plus listed versions
4.15.0-1030.324.15.0-1032.344.15.0-1033.354.15.0-1034.364.15.0-1036.38
Show 28 moreShow less
4.15.0-1037.394.15.0-1040.424.15.0-1041.434.15.0-1042.444.15.0-1044.464.15.0-1045.484.15.0-1046.494.15.0-1048.514.15.0-1049.524.15.0-1050.534.15.0-1052.554.15.0-1055.584.15.0-1057.604.15.0-1058.614.15.0-1059.624.15.0-1063.664.15.0-1064.674.15.0-1066.694.15.0-1067.704.15.0-1069.724.15.0-1070.734.15.0-1072.764.15.0-1073.784.15.0-1074.794.15.0-1076.814.15.0-1077.824.15.0-1078.834.15.0-1079.84
None known
linux-gke-5.4
Ubuntu:18.04:LTS
All versions, plus listed versions
5.4.0-1025.25~18.04.15.4.0-1027.28~18.04.15.4.0-1029.31~18.04.15.4.0-1030.32~18.04.15.4.0-1032.34~18.04.1
Show 32 moreShow less
5.4.0-1033.35~18.04.15.4.0-1035.37~18.04.15.4.0-1036.38~18.04.15.4.0-1037.39~18.04.15.4.0-1039.41~18.04.15.4.0-1040.42~18.04.15.4.0-1042.44~18.04.15.4.0-1043.45~18.04.15.4.0-1044.46~18.04.15.4.0-1046.48~18.04.15.4.0-1049.52~18.04.15.4.0-1051.54~18.04.15.4.0-1052.55~18.04.15.4.0-1053.56~18.04.15.4.0-1054.57~18.04.15.4.0-1055.58~18.04.15.4.0-1056.59~18.04.15.4.0-1057.60~18.04.15.4.0-1059.62~18.04.15.4.0-1061.64~18.04.15.4.0-1062.65~18.04.15.4.0-1063.66~18.04.15.4.0-1065.68~18.04.15.4.0-1066.69~18.04.15.4.0-1067.70~18.04.15.4.0-1068.71~18.04.15.4.0-1071.76~18.04.35.4.0-1072.77~18.04.15.4.0-1074.79~18.04.15.4.0-1076.82~18.04.15.4.0-1078.84~18.04.15.4.0-1080.86~18.04.1
None known
linux-gkeop-5.4
Ubuntu:18.04:LTS
All versions, plus listed versions
5.4.0-1001.15.4.0-1003.35.4.0-1004.55.4.0-1005.65.4.0-1007.8~18.04.1
Show 32 moreShow less
5.4.0-1008.9~18.04.15.4.0-1009.10~18.04.15.4.0-1010.11~18.04.15.4.0-1011.12~18.04.25.4.0-1012.13~18.04.15.4.0-1013.14~18.04.15.4.0-1014.15~18.04.15.4.0-1015.16~18.04.15.4.0-1016.17~18.04.15.4.0-1018.19~18.04.15.4.0-1021.22~18.04.15.4.0-1022.23~18.04.15.4.0-1023.24~18.04.15.4.0-1024.25~18.04.15.4.0-1025.26~18.04.15.4.0-1026.27~18.04.15.4.0-1027.28~18.04.15.4.0-1029.30~18.04.25.4.0-1031.32~18.04.15.4.0-1032.33~18.04.15.4.0-1033.34~18.04.15.4.0-1034.35~18.04.15.4.0-1036.37~18.04.15.4.0-1037.38~18.04.15.4.0-1038.39~18.04.15.4.0-1039.40~18.04.15.4.0-1040.41~18.04.15.4.0-1043.44~18.04.15.4.0-1046.48~18.04.15.4.0-1048.51~18.04.15.4.0-1049.52~18.04.15.4.0-1051.54~18.04.1
None known
linux-hwe
Ubuntu:18.04:LTS
All versions, plus listed versions
4.18.0-13.14~18.04.14.18.0-14.15~18.04.14.18.0-15.16~18.04.14.18.0-16.17~18.04.14.18.0-17.18~18.04.1
Show 38 moreShow less
4.18.0-18.19~18.04.14.18.0-20.21~18.04.14.18.0-21.22~18.04.14.18.0-22.23~18.04.14.18.0-24.25~18.04.14.18.0-25.26~18.04.15.0.0-23.24~18.04.15.0.0-25.26~18.04.15.0.0-27.28~18.04.15.0.0-29.31~18.04.15.0.0-31.33~18.04.15.0.0-32.34~18.04.25.0.0-35.38~18.04.15.0.0-36.39~18.04.15.0.0-37.40~18.04.15.3.0-26.28~18.04.15.3.0-28.30~18.04.15.3.0-40.32~18.04.15.3.0-42.34~18.04.15.3.0-45.37~18.04.15.3.0-46.38~18.04.15.3.0-51.44~18.04.25.3.0-53.47~18.04.15.3.0-59.53~18.04.15.3.0-61.55~18.04.15.3.0-62.56~18.04.15.3.0-64.58~18.04.15.3.0-65.595.3.0-66.605.3.0-67.615.3.0-68.635.3.0-69.655.3.0-70.665.3.0-72.685.3.0-73.695.3.0-74.705.3.0-75.715.3.0-76.72
None known
linux-hwe-edge
Ubuntu:18.04:LTS
All versions, plus listed versions
5.0.0-15.16~18.04.15.0.0-16.17~18.04.15.0.0-17.18~18.04.15.0.0-19.20~18.04.15.0.0-20.21~18.04.1
Show 5 moreShow less
5.3.0-19.20~18.04.25.3.0-22.24~18.04.15.3.0-23.25~18.04.15.3.0-23.25~18.04.25.3.0-24.26~18.04.2
None known
linux-oem
Ubuntu:18.04:LTS
All versions, plus listed versions
4.15.0-1002.34.15.0-1004.54.15.0-1006.94.15.0-1008.114.15.0-1009.12
Show 45 moreShow less
4.15.0-1012.154.15.0-1013.164.15.0-1015.184.15.0-1017.204.15.0-1018.214.15.0-1021.244.15.0-1024.294.15.0-1026.314.15.0-1028.334.15.0-1030.354.15.0-1033.384.15.0-1034.394.15.0-1035.404.15.0-1036.414.15.0-1038.434.15.0-1039.444.15.0-1043.484.15.0-1045.504.15.0-1050.574.15.0-1056.654.15.0-1057.664.15.0-1059.684.15.0-1063.724.15.0-1064.734.15.0-1065.754.15.0-1066.764.15.0-1067.774.15.0-1069.794.15.0-1073.834.15.0-1076.864.15.0-1079.894.15.0-1080.904.15.0-1081.914.15.0-1087.974.15.0-1090.1004.15.0-1091.1014.15.0-1093.1034.15.0-1094.1044.15.0-1096.1064.15.0-1097.1074.15.0-1099.1094.15.0-1100.1104.15.0-1101.1124.15.0-1102.1134.15.0-1103.114
None known
linux-oracle-5.0
Ubuntu:18.04:LTS
All versions, plus listed versions
5.0.0-1007.12~18.04.15.0.0-1008.13~18.04.15.0.0-1009.14~18.04.15.0.0-1010.15~18.04.15.0.0-1011.165.0.0-1013.185.0.0-1014.19
None known
linux-oracle-5.3
Ubuntu:18.04:LTS
All versions, plus listed versions
5.3.0-1011.12~18.04.15.3.0-1013.14~18.04.15.3.0-1014.15~18.04.15.3.0-1016.18~18.04.15.3.0-1018.20~18.04.1
Show 4 moreShow less
5.3.0-1024.26~18.04.15.3.0-1027.29~18.04.15.3.0-1028.30~18.04.15.3.0-1030.32~18.04.1
None known
linux-aws-5.11
Ubuntu:20.04:LTS
All versions, plus listed versions
5.11.0-1009.9~20.04.25.11.0-1014.15~20.04.15.11.0-1016.17~20.04.15.11.0-1017.18~20.04.15.11.0-1019.20~20.04.1
Show 7 moreShow less
5.11.0-1020.21~20.04.25.11.0-1021.22~20.04.25.11.0-1022.23~20.04.15.11.0-1023.24~20.04.15.11.0-1025.27~20.04.15.11.0-1027.30~20.04.15.11.0-1028.31~20.04.1
None known
linux-aws-5.13
Ubuntu:20.04:LTS
All versions, plus listed versions
5.13.0-1008.9~20.04.25.13.0-1011.12~20.04.15.13.0-1012.13~20.04.15.13.0-1014.15~20.04.15.13.0-1017.19~20.04.1
Show 8 moreShow less
5.13.0-1019.21~20.04.15.13.0-1021.23~20.04.25.13.0-1022.24~20.04.15.13.0-1023.25~20.04.15.13.0-1025.27~20.04.15.13.0-1028.31~20.04.15.13.0-1029.32~20.04.15.13.0-1031.35~20.04.1
None known
linux-aws-5.8
Ubuntu:20.04:LTS
All versions, plus listed versions
5.8.0-1035.37~20.04.15.8.0-1038.40~20.04.15.8.0-1041.43~20.04.15.8.0-1042.44~20.04.1
None known
linux-azure-5.11
Ubuntu:20.04:LTS
All versions, plus listed versions
5.11.0-1007.7~20.04.25.11.0-1012.13~20.04.15.11.0-1013.14~20.04.15.11.0-1015.16~20.04.15.11.0-1017.18~20.04.1
Show 8 moreShow less
5.11.0-1019.20~20.04.15.11.0-1020.21~20.04.15.11.0-1021.22~20.04.15.11.0-1022.23~20.04.15.11.0-1023.24~20.04.15.11.0-1025.27~20.04.15.11.0-1027.30~20.04.15.11.0-1028.31~20.04.2
None known
linux-azure-5.13
Ubuntu:20.04:LTS
All versions, plus listed versions
5.13.0-1009.10~20.04.25.13.0-1012.14~20.04.15.13.0-1013.15~20.04.15.13.0-1014.16~20.04.15.13.0-1017.19~20.04.1
Show 7 moreShow less
5.13.0-1021.24~20.04.15.13.0-1022.26~20.04.15.13.0-1023.27~20.04.15.13.0-1025.29~20.04.15.13.0-1028.33~20.04.15.13.0-1029.34~20.04.15.13.0-1031.37~20.04.1
None known
linux-azure-5.8
Ubuntu:20.04:LTS
All versions, plus listed versions
5.8.0-1033.35~20.04.15.8.0-1036.38~20.04.15.8.0-1039.42~20.04.15.8.0-1040.43~20.04.15.8.0-1041.44~20.04.15.8.0-1042.45~20.04.15.8.0-1043.46~20.04.1
None known
linux-azure-fde
Ubuntu:20.04:LTS
All versions, plus listed versions
5.4.0-1063.66+cvm2.25.4.0-1063.66+cvm3.25.4.0-1064.67+cvm1.15.4.0-1065.68+cvm2.15.4.0-1067.70+cvm1.1
Show 21 moreShow less
5.4.0-1068.71+cvm1.15.4.0-1069.72+cvm1.15.4.0-1070.73+cvm1.15.4.0-1072.75+cvm1.15.4.0-1073.76+cvm1.15.4.0-1074.77+cvm1.15.4.0-1076.79+cvm1.15.4.0-1078.81+cvm1.15.4.0-1080.83+cvm1.15.4.0-1083.87+cvm1.15.4.0-1085.90+cvm1.15.4.0-1085.90+cvm2.15.4.0-1086.91+cvm1.15.4.0-1089.94+cvm1.25.4.0-1090.95+cvm1.15.4.0-1091.96+cvm1.15.4.0-1092.97+cvm1.15.4.0-1095.101+cvm1.15.4.0-1098.104+cvm1.15.4.0-1100.106+cvm1.15.4.0-1103.109+cvm1.1
None known
linux-gcp-5.11
Ubuntu:20.04:LTS
All versions, plus listed versions
5.11.0-1009.10~20.04.15.11.0-1014.16~20.04.15.11.0-1017.19~20.04.15.11.0-1018.20~20.04.25.11.0-1020.22~20.04.1
Show 7 moreShow less
5.11.0-1021.23~20.04.15.11.0-1022.24~20.04.15.11.0-1023.25~20.04.15.11.0-1024.26~20.04.15.11.0-1026.29~20.04.15.11.0-1028.32~20.04.15.11.0-1029.33~20.04.3
None known
linux-gcp-5.13
Ubuntu:20.04:LTS
All versions, plus listed versions
5.13.0-1008.9~20.04.35.13.0-1012.15~20.04.15.13.0-1013.16~20.04.15.13.0-1015.18~20.04.15.13.0-1019.23~20.04.1
Show 8 moreShow less
5.13.0-1021.25~20.04.15.13.0-1023.28~20.04.15.13.0-1024.29~20.04.15.13.0-1025.30~20.04.15.13.0-1027.32~20.04.15.13.0-1030.36~20.04.15.13.0-1031.37~20.04.15.13.0-1033.40~20.04.1
None known
linux-gcp-5.8
Ubuntu:20.04:LTS
All versions, plus listed versions
5.8.0-1032.34~20.04.15.8.0-1035.37~20.04.15.8.0-1038.40~20.04.15.8.0-1039.41
None known
linux-gke
Ubuntu:20.04:LTS
All versions, plus listed versions
5.4.0-1033.355.4.0-1035.375.4.0-1036.385.4.0-1037.395.4.0-1039.41
Show 45 moreShow less
5.4.0-1041.435.4.0-1042.445.4.0-1043.455.4.0-1044.465.4.0-1046.485.4.0-1049.525.4.0-1051.545.4.0-1052.555.4.0-1053.565.4.0-1054.575.4.0-1055.585.4.0-1056.595.4.0-1057.605.4.0-1059.625.4.0-1061.645.4.0-1062.655.4.0-1063.665.4.0-1065.685.4.0-1066.695.4.0-1067.705.4.0-1068.715.4.0-1071.765.4.0-1072.775.4.0-1074.795.4.0-1076.825.4.0-1078.845.4.0-1080.865.4.0-1081.875.4.0-1083.895.4.0-1084.905.4.0-1086.935.4.0-1087.945.4.0-1090.975.4.0-1091.985.4.0-1094.1015.4.0-1095.1025.4.0-1096.1035.4.0-1097.1045.4.0-1098.1055.4.0-1099.1065.4.0-1100.1075.4.0-1101.1085.4.0-1102.1095.4.0-1103.1105.4.0-1104.111
None known
linux-gke-5.15
Ubuntu:20.04:LTS
All versions, plus listed versions
5.15.0-1011.14~20.04.15.15.0-1014.17~20.04.15.15.0-1015.18~20.04.15.15.0-1016.19~20.04.15.15.0-1019.23~20.04.1
Show 13 moreShow less
5.15.0-1020.25~20.04.15.15.0-1023.28~20.04.25.15.0-1027.32~20.04.15.15.0-1028.33~20.04.15.15.0-1029.34~20.04.15.15.0-1031.36~20.04.15.15.0-1032.37~20.04.15.15.0-1033.38~20.04.15.15.0-1034.39~20.04.15.15.0-1036.41~20.04.15.15.0-1037.42~20.04.15.15.0-1038.43~20.04.15.15.0-1039.44~20.04.1
None known
linux-hwe-5.11
Ubuntu:20.04:LTS
All versions, plus listed versions
5.11.0-22.23~20.04.15.11.0-25.27~20.04.15.11.0-27.29~20.04.15.11.0-34.36~20.04.15.11.0-36.40~20.04.1
Show 7 moreShow less
5.11.0-37.41~20.04.25.11.0-38.42~20.04.15.11.0-40.44~20.04.25.11.0-41.45~20.04.15.11.0-43.47~20.04.25.11.0-44.48~20.04.25.11.0-46.51~20.04.1
None known
linux-hwe-5.13
Ubuntu:20.04:LTS
All versions, plus listed versions
5.13.0-21.21~20.04.15.13.0-22.22~20.04.15.13.0-23.23~20.04.25.13.0-25.26~20.04.15.13.0-27.29~20.04.1
Show 11 moreShow less
5.13.0-28.31~20.04.15.13.0-30.33~20.04.15.13.0-35.40~20.04.15.13.0-37.42~20.04.15.13.0-39.44~20.04.15.13.0-40.45~20.04.15.13.0-41.46~20.04.15.13.0-44.49~20.04.15.13.0-48.54~20.04.15.13.0-51.58~20.04.15.13.0-52.59~20.04.1
None known
linux-hwe-5.8
Ubuntu:20.04:LTS
All versions, plus listed versions
5.8.0-23.24~20.04.15.8.0-25.26~20.04.15.8.0-28.30~20.04.15.8.0-29.31~20.04.15.8.0-31.33~20.04.1
Show 16 moreShow less
5.8.0-33.36~20.04.15.8.0-34.37~20.04.25.8.0-36.40~20.04.15.8.0-38.43~20.04.15.8.0-40.45~20.04.15.8.0-41.46~20.04.15.8.0-43.49~20.04.15.8.0-44.50~20.04.15.8.0-45.51~20.04.15.8.0-48.54~20.04.15.8.0-49.55~20.04.15.8.0-50.56~20.04.15.8.0-53.60~20.04.15.8.0-55.62~20.04.15.8.0-59.66~20.04.15.8.0-63.71~20.04.1
None known
linux-intel-5.13
Ubuntu:20.04:LTS
All versions, plus listed versions
5.13.0-1007.75.13.0-1008.85.13.0-1009.95.13.0-1010.105.13.0-1011.115.13.0-1014.155.13.0-1017.19
None known
linux-oem-5.10
Ubuntu:20.04:LTS
All versions, plus listed versions
5.10.0-1008.95.10.0-1011.125.10.0-1013.145.10.0-1014.155.10.0-1016.17
Show 21 moreShow less
5.10.0-1017.185.10.0-1019.205.10.0-1021.225.10.0-1022.235.10.0-1023.245.10.0-1025.265.10.0-1026.275.10.0-1029.305.10.0-1032.335.10.0-1033.345.10.0-1034.355.10.0-1038.405.10.0-1044.465.10.0-1045.475.10.0-1049.515.10.0-1050.525.10.0-1051.535.10.0-1052.545.10.0-1053.555.10.0-1055.585.10.0-1057.61
None known
linux-oem-5.13
Ubuntu:20.04:LTS
All versions, plus listed versions
5.13.0-1009.105.13.0-1010.115.13.0-1012.165.13.0-1014.185.13.0-1017.21
Show 7 moreShow less
5.13.0-1019.235.13.0-1020.245.13.0-1021.255.13.0-1022.265.13.0-1026.325.13.0-1028.355.13.0-1029.36
None known
linux-oem-5.14
Ubuntu:20.04:LTS
All versions, plus listed versions
5.14.0-1004.45.14.0-1005.55.14.0-1007.75.14.0-1008.85.14.0-1010.10
Show 30 moreShow less
5.14.0-1011.115.14.0-1013.135.14.0-1018.195.14.0-1020.225.14.0-1022.245.14.0-1024.265.14.0-1027.305.14.0-1029.325.14.0-1031.345.14.0-1032.355.14.0-1033.365.14.0-1034.375.14.0-1036.405.14.0-1038.425.14.0-1042.475.14.0-1044.495.14.0-1045.515.14.0-1046.535.14.0-1047.545.14.0-1048.555.14.0-1049.565.14.0-1050.575.14.0-1051.585.14.0-1052.595.14.0-1054.615.14.0-1055.625.14.0-1056.635.14.0-1057.645.14.0-1058.665.14.0-1059.67
None known
linux-oem-5.6
Ubuntu:20.04:LTS
All versions, plus listed versions
5.6.0-1007.75.6.0-1008.85.6.0-1010.105.6.0-1011.115.6.0-1013.13
Show 24 moreShow less
5.6.0-1017.175.6.0-1018.185.6.0-1020.205.6.0-1021.215.6.0-1023.235.6.0-1026.265.6.0-1027.275.6.0-1028.285.6.0-1031.325.6.0-1032.335.6.0-1033.355.6.0-1034.365.6.0-1035.375.6.0-1036.395.6.0-1039.435.6.0-1042.465.6.0-1047.515.6.0-1048.525.6.0-1050.545.6.0-1052.565.6.0-1053.575.6.0-1054.585.6.0-1055.595.6.0-1056.60
None known
linux-oracle-5.11
Ubuntu:20.04:LTS
All versions, plus listed versions
5.11.0-1008.8~20.04.15.11.0-1013.14~20.04.15.11.0-1016.17~20.04.15.11.0-1017.18~20.04.15.11.0-1019.20~20.04.1
Show 7 moreShow less
5.11.0-1020.21~20.04.15.11.0-1021.22~20.04.15.11.0-1022.23~20.04.15.11.0-1023.24~20.04.15.11.0-1025.27~20.04.15.11.0-1027.30~20.04.15.11.0-1028.31~20.04.1
None known
linux-oracle-5.13
Ubuntu:20.04:LTS
All versions, plus listed versions
5.13.0-1011.13~20.04.25.13.0-1015.19~20.04.15.13.0-1016.20~20.04.15.13.0-1018.22~20.04.15.13.0-1021.26~20.04.1
Show 7 moreShow less
5.13.0-1025.30~20.04.15.13.0-1027.32~20.04.15.13.0-1028.33~20.04.15.13.0-1030.35~20.04.15.13.0-1033.39~20.04.15.13.0-1034.40~20.04.15.13.0-1036.43~20.04.1
None known
linux-oracle-5.8
Ubuntu:20.04:LTS
All versions, plus listed versions
5.8.0-1031.32~20.04.25.8.0-1033.34~20.04.15.8.0-1034.35~20.04.25.8.0-1037.38~20.04.15.8.0-1038.39~20.04.1
None known
linux-raspi2
Ubuntu:20.04:LTS
All versions, plus listed versions
5.3.0-1007.85.3.0-1014.165.3.0-1015.175.3.0-1017.195.4.0-1004.45.4.0-1006.6
None known
linux-riscv
Ubuntu:20.04:LTS
All versions, plus listed versions
5.4.0-24.285.4.0-26.305.4.0-27.315.4.0-28.325.4.0-30.34
Show 7 moreShow less
5.4.0-31.355.4.0-33.375.4.0-34.385.4.0-36.415.4.0-37.425.4.0-39.445.4.0-40.45
None known
linux-riscv-5.11
Ubuntu:20.04:LTS
All versions, plus listed versions
5.11.0-1015.16~20.04.15.11.0-1017.18~20.04.15.11.0-1018.19~20.04.25.11.0-1020.21~20.04.15.11.0-1021.22~20.04.1
Show 8 moreShow less
5.11.0-1022.23~20.04.15.11.0-1023.24~20.04.15.11.0-1024.25~20.04.15.11.0-1026.28~20.04.15.11.0-1028.31~20.04.15.11.0-1029.32~20.04.15.11.0-1030.345.11.0-1031.35
None known
linux-riscv-5.8
Ubuntu:20.04:LTS
All versions, plus listed versions
5.8.0-14.16~20.04.15.8.0-14.16~20.04.35.8.0-16.18~20.04.15.8.0-17.19~20.04.15.8.0-18.20~20.04.1
Show 5 moreShow less
5.8.0-20.22~20.04.15.8.0-22.24~20.04.15.8.0-25.27~20.04.15.8.0-26.28~20.04.15.8.0-29.31~20.04.1
None known
linux-allwinner-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1007.7~22.04.15.19.0-1009.9~22.04.15.19.0-1010.10~22.04.15.19.0-1011.11~22.04.15.19.0-1012.12~22.04.15.19.0-1013.13~22.04.15.19.0-1014.14~22.04.15.19.0-1015.15~22.04.1
None known
linux-aws-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1019.20~22.04.15.19.0-1020.21~22.04.15.19.0-1022.23~22.04.15.19.0-1023.24~22.04.15.19.0-1024.25~22.04.1
Show 5 moreShow less
5.19.0-1025.26~22.04.15.19.0-1026.27~22.04.15.19.0-1027.28~22.04.15.19.0-1028.29~22.04.15.19.0-1029.30~22.04.1
None known
linux-aws-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-1005.5~22.04.16.2.0-1006.6~22.04.16.2.0-1007.7~22.04.16.2.0-1008.8~22.04.16.2.0-1009.9~22.04.3
Show 9 moreShow less
6.2.0-1010.10~22.04.16.2.0-1011.11~22.04.16.2.0-1012.12~22.04.16.2.0-1013.13~22.04.16.2.0-1014.14~22.04.16.2.0-1015.15~22.04.16.2.0-1016.16~22.04.16.2.0-1017.17~22.04.16.2.0-1018.18~22.04.1
None known
linux-azure-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1020.21~22.04.15.19.0-1021.22~22.04.15.19.0-1022.23~22.04.15.19.0-1023.24~22.04.15.19.0-1025.28~22.04.15.19.0-1026.29~22.04.15.19.0-1027.30~22.04.2
None known
linux-azure-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-1005.5~22.04.16.2.0-1006.6~22.04.16.2.0-1007.7~22.04.16.2.0-1008.8~22.04.16.2.0-1009.9~22.04.3
Show 8 moreShow less
6.2.0-1011.11~22.04.16.2.0-1012.12~22.04.16.2.0-1014.14~22.04.16.2.0-1015.15~22.04.16.2.0-1016.16~22.04.16.2.0-1017.17~22.04.16.2.0-1018.18~22.04.16.2.0-1019.19~22.04.1
None known
linux-azure-fde-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1025.28~22.04.1.15.19.0-1026.29~22.04.1.15.19.0-1027.30~22.04.2.1
None known
linux-azure-fde-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-1008.8~22.04.1.16.2.0-1009.9~22.04.3.16.2.0-1011.11~22.04.1.16.2.0-1012.12~22.04.1.16.2.0-1014.14~22.04.1.1
Show 5 moreShow less
6.2.0-1015.15~22.04.1.16.2.0-1016.16~22.04.1.16.2.0-1017.17~22.04.1.16.2.0-1018.18~22.04.1.16.2.0-1019.19~22.04.1.1
None known
linux-gcp-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1020.22~22.04.25.19.0-1021.23~22.04.15.19.0-1022.24~22.04.15.19.0-1024.26~22.04.15.19.0-1025.27~22.04.15.19.0-1026.28~22.04.15.19.0-1027.29~22.04.15.19.0-1030.32~22.04.1
None known
linux-gcp-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-1009.9~22.04.36.2.0-1010.10~22.04.16.2.0-1011.11~22.04.16.2.0-1011.11~22.04.36.2.0-1012.12~22.04.1
Show 7 moreShow less
6.2.0-1013.13~22.04.16.2.0-1014.14~22.04.16.2.0-1016.18~22.04.16.2.0-1017.19~22.04.16.2.0-1018.20~22.04.16.2.0-1019.21~22.04.16.2.0-1021.23~22.04.1
None known
linux-hwe-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-28.29~22.04.15.19.0-32.33~22.04.15.19.0-35.36~22.04.15.19.0-38.39~22.04.15.19.0-40.41~22.04.1
Show 6 moreShow less
5.19.0-41.42~22.04.15.19.0-42.43~22.04.15.19.0-43.44~22.04.15.19.0-45.46~22.04.15.19.0-46.47~22.04.15.19.0-50.50
None known
linux-hwe-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-25.25~22.04.26.2.0-26.26~22.04.16.2.0-31.31~22.04.16.2.0-32.32~22.04.16.2.0-33.33~22.04.1
Show 5 moreShow less
6.2.0-34.34~22.04.16.2.0-35.35~22.04.16.2.0-36.37~22.04.16.2.0-37.38~22.04.16.2.0-39.40~22.04.1
None known
linux-lowlatency-hwe-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1017.18~22.04.15.19.0-1018.19~22.04.15.19.0-1021.22~22.04.15.19.0-1022.23~22.04.15.19.0-1023.24~22.04.1
Show 5 moreShow less
5.19.0-1024.25~22.04.15.19.0-1025.26~22.04.15.19.0-1027.28~22.04.15.19.0-1028.29~22.04.15.19.0-1030.30
None known
linux-lowlatency-hwe-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-1008.8~22.04.16.2.0-1009.9~22.04.16.2.0-1011.11~22.04.16.2.0-1012.12~22.04.16.2.0-1013.13~22.04.1
Show 5 moreShow less
6.2.0-1014.14~22.04.16.2.0-1015.15~22.04.16.2.0-1016.16~22.04.16.2.0-1017.17~22.04.16.2.0-1018.18~22.04.1
None known
linux-nvidia-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-1003.3~22.04.16.2.0-1009.96.2.0-1010.106.2.0-1011.116.2.0-1012.126.2.0-1013.136.2.0-1015.15
None known
linux-oem-5.17
Ubuntu:22.04:LTS
All versions, plus listed versions
5.17.0-1003.35.17.0-1004.45.17.0-1006.65.17.0-1011.125.17.0-1012.13
Show 21 moreShow less
5.17.0-1013.145.17.0-1014.155.17.0-1015.165.17.0-1016.175.17.0-1017.185.17.0-1018.195.17.0-1019.205.17.0-1020.215.17.0-1021.225.17.0-1024.255.17.0-1025.265.17.0-1026.275.17.0-1027.285.17.0-1028.295.17.0-1029.305.17.0-1030.315.17.0-1031.325.17.0-1032.335.17.0-1033.345.17.0-1034.355.17.0-1035.36
None known
linux-oem-6.0
Ubuntu:22.04:LTS
All versions, plus listed versions
6.0.0-1006.66.0.0-1007.76.0.0-1008.86.0.0-1009.96.0.0-1010.10
Show 11 moreShow less
6.0.0-1011.116.0.0-1012.126.0.0-1013.136.0.0-1014.146.0.0-1015.156.0.0-1016.166.0.0-1017.176.0.0-1018.186.0.0-1019.196.0.0-1020.206.0.0-1021.21
None known
linux-oem-6.1
Ubuntu:22.04:LTS
All versions, plus listed versions
6.1.0-1004.46.1.0-1006.66.1.0-1007.76.1.0-1008.86.1.0-1009.9
Show 22 moreShow less
6.1.0-1010.106.1.0-1012.126.1.0-1013.136.1.0-1014.146.1.0-1015.156.1.0-1016.166.1.0-1017.176.1.0-1019.196.1.0-1020.206.1.0-1021.216.1.0-1022.226.1.0-1023.236.1.0-1024.246.1.0-1025.256.1.0-1026.266.1.0-1027.276.1.0-1028.286.1.0-1029.296.1.0-1033.336.1.0-1034.346.1.0-1035.356.1.0-1036.36
None known
linux-riscv
Ubuntu:22.04:LTS
All versions, plus listed versions
5.13.0-1004.45.13.0-1006.6+22.04.15.13.0-1007.7+22.04.15.13.0-1010.11+22.04.15.15.0-1004.4
Show 18 moreShow less
5.15.0-1005.55.15.0-1006.65.15.0-1007.75.15.0-1008.85.15.0-1011.125.15.0-1012.135.15.0-1014.165.15.0-1015.175.15.0-1016.185.15.0-1017.195.15.0-1018.215.15.0-1019.225.15.0-1020.235.15.0-1022.265.15.0-1023.275.15.0-1026.305.15.0-1027.315.15.0-1028.32
None known
linux-riscv-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1012.13~22.04.15.19.0-1015.16~22.04.15.19.0-1016.17~22.04.15.19.0-1017.18~22.04.15.19.0-1018.19~22.04.15.19.0-1019.21~22.04.15.19.0-1020.22~22.04.15.19.0-1021.23~22.04.1
None known
linux-starfive-5.19
Ubuntu:22.04:LTS
All versions, plus listed versions
5.19.0-1014.16~22.04.15.19.0-1015.17~22.04.15.19.0-1016.18~22.04.15.19.0-1017.19~22.04.15.19.0-1018.20~22.04.15.19.0-1019.21~22.04.15.19.0-1020.22~22.04.1
None known
linux-starfive-6.2
Ubuntu:22.04:LTS
All versions, plus listed versions
6.2.0-1006.7~22.04.16.2.0-1007.8~22.04.16.2.0-1009.10~22.04.1
None known

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2021-47128 is a medium vulnerability (CVSS 5.5) in Linux, published March 15, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.18%, the 7th percentile. Fixed in linux 5.10.46-1.

References

This page doesn't list everything

Left out here: 1 version. The JSON record has them.

MoveEnter Open