lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025090449-CVE-2025-38691-8a2e@gregkh>
Date: Thu,  4 Sep 2025 17:32:56 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2025-38691: pNFS: Fix uninited ptr deref in block/scsi layout

From: Greg Kroah-Hartman <gregkh@...nel.org>

Description
===========

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

pNFS: Fix uninited ptr deref in block/scsi layout

The error occurs on the third attempt to encode extents. When function
ext_tree_prepare_commit() reallocates a larger buffer to retry encoding
extents, the "layoutupdate_pages" page array is initialized only after the
retry loop. But ext_tree_free_commitdata() is called on every iteration
and tries to put pages in the array, thus dereferencing uninitialized
pointers.

An additional problem is that there is no limit on the maximum possible
buffer_size. When there are too many extents, the client may create a
layoutcommit that is larger than the maximum possible RPC size accepted
by the server.

During testing, we observed two typical scenarios. First, one memory page
for extents is enough when we work with small files, append data to the
end of the file, or preallocate extents before writing. But when we fill
a new large file without preallocating, the number of extents can be huge,
and counting the number of written extents in ext_tree_encode_commit()
does not help much. Since this number increases even more between
unlocking and locking of ext_tree, the reallocated buffer may not be
large enough again and again.

The Linux kernel CVE team has assigned CVE-2025-38691 to this issue.


Affected and fixed versions
===========================

	Fixed in 5.4.297 with commit 579b85f893d9885162e1cabf99a4a088916e143e
	Fixed in 5.10.241 with commit 2896f101110076ac6bf99d7aaf463d61e26f89dd
	Fixed in 5.15.190 with commit 4f783333cbfa2ee7d4aa8e47f6bd1b3f77534fcf
	Fixed in 6.1.149 with commit 9be5c04beca3202d0a5f09fb4b2ecb644caa0bc5
	Fixed in 6.6.103 with commit 24334f3cf8a294f253071b5bf22d754dbb6d0f2d
	Fixed in 6.12.43 with commit f0b2eee3fbba9b7e3746ef698424ef5e4a197776
	Fixed in 6.15.11 with commit 94ec6d939031a616474376dadbf4a8d0ef8b0bcc
	Fixed in 6.16.2 with commit 37c3443a2685528f972d910a6fb87716b96fef46
	Fixed in 6.17-rc1 with commit 9768797c219326699778fba9cd3b607b2f1e7950

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2025-38691
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	fs/nfs/blocklayout/extent_tree.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/579b85f893d9885162e1cabf99a4a088916e143e
	https://git.kernel.org/stable/c/2896f101110076ac6bf99d7aaf463d61e26f89dd
	https://git.kernel.org/stable/c/4f783333cbfa2ee7d4aa8e47f6bd1b3f77534fcf
	https://git.kernel.org/stable/c/9be5c04beca3202d0a5f09fb4b2ecb644caa0bc5
	https://git.kernel.org/stable/c/24334f3cf8a294f253071b5bf22d754dbb6d0f2d
	https://git.kernel.org/stable/c/f0b2eee3fbba9b7e3746ef698424ef5e4a197776
	https://git.kernel.org/stable/c/94ec6d939031a616474376dadbf4a8d0ef8b0bcc
	https://git.kernel.org/stable/c/37c3443a2685528f972d910a6fb87716b96fef46
	https://git.kernel.org/stable/c/9768797c219326699778fba9cd3b607b2f1e7950

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ