Patch "fs/ntfs3: Add overflow check for attribute size" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    fs/ntfs3: Add overflow check for attribute size

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     fs-ntfs3-add-overflow-check-for-attribute-size.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit cd4d9126f0300f4c22edb72020555737e1657a25
Author: edward lo <edward.lo@xxxxxxxxxxxxx>
Date:   Mon Aug 1 18:20:51 2022 +0800

    fs/ntfs3: Add overflow check for attribute size
    
    [ Upstream commit e19c6277652efba203af4ecd8eed4bd30a0054c9 ]
    
    The offset addition could overflow and pass the used size check given an
    attribute with very large size (e.g., 0xffffff7f) while parsing MFT
    attributes. This could lead to out-of-bound memory R/W if we try to
    access the next attribute derived by Add2Ptr(attr, asize)
    
    [   32.963847] BUG: unable to handle page fault for address: ffff956a83c76067
    [   32.964301] #PF: supervisor read access in kernel mode
    [   32.964526] #PF: error_code(0x0000) - not-present page
    [   32.964893] PGD 4dc01067 P4D 4dc01067 PUD 0
    [   32.965316] Oops: 0000 [#1] PREEMPT SMP NOPTI
    [   32.965727] CPU: 0 PID: 243 Comm: mount Not tainted 5.19.0+ #6
    [   32.966050] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
    [   32.966628] RIP: 0010:mi_enum_attr+0x44/0x110
    [   32.967239] Code: 89 f0 48 29 c8 48 89 c1 39 c7 0f 86 94 00 00 00 8b 56 04 83 fa 17 0f 86 88 00 00 00 89 d0 01 ca 48 01 f0 8d 4a 08 39 f9a
    [   32.968101] RSP: 0018:ffffba15c06a7c38 EFLAGS: 00000283
    [   32.968364] RAX: ffff956a83c76067 RBX: ffff956983c76050 RCX: 000000000000006f
    [   32.968651] RDX: 0000000000000067 RSI: ffff956983c760e8 RDI: 00000000000001c8
    [   32.968963] RBP: ffffba15c06a7c38 R08: 0000000000000064 R09: 00000000ffffff7f
    [   32.969249] R10: 0000000000000007 R11: ffff956983c760e8 R12: ffff95698225e000
    [   32.969870] R13: 0000000000000000 R14: ffffba15c06a7cd8 R15: ffff95698225e170
    [   32.970655] FS:  00007fdab8189e40(0000) GS:ffff9569fdc00000(0000) knlGS:0000000000000000
    [   32.971098] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   32.971378] CR2: ffff956a83c76067 CR3: 0000000002c58000 CR4: 00000000000006f0
    [   32.972098] Call Trace:
    [   32.972842]  <TASK>
    [   32.973341]  ni_enum_attr_ex+0xda/0xf0
    [   32.974087]  ntfs_iget5+0x1db/0xde0
    [   32.974386]  ? slab_post_alloc_hook+0x53/0x270
    [   32.974778]  ? ntfs_fill_super+0x4c7/0x12a0
    [   32.975115]  ntfs_fill_super+0x5d6/0x12a0
    [   32.975336]  get_tree_bdev+0x175/0x270
    [   32.975709]  ? put_ntfs+0x150/0x150
    [   32.975956]  ntfs_fs_get_tree+0x15/0x20
    [   32.976191]  vfs_get_tree+0x2a/0xc0
    [   32.976374]  ? capable+0x19/0x20
    [   32.976572]  path_mount+0x484/0xaa0
    [   32.977025]  ? putname+0x57/0x70
    [   32.977380]  do_mount+0x80/0xa0
    [   32.977555]  __x64_sys_mount+0x8b/0xe0
    [   32.978105]  do_syscall_64+0x3b/0x90
    [   32.978830]  entry_SYSCALL_64_after_hwframe+0x63/0xcd
    [   32.979311] RIP: 0033:0x7fdab72e948a
    [   32.980015] Code: 48 8b 0d 11 fa 2a 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 49 89 ca b8 a5 00 00 008
    [   32.981251] RSP: 002b:00007ffd15b87588 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
    [   32.981832] RAX: ffffffffffffffda RBX: 0000557de0aaf060 RCX: 00007fdab72e948a
    [   32.982234] RDX: 0000557de0aaf260 RSI: 0000557de0aaf2e0 RDI: 0000557de0ab7ce0
    [   32.982714] RBP: 0000000000000000 R08: 0000557de0aaf280 R09: 0000000000000020
    [   32.983046] R10: 00000000c0ed0000 R11: 0000000000000206 R12: 0000557de0ab7ce0
    [   32.983494] R13: 0000557de0aaf260 R14: 0000000000000000 R15: 00000000ffffffff
    [   32.984094]  </TASK>
    [   32.984352] Modules linked in:
    [   32.984753] CR2: ffff956a83c76067
    [   32.985911] ---[ end trace 0000000000000000 ]---
    [   32.986555] RIP: 0010:mi_enum_attr+0x44/0x110
    [   32.987217] Code: 89 f0 48 29 c8 48 89 c1 39 c7 0f 86 94 00 00 00 8b 56 04 83 fa 17 0f 86 88 00 00 00 89 d0 01 ca 48 01 f0 8d 4a 08 39 f9a
    [   32.988232] RSP: 0018:ffffba15c06a7c38 EFLAGS: 00000283
    [   32.988532] RAX: ffff956a83c76067 RBX: ffff956983c76050 RCX: 000000000000006f
    [   32.988916] RDX: 0000000000000067 RSI: ffff956983c760e8 RDI: 00000000000001c8
    [   32.989356] RBP: ffffba15c06a7c38 R08: 0000000000000064 R09: 00000000ffffff7f
    [   32.989994] R10: 0000000000000007 R11: ffff956983c760e8 R12: ffff95698225e000
    [   32.990415] R13: 0000000000000000 R14: ffffba15c06a7cd8 R15: ffff95698225e170
    [   32.991011] FS:  00007fdab8189e40(0000) GS:ffff9569fdc00000(0000) knlGS:0000000000000000
    [   32.991524] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   32.991936] CR2: ffff956a83c76067 CR3: 0000000002c58000 CR4: 00000000000006f0
    
    This patch adds an overflow check
    
    Signed-off-by: edward lo <edward.lo@xxxxxxxxxxxxx>
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/ntfs3/record.c b/fs/ntfs3/record.c
index 7d2fac5ee215..9f81944441ae 100644
--- a/fs/ntfs3/record.c
+++ b/fs/ntfs3/record.c
@@ -220,6 +220,11 @@ struct ATTRIB *mi_enum_attr(struct mft_inode *mi, struct ATTRIB *attr)
 			return NULL;
 		}
 
+		if (off + asize < off) {
+			/* overflow check */
+			return NULL;
+		}
+
 		attr = Add2Ptr(attr, asize);
 		off += asize;
 	}



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux