Lucene search
+L

Siemens RUGGEDCOM RST2428P Improper Input Validation (CVE-2026-23025)

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

Siemens RUGGEDCOM RST2428P has improper input validation (CVE-2026-23025); kernel fixes page corruption when smp off.

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

include('compat.inc');

if (description)
{
  script_id(505443);
  script_version("1.3");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/07/17");

  script_cve_id("CVE-2026-23025");
  script_xref(name:"ICSA", value:"26-188-05");

  script_name(english:"Siemens RUGGEDCOM RST2428P Improper Input Validation (CVE-2026-23025)");

  script_set_attribute(attribute:"synopsis", value:
"The remote OT asset is affected by a vulnerability.");
  script_set_attribute(attribute:"description", value:
"In the Linux kernel, the following vulnerability has been resolved:
mm/page_alloc: prevent pcp corruption with SMP=n    The kernel test
robot has reported:     BUG: spinlock trylock failure on UP on CPU#0,
kcompactd0/28    lock: 0xffff888807e35ef0, .magic: dead4ead, .owner:
kcompactd0/28, .owner_cpu: 0   CPU: 0 UID: 0 PID: 28 Comm: kcompactd0
Not tainted 6.18.0-rc5-00127-ga06157804399 #1 PREEMPT
8cc09ef94dcec767faa911515ce9e609c45db470   Call Trace:    <IRQ>
__dump_stack (lib/dump_stack.c:95)    dump_stack_lvl
(lib/dump_stack.c:123)    dump_stack (lib/dump_stack.c:130)
spin_dump (kernel/locking/spinlock_debug.c:71)    do_raw_spin_trylock
(kernel/locking/spinlock_debug.c:?)    _raw_spin_trylock
(include/linux/spinlock_api_smp.h:89 kernel/locking/spinlock.c:138)
__free_frozen_pages (mm/page_alloc.c:2973)    ___free_pages
(mm/page_alloc.c:5295)    __free_pages (mm/page_alloc.c:5334)
tlb_remove_table_rcu (include/linux/mm.h:? include/linux/mm.h:3122
include/asm-generic/tlb.h:220 mm/mmu_gather.c:227 mm/mmu_gather.c:290)
? __cfi_tlb_remove_table_rcu (mm/mmu_gather.c:289)    ? rcu_core
(kernel/rcu/tree.c:?)    rcu_core (include/linux/rcupdate.h:341
kernel/rcu/tree.c:2607 kernel/rcu/tree.c:2861)    rcu_core_si
(kernel/rcu/tree.c:2879)    handle_softirqs
(arch/x86/include/asm/jump_label.h:36 include/trace/events/irq.h:142
kernel/softirq.c:623)    __irq_exit_rcu
(arch/x86/include/asm/jump_label.h:36 kernel/softirq.c:725)
irq_exit_rcu (kernel/softirq.c:741)    sysvec_apic_timer_interrupt
(arch/x86/kernel/apic/apic.c:1052)    </IRQ>    <TASK>   RIP:
0010:_raw_spin_unlock_irqrestore (arch/x86/include/asm/preempt.h:95
include/linux/spinlock_api_smp.h:152 kernel/locking/spinlock.c:194)
free_pcppages_bulk (mm/page_alloc.c:1494)    drain_pages_zone
(include/linux/spinlock.h:391 mm/page_alloc.c:2632)
__drain_all_pages (mm/page_alloc.c:2731)    drain_all_pages
(mm/page_alloc.c:2747)    kcompactd (mm/compaction.c:3115)    kthread
(kernel/kthread.c:465)    ? __cfi_kcompactd (mm/compaction.c:3166)
? __cfi_kthread (kernel/kthread.c:412)    ret_from_fork
(arch/x86/kernel/process.c:164)    ? __cfi_kthread
(kernel/kthread.c:412)    ret_from_fork_asm
(arch/x86/entry/entry_64.S:255)    </TASK>    Matthew has analyzed the
report and identified that in drain_page_zone()  we are in a section
protected by spin_lock(&pcp->lock) and then get an  interrupt that
attempts spin_trylock() on the same lock.  The code is  designed to
work this way without disabling IRQs and occasionally fail the
trylock with a fallback.  However, the SMP=n spinlock implementation
assumes spin_trylock() will always succeed, and thus it's normally a
no-op.  Here the enabled lock debugging catches the problem, but
otherwise  it could cause a corruption of the pcp structure.    The
problem has been introduced by commit 574907741599 (mm/page_alloc:
leave IRQs enabled for per-cpu page allocations).  The pcp locking
scheme  recognizes the need for disabling IRQs to prevent nesting
spin_trylock()  sections on SMP=n, but the need to prevent the nesting
in spin_lock() has  not been recognized.  Fix it by introducing local
wrappers that change the  spin_lock() to spin_lock_iqsave() with SMP=n
and use them in all places  that do spin_lock(&pcp->lock).
[[email protected]: add pcp_ prefix to the spin_lock_irqsave wrappers,
per Steven]

This plugin only works with Tenable.ot.
Please visit https://www.tenable.com/products/tenable-ot for more information.");
  script_set_attribute(attribute:"see_also", value:"https://cert-portal.siemens.com/productcert/html/ssa-253495.html");
  script_set_attribute(attribute:"see_also", value:"https://support.industry.siemens.com/cs/ww/en/view/110002573/");
  script_set_attribute(attribute:"see_also", value:"https://www.cisa.gov/news-events/ics-advisories/ICSA-26-188-05");
  script_set_attribute(attribute:"solution", value:
"Refer to the vendor advisory.");
  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:L/PR:L/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-23025");

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

  script_set_attribute(attribute:"vuln_publication_date", value:"2026/01/31");
  script_set_attribute(attribute:"patch_publication_date", value:"2026/06/02");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/06/18");

  script_set_attribute(attribute:"plugin_type", value:"remote");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:siemens:ruggedcom_rst2428p_firmware");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Tenable.ot");

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

  script_dependencies("tenable_ot_api_integration.nasl");
  script_require_keys("Tenable.ot/Siemens");

  exit(0);
}


include('tenable_ot_cve_funcs.inc');

get_kb_item_or_exit('Tenable.ot/Siemens');

var asset = tenable_ot::assets::get(vendor:'Siemens');

var vuln_cpes = {
    "cpe:/o:siemens:ruggedcom_rst2428p_firmware" :
        {"family" : "RuggedCom", "orderNumbers" : ['6GK6242-6PA00'], "versionEndExcluding" : "4.0"}
};

tenable_ot::cve::compare_and_report(asset:asset, cpes:vuln_cpes, severity:SECURITY_WARNING);

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 Jul 2026 00:00Current
6.7Medium risk
Vulners AI Score6.7
CVSS 3.17.8
EPSS0.00184
20