All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pankaj Gupta <pankaj.gupta@ionos.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
	virtio-dev@lists.oasis-open.org, stefanha@redhat.com,
	Dan Williams <dan.j.williams@intel.com>,
	David Hildenbrand <david@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Taylor Stark <tstark@linux.microsoft.com>
Subject: Re: [PATCH v5] virtio-pmem: PMEM device spec
Date: Wed, 6 Oct 2021 09:19:48 +0200	[thread overview]
Message-ID: <CALzYo31zpLsDSsW4Aij9jMSnJKv9==+iEPdOhm7my7maztQmBQ@mail.gmail.com> (raw)
In-Reply-To: <874k9u1vf5.fsf@redhat.com>

> > Posting virtio specification for virtio pmem device. Virtio pmem is a
> > paravirtualized device which allows the guest to bypass page cache.
> > Virtio pmem kernel driver is merged in Upstream Kernel 5.3. Also, Qemu
> > device is merged in Qemu 4.1.
> >
> > Signed-off-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
> > ---
> >
> > Incorporated all the suggestions during the review. Request for
> > merging the spec.
> >
> > v3 -> v4
> >   Text format changes in security implication section - Stefan
> >   Minor text/while space change - Cornelia
> >
> >  conformance.tex |  16 +++++-
> >  content.tex     |   1 +
> >  virtio-pmem.tex | 128 ++++++++++++++++++++++++++++++++++++++++++++++++
> >  3 files changed, 143 insertions(+), 2 deletions(-)
> >  create mode 100644 virtio-pmem.tex
> >
>
> (...)
>
> > +\subsection{Possible security implications}\label{sec:Device Types / PMEM Device / Possible Security Implications}
> > +
> > +There could be potential security implications depending on how
> > +memory mapped backing device is used. By default device emulation
> > +is done with SHARED memory mapping. There is a contract between driver
> > +and device to access shared memory region for read or write operations.
> > +
> > +If a malicious driver or device maps the same memory region, the attacker
> > +can make use of known side channel attacks to predict the current state of data.
> > +If both attacker and victim somehow execute same shared code after a flush
> > +or evict operation, with difference in execution timing attacker could infer
> > +another device's data.
> > +
> > +\subsection{Countermeasures}\label{sec:Device Types / PMEM Device / Possible Security Implications / Countermeasures}
> > +
> > +\subsubsection{ With SHARED mapping}\label{sec:Device Types / PMEM Device / Possible Security Implications / Countermeasures / SHARED}
>
> Nit: drop the space after the opening bracket (also below.)

o.k

>
> > +
> > +If a device's backing region is shared between multiple devices, this may act
> > +as a metric for side channel attacks. As a counter measure every device
> > +should have its own (not shared with another driver) SHARED backing memory.
> > +
> > +\subsubsection{ With PRIVATE mapping}\label{sec:Device Types / PMEM Device / Possible Security Implications / Countermeasures / PRIVATE}
> > +There maybe be chances of side channels attack with PRIVATE
> > +memory mapping similar to SHARED with read-only shared mappings.
> > +PRIVATE is not used for virtio pmem making this usecase
> > +irrelevant.
> > +
> > +\subsubsection{ Workload specific mapping}\label{sec:Device Types / PMEM Device / Possible Security Implications / Countermeasures / Workload}
> > +For SHARED mappings, for the workload is a single application inside
> > +the driver and there is no risk in sharing data. Device sharing
>
> Sorry for noticing this only now, but I have trouble parsing this
> sentence. Does it mean that you can use SHARED mapping if the workload
> is a single application?

yes and if risk in sharing data is very less or acceptable.

>
> > +same backing region with SHARED mapping can be used as a valid configuration.
> > +
> > +\subsubsection{ Prevent cache eviction}\label{sec:Device Types / PMEM Device / Possible Security Implications / Countermeasures / Cache eviction}
> > +Don't allow device shared region eviction from driver filesystem trim or discard
> > +like commands with virtio pmem. This rules out any possibility of evict-reload
> > +cache side channel attacks if backing region is shared (SHARED)
> > +between mutliple devices. Though if we use per device backing file with
> > +shared mapping this countermeasure is not required.
>


  reply	other threads:[~2021-10-06  7:19 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-06  6:21 [PATCH v5] virtio-pmem: PMEM device spec Pankaj Gupta
2021-10-06  7:09 ` [virtio-dev] " Cornelia Huck
2021-10-06  7:19   ` Pankaj Gupta [this message]
2021-10-06  7:21   ` Pankaj Gupta
2021-10-06  8:34     ` Cornelia Huck
2021-10-06 10:02       ` Pankaj Gupta
2021-10-06 10:17         ` Cornelia Huck
2021-10-06 10:24           ` Pankaj Gupta
2021-10-06  9:17 ` [virtio-dev] " Stefan Hajnoczi

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='CALzYo31zpLsDSsW4Aij9jMSnJKv9==+iEPdOhm7my7maztQmBQ@mail.gmail.com' \
    --to=pankaj.gupta@ionos.com \
    --cc=cohuck@redhat.com \
    --cc=dan.j.williams@intel.com \
    --cc=david@redhat.com \
    --cc=mst@redhat.com \
    --cc=pankaj.gupta.linux@gmail.com \
    --cc=stefanha@redhat.com \
    --cc=tstark@linux.microsoft.com \
    --cc=virtio-dev@lists.oasis-open.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.