Siemens SIMATIC S7-1500 CPU 1518 MFP Use After Free (CVE-2025-39691)
10
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##
include('compat.inc');
if (description)
{
script_id(505640);
script_version("1.2");
script_set_attribute(attribute:"plugin_modification_date", value:"2026/07/29");
script_cve_id("CVE-2025-39691");
script_name(english:"Siemens SIMATIC S7-1500 CPU 1518 MFP Use After Free (CVE-2025-39691)");
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:
fs/buffer: fix use-after-free when call bh_read() helper There's
issue as follows: BUG: KASAN: stack-out-of-bounds in
end_buffer_read_sync+0xe3/0x110 Read of size 8 at addr
ffffc9000168f7f8 by task swapper/3/0 CPU: 3 UID: 0 PID: 0 Comm:
swapper/3 Not tainted 6.16.0-862.14.0.6.x86_64 Hardware name: QEMU
Standard PC (i440FX + PIIX, 1996) Call Trace: <IRQ>
dump_stack_lvl+0x55/0x70
print_address_description.constprop.0+0x2c/0x390
print_report+0xb4/0x270 kasan_report+0xb8/0xf0
end_buffer_read_sync+0xe3/0x110 end_bio_bh_io_sync+0x56/0x80
blk_update_request+0x30a/0x720 scsi_end_request+0x51/0x2b0
scsi_io_completion+0xe3/0x480 ? scsi_device_unbusy+0x11e/0x160
blk_complete_reqs+0x7b/0x90 handle_softirqs+0xef/0x370
irq_exit_rcu+0xa5/0xd0 sysvec_apic_timer_interrupt+0x6e/0x90
</IRQ> Above issue happens when do ntfs3 filesystem mount, issue
may happens as follows: mount
IRQ ntfs_fill_super read_cache_page do_read_cache_folio
filemap_read_folio mpage_read_folio
do_mpage_readpage ntfs_get_block_vbo bh_read
submit_bh wait_on_buffer(bh);
blk_complete_reqs
scsi_io_completion
scsi_end_request
blk_update_request
end_bio_bh_io_sync
end_buffer_read_sync
__end_buffer_read_notouch
unlock_buffer wait_on_buffer(bh);--> return will return
to caller put_bh
--> trigger stack-out-of-bounds In the mpage_read_folio() function,
the stack variable 'map_bh' is passed to ntfs_get_block_vbo(). Once
unlock_buffer() unlocks and wait_on_buffer() returns to continue
processing, the stack variable is likely to be reclaimed.
Consequently, during the end_buffer_read_sync() process, calling
put_bh() may result in stack overrun. If the bh is not allocated on
the stack, it belongs to a folio. Freeing a buffer head which
belongs to a folio is done by drop_buffers() which will fail to free
buffers which are still locked. So it is safe to call put_bh()
before __end_buffer_read_notouch().
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-019113.html");
script_set_attribute(attribute:"see_also", value:"https://cert-portal.siemens.com/productcert/html/ssa-032379.html");
script_set_attribute(attribute:"see_also", value:"https://support.industry.siemens.com/cs/ww/en/view/109814144/");
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-2025-39691");
script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
script_set_attribute(attribute:"exploit_available", value:"false");
script_cwe_id(416);
script_set_attribute(attribute:"vuln_publication_date", value:"2025/09/05");
script_set_attribute(attribute:"patch_publication_date", value:"2026/05/12");
script_set_attribute(attribute:"plugin_publication_date", value:"2026/07/27");
script_set_attribute(attribute:"plugin_type", value:"remote");
script_set_attribute(attribute:"cpe", value:"cpe:/o:siemens:simatic_s7-1500_cpu_firmware:3.1.6");
script_set_attribute(attribute:"cpe", value:"cpe:/o:siemens:siplus_s7-1500_cpu_firmware");
script_set_attribute(attribute:"generated_plugin", value:"former");
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:simatic_s7-1500_cpu_firmware:3.1.6" :
{"versionStartIncluding" : "3.1.6", "family" : "S71500", "orderNumbers" : ['6ES7518-4FX00-1AC0', '6ES7518-4AX00-1AB0', '6ES7518-4AX00-1AC0', '6ES7518-4FX00-1AB0']},
"cpe:/o:siemens:siplus_s7-1500_cpu_firmware" :
{"family" : "S71500", "orderNumbers" : ['6AG1518-4AX00-4AC0']}
};
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
29 Jul 2026 00:00Current
6.5Medium risk
Vulners AI Score6.5
CVSS 3.17.8
EPSS0.00162