Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate DIO orphan slot during inode read [BUG] A corrupted append-DIO dinode (high byte at offset 0xa1 corrupted from 0 to 1) can carry an i_dio_orphaned_slot outside the mounted filesystem slot range and trigger a use-after-free error: BUG: KASAN: slab-use-after-free in ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102 Read of size 8 at addr ffff88800b767c00 by task kworker/u8:3/85 Call Trace: ... ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102 ocfs2_wipe_inode+0x292/0xf70 fs/ocfs2/inode.c:840 ocfs2_delete_inode fs/ocfs2/inode.c:1155 [inline] ocfs2_evict_inode+0x6c9/0x1170 fs/ocfs2/inode.c:1295 evict+0x38e/0x8f0 fs/inode.c:810 iput_final fs/inode.c:1914 [inline] iput fs/inode.c:1966 [inline] iput+0x55b/0x8b0 fs/inode.c:1926 ocfs2_recover_orphans+0x610/0xe40 fs/ocfs2/journal.c:2374 ocfs2_complete_recovery+0x5af/0xd00 fs/ocfs2/journal.c:1373 ... [CAUSE] ocfs2_del_inode_from_orphan() uses i_dio_orphaned_slot to index the slot-local system inode cache. The dinode validator does not check this active slot, so an out-of-range value produces an invalid cache entry pointer that is dereferenced as an inode pointer. [FIX] Reject an active i_dio_orphaned_slot outside the slot range during dinode validation, before DIO orphan recovery can consume it.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 before eacdd27ca829747d4372fbae8617151072a4d1e5; affected 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 before 8f7a2c5cf23d437acab7f3e739bfcad0f443c554; affected 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 before e35fa6eb4d2a39f8049f62361a4b44930882b5f8; affected 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 before 418e0ae42fa769d354b15e62c01a00413024755b; affected 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 before bb88131c9831075b8dc08cdd375743e5d44c7ca2 |
| Linux / Linux | affected 4.0; unaffected 0 before 4.0; unaffected 6.6.160 through 6.6.*; unaffected 6.12.114 through 6.12.*; unaffected 6.18.52 through 6.18.*; unaffected 7.2.6 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/eacdd27ca829747d4372fbae8617151072a4d1e5
- https://git.kernel.org/stable/c/8f7a2c5cf23d437acab7f3e739bfcad0f443c554
- https://git.kernel.org/stable/c/e35fa6eb4d2a39f8049f62361a4b44930882b5f8
- https://git.kernel.org/stable/c/418e0ae42fa769d354b15e62c01a00413024755b
- https://git.kernel.org/stable/c/bb88131c9831075b8dc08cdd375743e5d44c7ca2