Vulnerabilità nel gestore di pacchetti Guix, che consente l'esecuzione remota di codice sul sistema

Sono state identificate delle vulnerabilità nel gestore di pacchetti Guix (CVE non assegnati) nell'implementazione del comando interno «guix substitute», chiamato automaticamente dal processo di sfondo guix-daemon durante le operazioni di installazione dei pacchetti. Questo comando viene utilizzato per scaricare pacchetti binari già compilati da server esterni, verificando la loro integrità tramite una firma digitale. La vulnerabilità più pericolosa consente di eseguire codice da remoto sul sistema dell'utente con i diritti con cui viene eseguito il processo di sfondo guix-daemon.

Il problema riguarda tutte le configurazioni con il processo guix-daemon, indipendentemente dal fatto che venga eseguito con i diritti di root o da un utente non privilegiato. Per sfruttare la vulnerabilità è sufficiente qualsiasi tentativo di scaricare pacchetti binari pronti da server, controllato dall'attaccante. In questo caso, il codice dannoso un server non deve necessariamente essere scelto o specificato esplicitamente nelle impostazioni dell'utente — può essere determinato utilizzando l'opzione «—discover», che consente di effettuare la sostituzione del server durante un attacco MITM. Nelle configurazioni in cui guix-daemon è avviato con privilegi elevati, un utente locale può effettuare un attacco se ha la possibilità di connettersi al processo in background tramite Unix socket (accessibile a tutti gli utenti per impostazione predefinita).

La vulnerabilità è presente nel gestore «restore-file», utilizzato per il decompressaggio durante il caricamento del pacchetto, senza attendere il completamento del caricamento e la verifica dell'archivio caricato tramite firma digitale. Il problema è causato dall'assenza di un controllo sulla presenza dei caratteri «.», «/» e «..» nei percorsi dei file presenti nell'archivio. Attraverso la sostituzione in archivio di nomi di file non validi, un attaccante può ottenere la scrittura di un file arbitrario in qualsiasi area del file system, a seconda dei permessi con cui viene eseguito il processo in background guix-daemon.

Per organizzare l'esecuzione del proprio codice nel sistema, ad esempio, si può aggiungere uno script che si avvia automaticamente, come "~/.bashrc" o "~/.profile", o modificare il file "~/.ssh/authorized_keys" con le chiavi SSH. Se in un sistema multiutente il guix-daemon viene eseguito con l'utente root, un attaccante potrebbe sovrascrivere il file con le password o gli script di sistema.

La possibilità di creare server proxy per la diffusione di pacchetti dannosi è dovuta al fatto che la procedura di download dei metadati (narinfo) sui pacchetti binari disponibili (fetch-narinfos) non eseguiva il controllo del certificato del server, facendo affidamento sul fatto che la maggior parte dei metadati fosse firmata digitalmente. Si è scoperto che la firma non copriva l'URL per il download del pacchetto, il che permetteva di sostituirlo senza compromettere l'integrità dei metadati. Alla fine, il pacchetto sostitutivo sarebbe stato scartato a causa del fallimento della verifica del suo contenuto tramite hash, firmato digitalmente, ma tale verifica avveniva dopo la fase di estrazione, in cui si manifestava il problema con i caratteri speciali nei nomi dei file.

Oltre al comando «guix substitute», il gestore vulnerabile «restore-file» è coinvolto nell'esecuzione dei comandi «guix offload», «guix archive —extract» e «guix challenge», attraverso i quali è possibile sfruttare la vulnerabilità. Come soluzione per bloccare la vulnerabilità, si raccomanda di specificare esplicitamente l'opzione «—no-substitutes» in tutti i comandi guix. La correzione della vulnerabilità è stata integrata nel codice sorgente di Guix. Si consiglia agli utenti di installare immediatamente gli aggiornamenti forniti dagli sviluppatori per guix e guix-daemon.

Oltre al problema segnalato, sono state risolte altre tre vulnerabilità in Guix:

  • Possibilità di sostituire i pacchetti binari a causa dell'assenza di verifica della corrispondenza tra il pacchetto richiesto e i metadati restituiti nel gestore fetch-narinfos. Questa vulnerabilità può essere sfruttata per restituire una versione obsoleta del pacchetto richiesto, contenente delle vulnerabilità.
  • Determinazione del contenuto della prima riga di file arbitrari nel sistema tramite la richiesta inviata da un utente locale con URI «file://» («—substitute-urls file://etc/shadow»). Se guix-daemon viene eseguito con i diritti di root, leggerà il file richiesto, determinerà che non è metadata e visualizzerà un errore, nel cui testo verrà menzionata la riga che non è stata possibile analizzare.
  • L'indicazione di un nome esterno di repository formattato in modo specifico («../../../newfile») durante l'esecuzione dei comandi «guix pull» e «guix time-machine» consente di scrivere dati con informazioni sul commit in un file esistente arbitrario nel filesystem, se il suo contenuto assomiglia a un elenco di righe in linguaggio Scheme. La vulnerabilità può essere utilizzata per attacchi DoS, ma non si esclude che attraverso astute manipolazioni con il pseudo-FS /proc si possano ottenere manovre più pericolose sul sistema.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster