summary refs log tree commit diff
path: root/etc
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-03-18 12:34:02 +0100
committerLudovic Courtès <ludo@gnu.org>2021-03-18 12:34:02 +0100
commit1955ef93b76e51cab5bed4c90f7eb9df7035355a (patch)
tree3d866cf02daa9a48c8c2770eb3151b3fca522fae /etc
parent94f03125463ee0dba2f7916fcd43fd19d4b6c892 (diff)
downloadguix-1955ef93b76e51cab5bed4c90f7eb9df7035355a.tar.gz
news: Add entry for '--keep-failed' vulnerability.
* etc/news.scm: Add entry.
Diffstat (limited to 'etc')
-rw-r--r--etc/news.scm58
1 files changed, 58 insertions, 0 deletions
diff --git a/etc/news.scm b/etc/news.scm
index 6a968eb856..2b7f6b3836 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -20,6 +20,64 @@
 (channel-news
  (version 0)
 
+ (entry (commit "ec7fb669945bfb47c5e1fdf7de3a5d07f7002ccf")
+        (title
+         (en "Risk of local privilege escalation @i{via} @command{guix-daemon}")
+         (fr "Risque d'élévation locale de privilèges @i{via} @command{guix-daemon}"))
+        (body
+         (en "A security vulnerability that can lead to local privilege
+escalation has been found in @command{guix-daemon}.  It affects multi-user
+setups in which @command{guix-daemon} runs locally.
+
+It does @emph{not} affect multi-user setups where @command{guix-daemon} runs
+on a separate machine and is accessed over the network, @i{via}
+@env{GUIX_DAEMON_SOCKET}, as is customary on cluster setups.  Machines where
+the Linux @uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt,
+``protected hardlink''} feature is enabled, which is common, are also
+unaffected---this is the case when the contents of
+@file{/proc/sys/fs/protected_hardlinks} are @code{1}.
+
+The attack consists in having an unprivileged user spawn a build process, for
+instance with @command{guix build}, that makes its build directory
+world-writable.  The user then creates a hardlink within the build directory
+to a root-owned file from outside of the build directory, such as
+@file{/etc/shadow}.  If the user passed the @option{--keep-failed} option and
+the build eventually fails, the daemon changes ownership of the whole build
+tree, including the hardlink, to the user.  At that point, the user has write
+access to the target file.
+
+You are advised to upgrade @command{guix-daemon}.  Run @command{info \"(guix)
+Upgrading Guix\"}, for info on how to do that.  See
+@uref{https://issues.guix.gnu.org/47229} for more information on this bug.")
+         (fr "Une faille de sécurité pouvant mener à une élévation locale de
+privilèges a été trouvée dans @command{guix-daemon}.  Elle touche les
+installations multi-utilisateur·ices dans lesquelles @command{guix-daemon}
+tourne en local.
+
+Elle @emph{n'affecte pas} les installations où @command{guix-daemon} tourne
+sur une machine séparée et qu'on y accède à travers le réseau, @i{via}
+@env{GUIX_DAEMON_SOCKET}, comme c'est typiquement le cas sur les grappes de
+calcul (@i{clusters}).  Les machines où les
+@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, ``liens
+protégés''} de Linux sont activés, ce qui est courant, ne sont pas non plus
+touchées ; cette fonctionnalité est activée si le contenu de
+@file{/proc/sys/fs/protected_hardlinks} est @code{1}.
+
+Pour mener cette attaque, un·e utilisateur·rice démarre un processus de
+compilation, par exemple avec @command{guix build}, qui rend le répertoire de
+compilation inscriptible pour tout le monde.  La personne créée ensuite un
+lien dur (@i{hard link}) dans ce répertoire vers un fichier appartenant à
+@code{root}, tel que @file{/etc/shadow}.  Si on a passé l'option
+@option{--keep-failed} et que la compilation finit par échouer, le démon met
+l'utilisateur·rice appelant·e comme propriétaire de l'ensemble du répertoire
+de compilation, y compris le lien.  À ce stade, cette personne a accès en
+écriture sur le fichier cible.
+
+Nous conseillons de mettre à jour @command{guix-daemon}.  Lancer @command{info
+\"(guix.fr) Mettre à niveau Guix\"} pour voir comment faire.  Voir
+@uref{https://issues.guix.gnu.org/47229} pour plus d'informations sur cette
+faille.")))
+
  (entry (commit "77c2f4e2068ebec3f384c826c5a99785125ff72c")
         (title
          (en "@code{qemu-binfmt-service-type} is usable for any container")