Lucene search
K

Unity Linux 20.1070e Security Update: kernel (UTSA-2025-989595)

🗓️ 05 Nov 2025 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 5 Views

Unity Linux 20.1070e kernel fix for ext4_mb_mark_bb with flex_bg to prevent data aborts.

Related
Refs
Code
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

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

  script_cve_id("CVE-2022-49174");

  script_name(english:"Unity Linux 20.1070e Security Update: kernel (UTSA-2025-989595)");

  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-2025-989595 advisory.

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

    ext4: fix ext4_mb_mark_bb() with flex_bg with fast_commit

    In case of flex_bg feature (which is by default enabled), extents for
    any given inode might span across blocks from two different block group.
    ext4_mb_mark_bb() only reads the buffer_head of block bitmap once for the
    starting block group, but it fails to read it again when the extent length
    boundary overflows to another block group. Then in this below loop it
    accesses memory beyond the block group bitmap buffer_head and results
    into a data abort.

            for (i = 0; i < clen; i++)
                    if (!mb_test_bit(blkoff + i, bitmap_bh->b_data) == !state)
                            already++;

    This patch adds this functionality for checking block group boundary in
    ext4_mb_mark_bb() and update the buffer_head(bitmap_bh) for every different
    block group.

    w/o this patch, I was easily able to hit a data access abort using Power platform.

    <...>
    [   74.327662] EXT4-fs error (device loop3): ext4_mb_generate_buddy:1141: group 11, block bitmap and bg
    descriptor inconsistent: 21248 vs 23294 free clusters
    [   74.533214] EXT4-fs (loop3): shut down requested (2)
    [   74.536705] Aborting journal on device loop3-8.
    [   74.702705] BUG: Unable to handle kernel data access on read at 0xc00000005e980000
    [   74.703727] Faulting instruction address: 0xc0000000007bffb8
    cpu 0xd: Vector: 300 (Data Access) at [c000000015db7060]
        pc: c0000000007bffb8: ext4_mb_mark_bb+0x198/0x5a0
        lr: c0000000007bfeec: ext4_mb_mark_bb+0xcc/0x5a0
        sp: c000000015db7300
       msr: 800000000280b033
       dar: c00000005e980000
     dsisr: 40000000
      current = 0xc000000027af6880
      paca    = 0xc00000003ffd5200   irqmask: 0x03   irq_happened: 0x01
        pid   = 5167, comm = mount
    <...>
    enter ? for help
    [c000000015db7380] c000000000782708 ext4_ext_clear_bb+0x378/0x410
    [c000000015db7400] c000000000813f14 ext4_fc_replay+0x1794/0x2000
    [c000000015db7580] c000000000833f7c do_one_pass+0xe9c/0x12a0
    [c000000015db7710] c000000000834504 jbd2_journal_recover+0x184/0x2d0
    [c000000015db77c0] c000000000841398 jbd2_journal_load+0x188/0x4a0
    [c000000015db7880] c000000000804de8 ext4_fill_super+0x2638/0x3e10
    [c000000015db7a40] c0000000005f8404 get_tree_bdev+0x2b4/0x350
    [c000000015db7ae0] c0000000007ef058 ext4_get_tree+0x28/0x40
    [c000000015db7b00] c0000000005f6344 vfs_get_tree+0x44/0x100
    [c000000015db7b70] c00000000063c408 path_mount+0xdd8/0xe70
    [c000000015db7c40] c00000000063c8f0 sys_mount+0x450/0x550
    [c000000015db7d50] c000000000035770 system_call_exception+0x4a0/0x4e0
    [c000000015db7e10] c00000000000c74c system_call_common+0xec/0x250

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-2025-989595
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?f21dbe07");
  # https://lore.kernel.org/linux-cve-announce/2025022613-CVE-2022-49174-b971@gregkh
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?604c3c9e");
  script_set_attribute(attribute:"see_also", value:"https://nvd.nist.gov/vuln/detail/CVE-2022-49174");
  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-2022-49174");

  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:"2023/07/19");
  script_set_attribute(attribute:"patch_publication_date", value:"2025/11/05");
  script_set_attribute(attribute:"plugin_publication_date", value:"2025/11/05");

  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) 2025 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.1070e([^0-9]|$)", string:os_version)) audit(AUDIT_OS_NOT, 'UOS Server 20.1070e', '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': '1070e',
    'pkgs': [
      {'reference':'kernel-5.10.0-79.4.2', 'sp':'1070e', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'kernel-5.10.0-79.4.2', 'sp':'1070e', 'cpu':'amd64', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'kernel-5.10.0-79.4.2', 'sp':'1070e', '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

05 Nov 2025 00:00Current
5.7Medium risk
Vulners AI Score5.7
CVSS 3.15.5
EPSS0.00252
5