All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yongji Xie <xieyongji@bytedance.com>
To: Max Gurtovoy <mgurtovoy@nvidia.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	virtualization <virtualization@lists.linux-foundation.org>,
	linux-block@vger.kernel.org,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v5] virtio-blk: Add validation for block size in config space
Date: Mon, 23 Aug 2021 18:33:14 +0800	[thread overview]
Message-ID: <CACycT3sxeUQa7+QA0CAx47Y3tVHKigcQEfEHWi04aWA5xbgA9A@mail.gmail.com> (raw)
In-Reply-To: <6d6154d7-7947-68be-4e1e-4c1d0a94b2bc@nvidia.com>

On Mon, Aug 23, 2021 at 5:38 PM Max Gurtovoy <mgurtovoy@nvidia.com> wrote:
>
>
> On 8/23/2021 12:27 PM, Yongji Xie wrote:
> > On Mon, Aug 23, 2021 at 5:04 PM Max Gurtovoy <mgurtovoy@nvidia.com> wrote:
> >>
> >> On 8/23/2021 11:35 AM, Yongji Xie wrote:
> >>> On Mon, Aug 23, 2021 at 4:07 PM Max Gurtovoy <mgurtovoy@nvidia.com> wrote:
> >>>> On 8/23/2021 7:31 AM, Yongji Xie wrote:
> >>>>> On Mon, Aug 23, 2021 at 7:17 AM Max Gurtovoy <mgurtovoy@nvidia.com> wrote:
> >>>>>> On 8/9/2021 1:16 PM, Xie Yongji wrote:
> >>>>>>> An untrusted device might presents an invalid block size
> >>>>>>> in configuration space. This tries to add validation for it
> >>>>>>> in the validate callback and clear the VIRTIO_BLK_F_BLK_SIZE
> >>>>>>> feature bit if the value is out of the supported range.
> >>>>>> This is not clear to me. What is untrusted device ? is it a buggy device ?
> >>>>>>
> >>>>> A buggy device, the devices in an encrypted VM, or a userspace device
> >>>>> created by VDUSE [1].
> >>>>>
> >>>>> [1] https://lore.kernel.org/kvm/20210818120642.165-1-xieyongji@bytedance.com/
> >>>> if it's a userspace device, why don't you fix its control path code
> >>>> instead of adding workarounds in the kernel driver ?
> >>>>
> >>> VDUSE kernel module would not touch (be aware of) the device specific
> >>> configuration space. It should be more reasonable to fix it in the
> >>> device driver. There is also some existing interface (.validate()) for
> >>> doing that.
> >> who is emulating the device configuration space ?
> >>
> > A userspace daemon will initialize the device configuration space and
> > pass the contents to the VDUSE kernel module. The VDUSE kernel module
> > will handle the access of the config space from the virtio device
> > driver, but it doesn't need to know the contents (although we can know
> > that).
>
> So you add a workaround in the guest kernel drivers instead of checking
> these quirks in the hypervisor ?
>

I didn't see any problem adding this validation in the device driver.

> VDUSE kernel should enforce the security for the devices it
> emulates/presents to the VM.
>

I agree that the VDUSE kernel should enforce the security for the
emulated devices. But I still think the virtio device driver should
handle this case since nobody can make sure the device can always set
the correct value. Adding this validation would be helpful.

> >>> And regardless of userspace device, we still need to fix it for other cases.
> >> which cases ? Do you know that there is a buggy HW we need to workaround ?
> >>
> > No, there isn't now. But this could be a potential attack surface if
> > the host doesn't trust the device.
>
> If the host doesn't trust a device, why it continues using it ?
>

IIUC this is the case for the encrypted VMs.

> Do you suggest we do these workarounds in all device drivers in the kernel ?
>

Isn't it the driver's job to validate some unreasonable configuration?

Thanks,
Yongji

  reply	other threads:[~2021-08-23 10:33 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-09 10:16 [PATCH v5] virtio-blk: Add validation for block size in config space Xie Yongji
2021-08-10  3:05 ` Jason Wang
2021-08-10  3:05   ` Jason Wang
2021-08-10  4:59   ` Yongji Xie
2021-08-10  6:59     ` Jason Wang
2021-08-10  6:59       ` Jason Wang
2021-08-22 23:17 ` Max Gurtovoy
2021-08-23  4:31   ` Yongji Xie
2021-08-23  8:07     ` Max Gurtovoy
2021-08-23  8:35       ` Yongji Xie
2021-08-23  9:04         ` Max Gurtovoy
2021-08-23  9:27           ` Yongji Xie
2021-08-23  9:38             ` Max Gurtovoy
2021-08-23 10:33               ` Yongji Xie [this message]
2021-08-23 10:45                 ` Max Gurtovoy
2021-08-23 11:41                   ` Yongji Xie
2021-08-23 12:13                   ` Michael S. Tsirkin
2021-08-23 12:13                     ` Michael S. Tsirkin
2021-08-23 12:40                     ` Yongji Xie
2021-08-23 16:02                       ` Michael S. Tsirkin
2021-08-23 16:02                         ` Michael S. Tsirkin
2021-08-23 22:31                     ` Max Gurtovoy
2021-08-24  2:47                       ` Jason Wang
2021-08-24  2:47                         ` Jason Wang
2021-08-24 10:11                         ` Max Gurtovoy
2021-08-24 12:52                           ` Yongji Xie
2021-08-24 13:30                             ` Max Gurtovoy
2021-08-24 13:38                               ` Yongji Xie
2021-08-24 13:48                                 ` Max Gurtovoy
2021-10-04 15:27 ` Michael S. Tsirkin
2021-10-04 15:27   ` Michael S. Tsirkin
2021-10-04 15:39   ` Michael S. Tsirkin
2021-10-04 15:39     ` Michael S. Tsirkin
2021-10-05 15:52     ` Yongji Xie
2021-10-05 10:42   ` Michael S. Tsirkin
2021-10-05 10:42     ` Michael S. Tsirkin
2021-10-05 15:45     ` Yongji Xie
2021-10-05 18:26     ` Martin K. Petersen
2021-10-05 18:26       ` Martin K. Petersen
2021-10-11 11:40     ` Christoph Hellwig
2021-10-11 11:40       ` Christoph Hellwig
2021-10-13 12:21       ` Michael S. Tsirkin
2021-10-13 12:21         ` Michael S. Tsirkin
2021-10-13 12:34         ` Yongji Xie
2021-10-13 12:51           ` Michael S. Tsirkin
2021-10-13 12:51             ` Michael S. Tsirkin
2021-10-13 12:59             ` Yongji Xie
2021-10-05 15:24   ` Yongji Xie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CACycT3sxeUQa7+QA0CAx47Y3tVHKigcQEfEHWi04aWA5xbgA9A@mail.gmail.com \
    --to=xieyongji@bytedance.com \
    --cc=jasowang@redhat.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgurtovoy@nvidia.com \
    --cc=mst@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.