First published: Wed Aug 18 2010(Updated: )
Description of problem: This series closes a recently discovered problem in XFS filehandle conversion. On systems where inodes are dynamically deleted, XFS does not adequately verify the inode numbers in the filehandles, which results in reading stale inodes from disk and potentially returning them as valid files. Because these unlinked inodes were never zeroed out when the chunk was deallocated, some inodes in the chunk can still appear to have to data extents attached to them. This can lead to stale data exposure, exposure of active data and potentially overwriting of active data if the stale extents referenced in the unlinked inodes have been re-allocated. Both NFS filehandles and local filehandles provided through libhandle have this same problem. libhandle requires root permissions to use the interface, so it is not exposing information that you can't get more easily with other means (e.g. xfs_db or reading directly form the block device), so there isn't really an issue here. For NFS, we may incorrectly accept stale file handles for unlinked inodes after a server reboot if the unlinked inodes have not been overwritten leading to the above issues being triggered if multiple NFS clients are accessing the same files. Christoph's make-bulkstat-coherent patch is the basis for this series as bulkstat can also expose unlinked inodes and information about them back to userspace as it makes the same assumptions about inode lookups as the file handle interfaces. As a result, the first two patches of the series make up the real bug fix. The last two patches make it clear we are lookuping up untrusted inode numbers and clear away a shortcut that these interfaces used that we do not want used any more. Hence for backports to other kernels, only the first two patches are necessary. The test program that demonstrates the issue via the open_by_handle interface can be found here: <a href="http://oss.sgi.com/archives/xfs/2010-06/msg00191.html">http://oss.sgi.com/archives/xfs/2010-06/msg00191.html</a> Version 2: - removed useless ip->i_imap.im_blkno initialisation in xfs_iread() - reworked a comment refering to bulkstat when it should refer to untrusted inodes. - removed typedefs from xfs_imap_lookup() - killed useless error logging from xfs_imap_lookup() - rearranged the logic flow of xfs_imap_lookup() to remove the gotos. [PATCH 0/4, V2] xfs: validate inode numbers in file handles correctly <a href="http://article.gmane.org/gmane.comp.file-systems.xfs.general/33767">http://article.gmane.org/gmane.comp.file-systems.xfs.general/33767</a> [PATCH 1/4] xfs: always use iget in bulkstat <a href="http://article.gmane.org/gmane.comp.file-systems.xfs.general/33770">http://article.gmane.org/gmane.comp.file-systems.xfs.general/33770</a> [PATCH 2/4] xfs: validate untrusted inode numbers during lookup <a href="http://article.gmane.org/gmane.comp.file-systems.xfs.general/33771">http://article.gmane.org/gmane.comp.file-systems.xfs.general/33771</a> [PATCH 3/4] xfs: rename XFS_IGET_BULKSTAT to XFS_IGET_UNTRUSTED <a href="http://article.gmane.org/gmane.comp.file-systems.xfs.general/33768">http://article.gmane.org/gmane.comp.file-systems.xfs.general/33768</a> [PATCH 4/4] xfs: remove block number from inode lookup code <a href="http://article.gmane.org/gmane.comp.file-systems.xfs.general/33769">http://article.gmane.org/gmane.comp.file-systems.xfs.general/33769</a> [PATCH] xfsqa: test open_by_handle() on unlinked and freed inode cluster <a href="http://oss.sgi.com/archives/xfs/2010-06/msg00191.html">http://oss.sgi.com/archives/xfs/2010-06/msg00191.html</a>
Credit: secalert@redhat.com secalert@redhat.com
Affected Software | Affected Version | How to fix |
---|---|---|
Linux Linux kernel | <2.6.35 | |
Canonical Ubuntu Linux | =10.10 | |
Canonical Ubuntu Linux | =9.10 | |
Canonical Ubuntu Linux | =10.04 | |
Canonical Ubuntu Linux | =6.06 | |
VMware ESX | =4.1 | |
VMware ESX | =4.0 | |
Avaya Aura System Manager | =6.0 | |
Avaya Aura System Manager | =5.2 | |
Avaya Aura Communication Manager | =5.2 | |
Avaya Aura System Platform | =1.1 | |
Avaya Aura System Platform | =6.0 | |
Avaya Aura System Platform | =6.0-sp1 | |
Avaya Aura System Manager | =6.1 | |
Avaya Aura System Manager | =6.1.1 | |
Avaya Aura Session Manager | =1.1 | |
Avaya Aura Session Manager | =5.2 | |
Avaya Aura Session Manager | =6.0 | |
Avaya Aura Presence Services | =6.1 | |
Avaya Aura Presence Services | =6.1.1 | |
Avaya Aura Presence Services | =6.0 | |
Avaya Iq | =5.1 | |
Avaya Iq | =5.0 | |
Avaya Aura Voice Portal | =5.0 | |
Avaya Aura Voice Portal | =5.1 | |
Avaya Aura Voice Portal | =5.1-sp1 | |
debian/linux-2.6 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.