unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Mark H Weaver <mhw@netris.org>
Cc: guix-devel@gnu.org
Subject: Re: Can unprivileged users corrupt the store with bad tarballs?
Date: Fri, 04 Apr 2014 19:07:32 +0200	[thread overview]
Message-ID: <87sipt81m3.fsf@gnu.org> (raw)
In-Reply-To: <87eh1dgu9z.fsf@yeeloong.lan> (Mark H. Weaver's message of "Fri, 04 Apr 2014 08:21:12 -0400")

Mark H Weaver <mhw@netris.org> skribis:

> ludo@gnu.org (Ludovic Courtès) writes:
>
>> Mark H Weaver <mhw@netris.org> skribis:
>>
>>> I was thinking about the security implications of giving out shell
>>> access to one of my systems running Guix.
>>>
>>> When I ask guix-daemon to build package 'foo', it will use as an input
>>> the source for package 'foo', usually a tarball.  If the tarball is
>>> already in the store, it won't download it again, because it is
>>> effectively cached in the store.
>>>
>>> It is possible for another user on the same system to corrupt the cache,
>>> but manually adding a bad tarball for 'foo' to the store, in such a way
>>> that it would be used to build 'foo' when I ask for it?
>>
>> No.
>>
>> Tarballs are fixed-output derivations, so the hash of the tarball is
>> known in advance.  Thus, when building a package, you’re sure to use the
>> tarball whose hash is in the recipe.
>
> What about things that aren't fixed-output derivations?  Are the results
> of 'origin' forms with included patches or snippets "fixed-output"?

No, these are normal derivations.

> Could an unprivileged user add one of these to the store that wasn't
> authentic?

No, because unprivileged users have to make RPCs to guix-daemon to
populate the store (the daemon is a “security kernel”.)  The daemon
ensures that .drv files added to the store are valid, that is, that the
output directories that they claim to build have a valid hash.

Then, whether or not substitutes or offloading are used (and which
substitute servers or build machines are used) is configured by root.
Thus, an unprivileged user cannot maliciously inject derivation outputs
in the store other than those built/substituted in a way approved by the
system administrator.

Eelco’s <http://nixos.org/~eelco/pubs/secsharing-ase2005-final.pdf>
discusses this in more detail (Nix and Guix use what the paper refers to
as the “extensional model,” although fixed-output derivations look more
like the “intensional model”.)  A recommended read!  :-)

Ludo’.

      reply	other threads:[~2014-04-04 17:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-03 18:43 Can unprivileged users corrupt the store with bad tarballs? Mark H Weaver
2014-04-03 19:39 ` Ludovic Courtès
2014-04-04 12:21   ` Mark H Weaver
2014-04-04 17:07     ` Ludovic Courtès [this message]

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

  List information: https://guix.gnu.org/

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

  git send-email \
    --in-reply-to=87sipt81m3.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=mhw@netris.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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).