Re: [PATCH] cifs: Fix buffer overflow when parsing NFS reparse points

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

 



Pali Rohár <pali@xxxxxxxxxx> writes:

> On Friday 22 November 2024 14:44:10 Mahmoud Adam wrote:
>> From: Pali Rohár <pali@xxxxxxxxxx>
>> 
>> upstream e2a8910af01653c1c268984855629d71fb81f404 commit.
>> 
>> ReparseDataLength is sum of the InodeType size and DataBuffer size.
>> So to get DataBuffer size it is needed to subtract InodeType's size from
>> ReparseDataLength.
>> 
>> Function cifs_strndup_from_utf16() is currentlly accessing buf->DataBuffer
>> at position after the end of the buffer because it does not subtract
>> InodeType size from the length. Fix this problem and correctly subtract
>> variable len.
>> 
>> Member InodeType is present only when reparse buffer is large enough. Check
>> for ReparseDataLength before accessing InodeType to prevent another invalid
>> memory access.
>> 
>> Major and minor rdev values are present also only when reparse buffer is
>> large enough. Check for reparse buffer size before calling reparse_mkdev().
>> 
>> Fixes: d5ecebc4900d ("smb3: Allow query of symlinks stored as reparse points")
>> Reviewed-by: Paulo Alcantara (Red Hat) <pc@xxxxxxxxxxxxx>
>> Signed-off-by: Pali Rohár <pali@xxxxxxxxxx>
>> Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
>> [use variable name symlink_buf, the other buf->InodeType accesses are
>> not used in current version so skip]
>> Signed-off-by: Mahmoud Adam <mngyadam@xxxxxxxxxx>
>> ---
>> This fixes CVE-2024-49996, and applies cleanly on 5.4->6.1, 6.6 and
>> later already has the fix.
>
> Interesting... I have not know that there is CVE number for this issue.
> Have you asked for assigning CVE number? Or was it there before?
>
Nope, It was assigned a CVE here:
 https://lore.kernel.org/all/2024102138-CVE-2024-49996-0d29@gregkh/

-MNAdam





[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux