Lucene search
+L

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

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

Linux kernel KASAN out-of-bounds read in reuseport_select_sock due to RCU race freeing cBPF prog.

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

include('compat.inc');

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

  script_cve_id("CVE-2026-52910");

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

  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-099924 advisory.

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

    bpf: Free reuseport cBPF prog after RCU grace period.

    Eulgyu Kim reported the splat below with a repro. [0]

    The repro sets up a UDP reuseport group with a cBPF prog and
    replaces it with a new one while another thread is sending
    a UDP packet to the group.

    The reuseport prog is freed by sk_reuseport_prog_free().
    bpf_prog_put() is called for eBPF prog to destruct through
    multiple stages while cBPF prog is freed immediately by
    bpf_release_orig_filter() and bpf_prog_free().

    If a reuseport prog is detached from the setsockopt() path
    (reuseport_attach_prog() or reuseport_detach_prog()),
    sk_reuseport_prog_free() is called without waiting for RCU
    readers to complete, resulting in various bugs.

    Let's defer freeing the reuseport cBPF prog after one RCU
    grace period.

    Note eBPF prog is safe as is unless the fast path starts
    to touch fields destroyed in bpf_prog_put_deferred() and
    __bpf_prog_put_noref().

    [0]:
    BUG: KASAN: vmalloc-out-of-bounds in reuseport_select_sock+0xedc/0x1220 net/core/sock_reuseport.c:596
    Read of size 4 at addr ffffc9000051e004 by task slowme/10208
    CPU: 6 UID: 1000 PID: 10208 Comm: slowme Not tainted 7.0.0-geb7ac95ff75e #32 PREEMPT(full)
    Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2
    04/01/2014
    Call Trace:
     <IRQ>
     dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:378 [inline]
     print_report+0xca/0x240 mm/kasan/report.c:482
     kasan_report+0x118/0x150 mm/kasan/report.c:595
     reuseport_select_sock+0xedc/0x1220 net/core/sock_reuseport.c:596
     udp4_lib_lookup2+0x3bc/0x950 net/ipv4/udp.c:495
     __udp4_lib_lookup+0x768/0xe20 net/ipv4/udp.c:723
     __udp4_lib_lookup_skb+0x297/0x390 net/ipv4/udp.c:752
     __udp4_lib_rcv+0x1312/0x2620 net/ipv4/udp.c:2752
     ip_protocol_deliver_rcu+0x282/0x440 net/ipv4/ip_input.c:207
     ip_local_deliver_finish+0x3bb/0x6f0 net/ipv4/ip_input.c:241
     NF_HOOK+0x30c/0x3a0 include/linux/netfilter.h:318
     NF_HOOK+0x30c/0x3a0 include/linux/netfilter.h:318
     __netif_receive_skb_one_core net/core/dev.c:6181 [inline]
     __netif_receive_skb net/core/dev.c:6294 [inline]
     process_backlog+0xaa4/0x1960 net/core/dev.c:6645
     __napi_poll+0xae/0x340 net/core/dev.c:7709
     napi_poll net/core/dev.c:7772 [inline]
     net_rx_action+0x5d7/0xf50 net/core/dev.c:7929
     handle_softirqs+0x22b/0x870 kernel/softirq.c:622
     do_softirq+0x76/0xd0 kernel/softirq.c:523
     </IRQ>
     <TASK>
     __local_bh_enable_ip+0xf8/0x130 kernel/softirq.c:450
     local_bh_enable include/linux/bottom_half.h:33 [inline]
     rcu_read_unlock_bh include/linux/rcupdate.h:924 [inline]
     __dev_queue_xmit+0x1dd7/0x3710 net/core/dev.c:4890
     neigh_output include/net/neighbour.h:556 [inline]
     ip_finish_output2+0xca9/0x1070 net/ipv4/ip_output.c:237
     NF_HOOK_COND include/linux/netfilter.h:307 [inline]
     ip_output+0x29f/0x450 net/ipv4/ip_output.c:438
     ip_send_skb+0x45/0xc0 net/ipv4/ip_output.c:1508
     udp_send_skb+0xb04/0x1510 net/ipv4/udp.c:1195
     udp_sendmsg+0x1a71/0x2350 net/ipv4/udp.c:1485
     sock_sendmsg_nosec net/socket.c:727 [inline]
     __sock_sendmsg net/socket.c:742 [inline]
     __sys_sendto+0x554/0x680 net/socket.c:2206
     __do_sys_sendto net/socket.c:2213 [inline]
     __se_sys_sendto net/socket.c:2209 [inline]
     __x64_sys_sendto+0xde/0x100 net/socket.c:2209
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0x160/0xf80 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x415a2d
    Code: b3 66 2e 0f 1f 84 00 00 00 00 00 66 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d
    89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f6bc31e41e8 EFLAGS: 00000212 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007f6bc31e4cdc RCX: 0000000000415a2d
    RDX: 0000000000000001 RSI: 00007f6bc31e421f RDI: 0000000000000003
    RBP: 00007f6bc31e4240 R08: 00007f6bc31e4220 R09: 0000000000000010
    R10: 0000000000000000 R11:
    ---truncated---

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-099924
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?7e56b427");
  # https://lore.kernel.org/linux-cve-announce/2026061934-CVE-2026-52910-aef2@gregkh
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?83c605a7");
  script_set_attribute(attribute:"see_also", value:"https://nvd.nist.gov/vuln/detail/CVE-2026-52910");
  script_set_attribute(attribute:"solution", value:
"Update the affected kernel package.");
  script_set_cvss_base_vector("CVSS2#AV:L/AC:L/Au:S/C:C/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:H/PR:H/UI:N/S:U/C:H/I:H/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-52910");

  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/06/19");
  script_set_attribute(attribute:"patch_publication_date", value:"2026/08/13");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/08/17");

  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-5.10.0-27.18.uel20', 'sp':'1050e', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'kernel-5.10.0-27.18.uel20', 'sp':'1050e', 'cpu':'amd64', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'kernel-5.10.0-27.18.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

17 Aug 2026 00:00Current
5.2Medium risk
Vulners AI Score5.2
CVSS 3.17.8
EPSS0.00104
8