Go to file
Christophe Fergeau a4a16ac42d memslot: Fix off-by-one error in group/slot boundary check
RedMemSlotInfo keeps an array of groups, and each group contains an
array of slots. Unfortunately, these checks are off by 1, they check
that the index is greater or equal to the number of elements in the
array, while these arrays are 0 based. The check should only check for
strictly greater than the number of elements.

For the group array, this is not a big issue, as these memslot groups
are created by spice-server users (eg QEMU), and the group ids used to
index that array are also generated by the spice-server user, so it
should not be possible for the guest to set them to arbitrary values.

The slot id is more problematic, as it's calculated from a QXLPHYSICAL
address, and such addresses are usually set by the guest QXL driver, so
the guest can set these to arbitrary values, including malicious values,
which are probably easy to build from the guest PCI configuration.

This patch fixes the arrays bound check, and adds a test case for this.
This fixes CVE-2019-3813.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-02-05 14:05:49 +01:00
build-aux Add support for building with meson/ninja 2018-08-30 11:10:45 -03:00
docs Add support for building with meson/ninja 2018-08-30 11:10:45 -03:00
m4 m4: Remove repeated warnings suppression 2019-02-01 08:48:08 +00:00
server memslot: Fix off-by-one error in group/slot boundary check 2019-02-05 14:05:49 +01:00
subprojects Allows to enable recorder integration 2019-01-23 14:51:00 +00:00
tests tests/migrate.py: add --vdagent 2011-08-23 17:01:14 +03:00
tools reds_stat: Use EXIT_SUCCESS/EXIT_FAILURE for program result 2018-12-23 17:04:01 +00:00
uncrustify_cfg fresh start 2009-10-14 15:06:41 +02:00
.gitignore docs: Add some documentation on spice threading model 2017-09-11 18:03:57 +01:00
.gitlab-ci.yml ci: Remove dependencies from copr build 2019-01-23 19:15:44 +00:00
.gitmodules build: Move spice-common to subprojects/ directory 2018-07-23 14:49:19 -03:00
.mailmap syntax-check: Fix missing AUTHORS 2016-12-05 13:48:28 +00:00
.travis.yml Add travis CI file 2015-11-27 20:21:24 +01:00
AUTHORS syntax-check: Add missing contributors names to AUTHORS 2018-09-19 20:31:31 +01:00
autogen.sh build-sys: Pass --enable-python-checks when running autogen.sh 2015-04-23 10:38:24 +02:00
cfg.mk build-sys: Add make check-valgrind target 2017-03-21 16:34:56 +01:00
ChangeLog fresh start 2009-10-14 15:06:41 +02:00
configure.ac build-sys: Raise glib requirement to 2.38 2019-02-05 14:04:58 +01:00
COPYING Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
GNUmakefile syntax-check: Update gnufiles 2016-11-18 12:06:53 +00:00
maint.mk syntax-check: Update gnufiles 2016-11-18 12:06:53 +00:00
Makefile.am Add support for building with meson/ninja 2018-08-30 11:10:45 -03:00
meson_options.txt Allows to enable recorder integration 2019-01-23 14:51:00 +00:00
meson.build meson: Use underscorify() instead of split() 2019-02-01 13:07:30 -02:00
NEWS build: Prepare for 0.14.1 release 2018-08-22 16:48:17 +02:00
README README: Report bugs to gitlab issue tracker 2018-08-06 15:14:57 +02:00
spice-server.pc.in build-sys: Require a new enough spice-protocol in .pc file 2015-08-26 11:01:09 +02:00
TODO.multiclient Remove trailing whitespace from end of lines 2012-01-13 18:11:59 +02:00

   SPICE: Simple Protocol for Independent Computing Environments
   =============================================================

SPICE is a remote display system built for virtual environments which
allows you to view a computing 'desktop' environment not only on the
machine where it is running, but from anywhere on the Internet and
from a wide variety of machine architectures.

Installation
------------

The SPICE package uses GNU autotools, so the build install process
follows the standard process documented in the INSTALL file. As a
quick start you can do

  ./configure --prefix=/usr --sysconfdir=/etc \
        --localstatedir=/var --libdir=/usr/lib
  make
  sudo make install

Or to install into a private user specific location

  ./configure --prefix=$HOME/spice
  make
  make install

The following mandatory dependencies are required in order to
build SPICE

    Spice protocol >= 0.12.14
    Pixman         >= 0.17.7
    OpenSSL
    libjpeg
    zlib

The following optional dependencies increase the available
functionality

    Cyrus-SASL
    libcacard      >= 0.1.2             (Smartcard support)
    Opus           >= 1.0.0             (Opus audio encoding support)
    LZ4                                 (LZ4 compression support)
    GStreamer      >= 1.0.0

Communication
-------------

To communicate with the development team, or to post patches
there is a technical mailing list:

   http://lists.freedesktop.org/mailman/listinfo/spice-devel

There is also a mailing list for new release announcements:

   http://lists.freedesktop.org/archives/spice-announce/

To view known bugs, or report new bugs, in SPICE visit

   https://gitlab.freedesktop.org/spice/spice/issues/new?

Bugs found when using an OS distribution's binary packages should
be reported to the OS vendors' own bug tracker first.

The latest SPICE code can be found in GIT at:

   https://gitlab.freedesktop.org/spice/

Licensing
---------

SPICE is provided under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

Please see the COPYING file for the complete LGPLv2+ license
terms, or visit <http://www.gnu.org/licenses/>.

Experimental Features
---------------------
To enable multiple client connections, set:
SPICE_DEBUG_ALLOW_MC=1

-- End of readme