Lucene search
K

Linux Distros Unpatched Vulnerability : CVE-2021-47128

🗓️ 11 Aug 2025 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 3 Views

CVE-2021-47128: Unpatched Linux kernel vuln in SELinux lockdown and audit; OOM risk and deadlock

Related
Refs
Code
ReporterTitlePublishedViews
Family
Tenable Nessus
Amazon Linux 2 : kernel, --advisory ALAS2KERNEL-5.10-2022-002 (ALASKERNEL-5.10-2022-002)
2 May 202200:00
nessus
Amazon
Important: kernel
28 Jan 202200:00
amazon
Circl
CVE-2021-47128
15 Mar 202422:27
circl
CNNVD
Linux kernel security vulnerabilities
15 Mar 202400:00
cnnvd
CVE
CVE-2021-47128
15 Mar 202420:14
cve
Cvelist
CVE-2021-47128 bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks
15 Mar 202420:14
cvelist
Debian CVE
CVE-2021-47128
15 Mar 202420:14
debiancve
NVD
CVE-2021-47128
15 Mar 202421:15
nvd
OSV
DEBIAN-CVE-2021-47128
15 Mar 202421:15
osv
OSV
UBUNTU-CVE-2021-47128
15 Mar 202421:15
osv
Rows per page
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

if (description)
{
  script_id(247937);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2025/08/11");

  script_cve_id("CVE-2021-47128");

  script_name(english:"Linux Distros Unpatched Vulnerability : CVE-2021-47128");

  script_set_attribute(attribute:"synopsis", value:
"The Linux/Unix host has one or more packages installed with a vulnerability that the vendor indicates will not be
patched.");
  script_set_attribute(attribute:"description", value:
"The Linux/Unix host has one or more packages installed that are impacted by a vulnerability without a vendor supplied
patch 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--- (CVE-2021-47128)

Note that Nessus relies on the presence of the package as reported by the vendor.");
  script_set_attribute(attribute:"see_also", value:"https://ubuntu.com/security/CVE-2021-47128");
  script_set_attribute(attribute:"solution", value:
"There is no known solution at this time.");
  script_set_attribute(attribute:"agent", value:"unix");
  script_set_cvss_base_vector("CVSS2#AV:L/AC:L/Au:S/C:N/I:C/A:C");
  script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2021-47128");

  script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"false");
  script_set_attribute(attribute:"vendor_unpatched", value:"true");

  script_set_attribute(attribute:"vuln_publication_date", value:"2022/01/28");
  script_set_attribute(attribute:"plugin_publication_date", value:"2025/08/11");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:16.04:-:lts");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:18.04:-:lts");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:20.04:-:lts");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:22.04:-:lts");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-allwinner-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-aws-5.0");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-aws-5.11");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-aws-5.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-aws-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-aws-5.3");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-aws-5.8");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-aws-6.2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-5.11");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-5.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-5.3");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-5.8");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-6.2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-edge");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-fde");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-fde-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-azure-fde-6.2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gcp");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gcp-5.11");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gcp-5.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gcp-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gcp-5.3");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gcp-5.8");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gcp-6.2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gke");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gke-4.15");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gke-5.15");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gke-5.4");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-gkeop-5.4");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-hwe");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-hwe-5.11");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-hwe-5.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-hwe-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-hwe-5.8");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-hwe-6.2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-hwe-edge");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-intel-5.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-lowlatency-hwe-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-lowlatency-hwe-6.2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-nvidia-6.2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem-5.10");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem-5.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem-5.14");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem-5.17");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem-5.6");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem-6.0");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oem-6.1");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oracle-5.0");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oracle-5.11");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oracle-5.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oracle-5.3");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-oracle-5.8");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-raspi2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-riscv");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-riscv-5.11");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-riscv-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-riscv-5.8");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-starfive-5.19");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:linux-starfive-6.2");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Misc.");

  script_copyright(english:"This script is Copyright (C) 2025 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("ssh_get_info2.nasl", "set_linux_os_id.nasl");
  script_require_keys("Host/cpu", "Host/local_checks_enabled", "global_settings/vendor_unpatched", "Host/OS/identifier");
  script_require_ports("Host/OS/Ubuntu Linux-16.04", "Host/OS/Ubuntu Linux-18.04", "Host/OS/Ubuntu Linux-20.04", "Host/OS/Ubuntu Linux-22.04");

  exit(0);
}

if (!get_kb_item("global_settings/vendor_unpatched")) exit(0, "Unpatched Vulnerabilities Detection not active.");
if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
if (empty_or_null(get_one_kb_item("Host/Debian/dpkg-l"))) audit(AUDIT_PACKAGE_LIST_MISSING);

include('linux_unpatched.inc');

var distro_constraints_array = {
  "Ubuntu Linux-16.04": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "16.04",
        "pkgs": [
          {"reference": "linux-hwe-edge"}
        ]
      }
    ]
  },
  "Ubuntu Linux-18.04": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "18.04",
        "pkgs": [
          {"reference": "linux-aws-5.0"},
          {"reference": "linux-aws-5.3"},
          {"reference": "linux-azure-5.3"},
          {"reference": "linux-azure-cloud-tools-4.15.0"},
          {"reference": "linux-azure-edge"},
          {"reference": "linux-azure-headers-4.15.0"},
          {"reference": "linux-azure-tools-4.15.0"},
          {"reference": "linux-cloud-tools-4.15.0"},
          {"reference": "linux-gcp-5.3"},
          {"reference": "linux-gcp-headers-4.15.0"},
          {"reference": "linux-gcp-tools-4.15.0"},
          {"reference": "linux-gke-4.15"},
          {"reference": "linux-gke-5.4"},
          {"reference": "linux-gkeop-5.4"},
          {"reference": "linux-headers-4.15.0"},
          {"reference": "linux-hwe"},
          {"reference": "linux-hwe-edge"},
          {"reference": "linux-image-4.15.0"},
          {"reference": "linux-image-unsigned-4.15.0"},
          {"reference": "linux-modules-4.15.0"},
          {"reference": "linux-modules-extra-4.15.0"},
          {"reference": "linux-oem-headers-4.15.0"},
          {"reference": "linux-oem-tools-4.15.0"},
          {"reference": "linux-oracle-5.0"},
          {"reference": "linux-oracle-5.3"},
          {"reference": "linux-tools-4.15.0"},
          {"reference": "linux-udebs-azure"},
          {"reference": "linux-udebs-oem"}
        ]
      }
    ]
  },
  "Ubuntu Linux-20.04": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "20.04",
        "pkgs": [
          {"reference": "linux-aws-5.11"},
          {"reference": "linux-aws-5.13"},
          {"reference": "linux-aws-5.8"},
          {"reference": "linux-azure-5.11"},
          {"reference": "linux-azure-5.13"},
          {"reference": "linux-azure-5.8"},
          {"reference": "linux-azure-fde"},
          {"reference": "linux-buildinfo-5.4.0"},
          {"reference": "linux-buildinfo-5.6.0"},
          {"reference": "linux-cloud-tools-5.4.0"},
          {"reference": "linux-cloud-tools-5.6.0"},
          {"reference": "linux-gcp-5.11"},
          {"reference": "linux-gcp-5.13"},
          {"reference": "linux-gcp-5.8"},
          {"reference": "linux-gke"},
          {"reference": "linux-gke-5.15"},
          {"reference": "linux-headers-5.4.0"},
          {"reference": "linux-headers-5.6.0"},
          {"reference": "linux-hwe-5.11"},
          {"reference": "linux-hwe-5.13"},
          {"reference": "linux-hwe-5.8"},
          {"reference": "linux-image-5.4.0"},
          {"reference": "linux-image-unsigned-5.6.0"},
          {"reference": "linux-intel-5.13"},
          {"reference": "linux-libc-dev"},
          {"reference": "linux-modules-5.4.0"},
          {"reference": "linux-modules-5.6.0"},
          {"reference": "linux-modules-extra-5.4.0"},
          {"reference": "linux-modules-extra-5.6.0"},
          {"reference": "linux-oem-5.10"},
          {"reference": "linux-oem-5.13"},
          {"reference": "linux-oem-5.14"},
          {"reference": "linux-oem-5.6-headers-5.6.0"},
          {"reference": "linux-oem-5.6-tools-5.6.0"},
          {"reference": "linux-oem-5.6-tools-common"},
          {"reference": "linux-oem-5.6-tools-host"},
          {"reference": "linux-oracle-5.11"},
          {"reference": "linux-oracle-5.13"},
          {"reference": "linux-oracle-5.8"},
          {"reference": "linux-raspi2"},
          {"reference": "linux-riscv-5.11"},
          {"reference": "linux-riscv-5.8"},
          {"reference": "linux-riscv-headers-5.4.0"},
          {"reference": "linux-riscv-tools-5.4.0"},
          {"reference": "linux-tools-5.4.0"},
          {"reference": "linux-tools-5.6.0"},
          {"reference": "linux-udebs-generic"},
          {"reference": "linux-udebs-oem"}
        ]
      }
    ]
  },
  "Ubuntu Linux-22.04": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "22.04",
        "pkgs": [
          {"reference": "linux-allwinner-5.19"},
          {"reference": "linux-aws-5.19"},
          {"reference": "linux-aws-6.2"},
          {"reference": "linux-azure-5.19"},
          {"reference": "linux-azure-6.2"},
          {"reference": "linux-azure-fde-5.19"},
          {"reference": "linux-azure-fde-6.2"},
          {"reference": "linux-buildinfo-5.15.0"},
          {"reference": "linux-buildinfo-5.17.0"},
          {"reference": "linux-cloud-tools-5.15.0"},
          {"reference": "linux-cloud-tools-5.17.0"},
          {"reference": "linux-gcp-5.19"},
          {"reference": "linux-gcp-6.2"},
          {"reference": "linux-headers-5.15.0"},
          {"reference": "linux-headers-5.17.0"},
          {"reference": "linux-hwe-5.19"},
          {"reference": "linux-hwe-6.2"},
          {"reference": "linux-image-5.15.0"},
          {"reference": "linux-image-unsigned-5.17.0"},
          {"reference": "linux-lowlatency-hwe-5.19"},
          {"reference": "linux-lowlatency-hwe-6.2"},
          {"reference": "linux-modules-5.15.0"},
          {"reference": "linux-modules-5.17.0"},
          {"reference": "linux-modules-extra-5.15.0"},
          {"reference": "linux-modules-extra-5.17.0"},
          {"reference": "linux-nvidia-6.2"},
          {"reference": "linux-oem-5.17-headers-5.17.0"},
          {"reference": "linux-oem-5.17-tools-5.17.0"},
          {"reference": "linux-oem-5.17-tools-host"},
          {"reference": "linux-oem-6.0"},
          {"reference": "linux-oem-6.1"},
          {"reference": "linux-riscv-5.19"},
          {"reference": "linux-riscv-headers-5.15.0"},
          {"reference": "linux-riscv-tools-5.15.0"},
          {"reference": "linux-starfive-5.19"},
          {"reference": "linux-starfive-6.2"},
          {"reference": "linux-tools-5.15.0"},
          {"reference": "linux-tools-5.17.0"}
        ]
      }
    ]
  }
};

var distro_constraints_values = linux_unpatched::get_distro_constraints(distro_constraints_arr:distro_constraints_array);
if (empty_or_null(distro_constraints_values)) audit(AUDIT_HOST_NOT, 'affected');
var report = linux_unpatched::check_unpatched_constraints(distro_constraints_values:distro_constraints_values);

if (!empty_or_null(report))
{
  security_report_v4(
      port       : 0,
      severity   : SECURITY_WARNING,
      extra      : report
  );
  exit(0);
}
else
{
  audit(AUDIT_HOST_NOT, 'affected');
}

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

11 Aug 2025 00:00Current
5.5Medium risk
Vulners AI Score5.5
CVSS 3.15.5
EPSS0.00014
SSVC
3