From: "M. Mohan Kumar" <mohan@in.ibm.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [V11 00/15] virtio-9p: Use chroot to safely access files in passthrough security model
Date: Fri, 24 Jun 2011 13:52:09 +0530 [thread overview]
Message-ID: <1308903744-2870-1-git-send-email-mohan@in.ibm.com> (raw)
In passthrough security model, following symbolic links in the server
side could result in TOCTTOU vulnerabilities.
(http://en.wikipedia.org/wiki/Time-of-check-to-time-of-use)
This patchset resolves this issue by creating a dedicated process which
chroots into the share path and all file object access is done in the
chroot environment.
This patchset implements chroot enviroment, provides necessary functions
that can be used by the passthrough function calls.
This patchset is rebased on top of 9p coroutines patches posted to
qemu-devel list
http://lists.nongnu.org/archive/html/qemu-devel/2011-05/msg02796.html
Changes from version V10:
* Added support to do lstat and readlink from chroot process
* Fixed an issue with dealing fds when qemu process reached maxfds limit
Changes from version V9:
* Error handling in special file object creation in virtio-9p-local.c
Changes from version V8:
* Make chmod and chown also operate under chroot process
* Check for invalid path requests, minor cleanups
Changes from version V7:
* Add two chroot methods remove and rename
* Minor cleanups like consolidating functions
Changes from version V6:
* Send only fd/errno in socket operations instead of FdInfo structure
* Minor cleanups
Changes from version V5:
* Return errno on failure instead of setting errno
* Minor cleanups like updated comments, enable CONFIG_THREAD if
CONFIG_VIRTFS is enabled
Changes from version V4:
* Avoid using malloc/free inside chroot process
* Seperate chroot server and client functions
Changes from version V3
* Return EIO incase of socket read/write fail instead of exiting
* Changed data types as suggested by Blue Swirl
* Chroot process reports error through qemu process
Changes from version V2
* Treat socket IO errors as fatal, ie qemu will exit
* Split patchset based on chroot side (server) and qemu side(client)
functionalities
M. Mohan Kumar (15):
Implement qemu_read_full
virtio-9p: Enable CONFIG_THREAD if CONFIG_VIRTFS is enabled
virtio-9p: Provide chroot worker side interfaces
virtio-9p: Add qemu side interfaces for chroot environment
virtio-9p: Add support to open a file in chroot environment
virtio-9p: Create support in chroot environment
virtio-9p: Support for creating special files
virtio-9p: Add support for removing file or directory
virtio-9p: Add support to rename
virtio-9p: Move file post creation changes to none security model
virtio-9p: Add support for chmod
virtio-9p: Add support for chown
virtio-9p: Chroot environment for other functions
virtio-9p: Add stat functionality to chroot
virtio-9p: Add readlink support to chroot
Makefile.objs | 1 +
configure | 1 +
fsdev/file-op-9p.h | 3 +
hw/9pfs/virtio-9p-chroot-worker.c | 418 +++++++++++++++++++++++++++++++++++++
hw/9pfs/virtio-9p-chroot.c | 174 +++++++++++++++
hw/9pfs/virtio-9p-chroot.h | 54 +++++
hw/9pfs/virtio-9p-device.c | 24 ++
hw/9pfs/virtio-9p-local.c | 248 ++++++++++++++++++----
osdep.c | 32 +++
qemu-common.h | 2 +
10 files changed, 910 insertions(+), 47 deletions(-)
create mode 100644 hw/9pfs/virtio-9p-chroot-worker.c
create mode 100644 hw/9pfs/virtio-9p-chroot.c
create mode 100644 hw/9pfs/virtio-9p-chroot.h
--
1.7.5.1
next reply other threads:[~2011-06-24 8:22 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-24 8:22 M. Mohan Kumar [this message]
2011-06-24 8:22 ` [Qemu-devel] [V11 01/15] Implement qemu_read_full M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 02/15] virtio-9p: Enable CONFIG_THREAD if CONFIG_VIRTFS is enabled M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 03/15] virtio-9p: Provide chroot worker side interfaces M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 04/15] virtio-9p: qemu interfaces for chroot environment M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 05/15] virtio-9p: Support for opening a file in " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 06/15] virtio-9p: Create support " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 07/15] virtio-9p: Creating special files " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 08/15] virtio-9p: Removing file or directory " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 09/15] virtio-9p: Rename " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 10/15] virtio-9p: Move file post creation changes to none security model M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 11/15] virtio-9p: chmod in chroot environment M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 12/15] virtio-9p: chown " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 13/15] virtio-9p: stat " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 14/15] virtio-9p: readlink " M. Mohan Kumar
2011-06-24 8:22 ` [Qemu-devel] [V11 15/15] virtio-9p: Chroot environment for other functions M. Mohan Kumar
2011-06-26 18:22 ` [Qemu-devel] [V11 00/15] virtio-9p: Use chroot to safely access files in passthrough security model Blue Swirl
2011-06-27 5:28 ` M. Mohan Kumar
2011-07-25 8:17 ` 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=1308903744-2870-1-git-send-email-mohan@in.ibm.com \
--to=mohan@in.ibm.com \
--cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).