[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#73166: shell-autorized-directories
From: |
Saku Laesvuori |
Subject: |
bug#73166: shell-autorized-directories |
Date: |
Thu, 14 Nov 2024 13:07:36 +0200 |
On Tue, Nov 12, 2024 at 05:49:13PM +0100, Nicolas Graves wrote:
> On 2024-11-12 09:50, Suhail Singh wrote:
>
> > I was under the impression that the build phase in guix is always
> > containerized and without network access. Could you please elaborate on
> > this?
>
> Building a package yes, but you can have external commands in a
> manifest.scm or guix.scm. Saku provided an example in an earlier email
> of a valid but dangerous manifest:
>
> ```scheme
> (system* "rm -rf $HOME")
> (specifications->manifest (list "hello"))
> ```
>
> We could also have one that downloads malicious code, or uploads private
> info, the POC is left as an an exercice for the reader ;)
>
> What I was saying is that we could restrain recording `guix shell --allow`
> only if the manifest builds properly containerized and without network
> access (outside package building I mean), and otherwise refuse to allow
> (failing manifest, possibly because it tries to access the network or
> files outside the repo) with a warning message, providing the ability to
> restrain "automatic loading" to certain "safer" conditions only.
>
> This would in turn mean that (given the same guix revision) we can
> always run a `guix shell --allow`-ed using `guix shell --container`
> which actually makes a lot of sense in my use-case. I don't really know
> about other use-cases, but I guess it's the same, even a scheme
> developper would probably want a manifest that doesn't depend on files
> outside of his repo or the network. Saku, do you have an opinion on
> this?
There are likely some cases where someone would want to define a
manifest that depends on external factors, but I do agree they seem
rare. Probably not in a public project repo but maybe someone would want
to have (for example) different environments in different directories
and some common values in ~/.config that all of them refer to.
> The downside is that we would have to basically run `guix shell
> --container` (and build all there is to build) before being able to run
> `guix shell --allow`.
In the repository manifest use-case this seems to not be a downside (the
user is to build the environment anyway if they authorized it). In other
use-cases this might prevent people from using guix shell --allow even
though their case might be much more secure (like the environments in
different directories sharing common data).
> WDYT?
The only benefit seems to be in situations where the user would want the
shell to be in a container, so maybe in that case the default behaviour
should be to also evaluate the manifest in the container. I don't know
would that be a good choice. It increases security for those who use a
container and don't know that loading an environment is equivalent to
executing the file, but if it leads people assume that loading an
environment is safer than executing a file in general, they have less
security in non-container environments.
We should keep in mind that implicit manifests for guix shell are not
only useful in public repositories.
- Saku
signature.asc
Description: PGP signature
- bug#73166: shell-autorized-directories, Nicolas Graves, 2024/11/09
- bug#73166: shell-autorized-directories, Saku Laesvuori, 2024/11/10
- bug#73166: shell-autorized-directories, Nicolas Graves, 2024/11/10
- bug#73166: shell-autorized-directories, Saku Laesvuori, 2024/11/11
- bug#73166: shell-autorized-directories, Nicolas Graves, 2024/11/11
- bug#73166: shell-autorized-directories, Suhail Singh, 2024/11/11
- bug#73166: shell-autorized-directories, Nicolas Graves, 2024/11/12
- bug#73166: shell-autorized-directories, Suhail Singh, 2024/11/12
- bug#73166: shell-autorized-directories, Nicolas Graves, 2024/11/12
- bug#73166: shell-autorized-directories, Suhail Singh, 2024/11/12
- bug#73166: shell-autorized-directories,
Saku Laesvuori <=