Lucene search
+L

Unity Linux 20.1050e Security Update: kernel (UTSA-2026-102111)

🗓️ 18 Aug 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 2 Views

btrfs ASSERT failure in read repair path causes kernel panic when filesystem flips to read-only mode.

Related
Refs
Code
ReporterTitlePublishedViews
Family
attackerkb
ATTACKERKB
CVE-2026-43299
8 May 202613:11
attackerkb
cgr
Chainguard
CVE-2026-43299 vulnerabilities
16 Jul 202602:17
cgr
cnnvd
CNNVD
Linux kernel 安全漏洞
8 May 202600:00
cnnvd
cve
CVE
CVE-2026-43299
8 May 202613:11
cve
cvelist
Cvelist
CVE-2026-43299 btrfs: do not ASSERT() when the fs flips RO inside btrfs_repair_io_failure()
8 May 202613:11
cvelist
debiancve
Debian CVE
CVE-2026-43299
8 May 202613:11
debiancve
euvd
EUVD
EUVD-2026-28569
8 May 202615:31
euvd
nvd
NVD
CVE-2026-43299
8 May 202614:16
nvd
osv
OSV
BELL-CVE-2026-43299
9 May 202606:09
osv
osv
OSV
CGA-QCMV-CC9R-7824
15 Jul 202622:14
osv
Rows per page
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

if (description)
{
  script_id(337325);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/08/18");

  script_cve_id("CVE-2026-43299");

  script_name(english:"Unity Linux 20.1050e Security Update: kernel (UTSA-2026-102111)");

  script_set_attribute(attribute:"synopsis", value:
"The Unity Linux host is missing one or more security updates.");
  script_set_attribute(attribute:"description", value:
"The Unity Linux 20 host has a package installed that is affected by a vulnerability as referenced in the
UTSA-2026-102111 advisory.

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

    btrfs: do not ASSERT() when the fs flips RO inside btrfs_repair_io_failure()

    [BUG]
    There is a bug report that when btrfs hits ENOSPC error in a critical
    path, btrfs flips RO (this part is expected, although the ENOSPC bug
    still needs to be addressed).

    The problem is after the RO flip, if there is a read repair pending, we
    can hit the ASSERT() inside btrfs_repair_io_failure() like the following:

      BTRFS info (device vdc): relocating block group 30408704 flags metadata|raid1
      ------------[ cut here ]------------
      BTRFS: Transaction aborted (error -28)
      WARNING: fs/btrfs/extent-tree.c:3235 at __btrfs_free_extent.isra.0+0x453/0xfd0, CPU#1: btrfs/383844
      Modules linked in: kvm_intel kvm irqbypass
      [...]
      ---[ end trace 0000000000000000 ]---
      BTRFS info (device vdc state EA): 2 enospc errors during balance
      BTRFS info (device vdc state EA): balance: ended with status: -30
      BTRFS error (device vdc state EA): parent transid verify failed on logical 30556160 mirror 2 wanted 8
    found 6
      BTRFS error (device vdc state EA): bdev /dev/nvme0n1 errs: wr 0, rd 0, flush 0, corrupt 10, gen 0
      [...]
      assertion failed: !(fs_info->sb->s_flags & SB_RDONLY) :: 0, in fs/btrfs/bio.c:938
      ------------[ cut here ]------------
      assertion failed: !(fs_info->sb->s_flags & SB_RDONLY) :: 0, in fs/btrfs/bio.c:938
      kernel BUG at fs/btrfs/bio.c:938!
      Oops: invalid opcode: 0000 [#1] SMP NOPTI
      CPU: 0 UID: 0 PID: 868 Comm: kworker/u8:13 Tainted: G        W        N  6.19.0-rc6+ #4788 PREEMPT(full)
      Tainted: [W]=WARN, [N]=TEST
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.17.0-0-gb52ca86e094d-prebuilt.qemu.org
    04/01/2014
      Workqueue: btrfs-endio simple_end_io_work
      RIP: 0010:btrfs_repair_io_failure.cold+0xb2/0x120
      RSP: 0000:ffffc90001d2bcf0 EFLAGS: 00010246
      RAX: 0000000000000051 RBX: 0000000000001000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: ffffffff8305cf42 RDI: 00000000ffffffff
      RBP: 0000000000000002 R08: 00000000fffeffff R09: ffffffff837fa988
      R10: ffffffff8327a9e0 R11: 6f69747265737361 R12: ffff88813018d310
      R13: ffff888168b8a000 R14: ffffc90001d2bd90 R15: ffff88810a169000
      FS:  0000000000000000(0000) GS:ffff8885e752c000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      ------------[ cut here ]------------

    [CAUSE]
    The cause of -ENOSPC error during the test case btrfs/124 is still
    unknown, although it's known that we still have cases where metadata can
    be over-committed but can not be fulfilled correctly, thus if we hit
    such ENOSPC error inside a critical path, we have no choice but abort
    the current transaction.

    This will mark the fs read-only.

    The problem is inside the btrfs_repair_io_failure() path that we require
    the fs not to be mount read-only. This is normally fine, but if we are
    doing a read-repair meanwhile the fs flips RO due to a critical error,
    we can enter btrfs_repair_io_failure() with super block set to
    read-only, thus triggering the above crash.

    [FIX]
    Just replace the ASSERT() with a proper return if the fs is already
    read-only.

Tenable has extracted the preceding description block directly from the Unity Linux security advisory.

Note that Nessus has not tested for this issue but has instead relied only on the application's self-reported version
number.");
  # https://src.uniontech.com/#/security_advisory_detail?utsa_id=UTSA-2026-102111
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?a5a42656");
  # https://lore.kernel.org/linux-cve-announce/2026050855-CVE-2026-43299-e001@gregkh
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?0d995b31");
  script_set_attribute(attribute:"see_also", value:"https://nvd.nist.gov/vuln/detail/CVE-2026-43299");
  script_set_attribute(attribute:"solution", value:
"Update the affected kernel package.");
  script_set_cvss_base_vector("CVSS2#AV:L/AC:L/Au:S/C:N/I:N/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-2026-43299");

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

  script_set_attribute(attribute:"vuln_publication_date", value:"2026/05/08");
  script_set_attribute(attribute:"patch_publication_date", value:"2026/08/17");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/08/18");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Unity Linux Local Security Checks");

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

  script_dependencies("ssh_get_info2.nasl");
  script_require_keys("Host/local_checks_enabled", "Host/UOS-Server/release", "Host/UOS-Server/rpm-list", "Host/cpu");

  exit(0);
}
include('rpm2.inc');

if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_product = get_kb_item('installed_os/local/SSH/0/product');
if (isnull(os_product) || 'UOS Server' >!< os_product) audit(AUDIT_OS_NOT, 'UOS Server');
var os_version = get_kb_item('installed_os/local/SSH/0/version');
if (isnull(os_version)) audit(AUDIT_UNKNOWN_APP_VER, 'UOS Server');
if (! preg(pattern:"^20.1050e([^0-9]|$)", string:os_version)) audit(AUDIT_OS_NOT, 'UOS Server 20.1050e', 'UOS Server ' + os_version);

if (!get_kb_item('Host/UOS-Server/rpm-list')) audit(AUDIT_PACKAGE_LIST_MISSING);

var cpu = get_kb_item('Host/cpu');
if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
if ('aarch64' >!< cpu && 'amd64' >!< cpu && 'x86_64' >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'UOS Server', cpu);


var constraints = [
  {
    'release': '20',
    'sp': '1050e',
    'pkgs': [
      {'reference':'kernel-4.19.90-2211.5.0.0178.67.uel20', 'sp':'1050e', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'kernel-4.19.90-2211.5.0.0178.67.uel20', 'sp':'1050e', 'cpu':'amd64', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'kernel-4.19.90-2211.5.0.0178.67.uel20', 'sp':'1050e', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE}
    ]
  }
];

var os_release = get_one_kb_item('installed_os/local/SSH/0/release');
var os_sp = get_one_kb_item('Host/*/minor_release');

var flag = 0;
var reference;
var sp;
var _cpu;
var el_string;
var rpm_spec_vers_cmp;
var epoch;
var allowmaj;
var exists_check;
var cves;
foreach var constraint ( constraints ) {
  # Check that the target release is equal to the affected release
  if (!empty_or_null(constraint['release'])){
    if (constraint['release'] != os_release) continue;
  }
  if (!empty_or_null(constraint['sp'])){
    if (constraint['sp'] != os_sp) continue;
  }
  foreach var pkg ( constraint['pkgs'] ) {
    reference = NULL;
    sp = NULL;
    _cpu = NULL;
    el_string = NULL;
    rpm_spec_vers_cmp = NULL;
    epoch = NULL;
    allowmaj = NULL;
    exists_check = NULL;
    cves = NULL;
    if (!empty_or_null(pkg['reference'])) reference = pkg['reference'];
    if (!empty_or_null(pkg['sp'])) sp = pkg['sp'];
    if (!empty_or_null(pkg['cpu'])) _cpu = pkg['cpu'];
    if (!empty_or_null(pkg['el_string'])) el_string = pkg['el_string'];
    if (!empty_or_null(pkg['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = pkg['rpm_spec_vers_cmp'];
    if (!empty_or_null(pkg['epoch'])) epoch = pkg['epoch'];
    if (!empty_or_null(pkg['allowmaj'])) allowmaj = pkg['allowmaj'];
    if (!empty_or_null(pkg['exists_check'])) exists_check = pkg['exists_check'];
    if (!empty_or_null(pkg['cves'])) cves = pkg['cves'];
    if (reference &&
        ## (no known rpm to check OR known rpm_exists)
        (!exists_check || rpm_exists(rpm:exists_check)) &&
        rpm_check(sp:sp, cpu:_cpu, reference:reference, epoch:epoch, el_string:el_string, rpm_spec_vers_cmp:rpm_spec_vers_cmp, allowmaj:allowmaj, cves:cves)) flag++;
  }
}


if (flag)
{
  security_report_v4(
      port       : 0,
      severity   : SECURITY_WARNING,
      extra      : rpm_report_get()
  );
  exit(0);
}
else
{
  var tested = pkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'kernel');
}

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

18 Aug 2026 00:00Current
5.7Medium risk
Vulners AI Score5.7
CVSS 3.15.5
EPSS0.00117
2