Re: [PATCH] scsi: esas2r: fix possible buffer overflow caused by bad DMA value in esas2r_process_fs_ioctl()

From: Jia-Ju Bai
Date: Sun Aug 02 2020 - 23:08:25 EST




On 2020/8/2 23:47, James Bottomley wrote:
On Sun, 2020-08-02 at 23:21 +0800, Jia-Ju Bai wrote:
Because "fs" is mapped to DMA, its data can be modified at anytime by
malicious or malfunctioning hardware. In this case, the check
"if (fsc->command >= cmdcnt)" can be passed, and then "fsc->command"
can be modified by hardware to cause buffer overflow.
This threat model seems to be completely bogus. If the device were
malicious it would have given the mailbox incorrect values a priori ...
it wouldn't give the correct value then update it. For most systems we
do assume correct operation of the device but if there's a worry about
incorrect operation, the usual approach is to guard the device with an
IOMMU which, again, would make this sort of fix unnecessary because the
IOMMU will have removed access to the buffer after the command
completed.

Thanks for the reply :)

In my opinion, IOMMU is used to prevent the hardware from accessing arbitrary memory addresses, but it cannot prevent the hardware from writing a bad value into a valid memory address.
For this reason, I think that the hardware can normally access "fsc->command" and modify it into arbitrary value at any time, because IOMMU considers the address of "fsc->command" is valid for the hardware.


Best wishes,
Jia-Ju Bai