Una vulnerabilità nel gestore pacchetti Guix consente l'esecuzione remota di codice nel sistema

Sono state rilevate vulnerabilità (Nessun CVE assegnato) nel gestore di pacchetti Guix, nell'implementazione del comando interno «guix substitute», automaticamente invocato dal processo in background guix-daemon durante le operazioni di installazione dei pacchetti. Il 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 sotto i quali opera il processo in background guix-daemon.

Il problema interessa tutte le configurazioni con il processo guix-daemon, indipendentemente dal fatto che venga avviato con i privilegi di root o con un utente non privilegiato. Per sfruttare la vulnerabilità è sufficiente qualsiasi tentativo di scaricare pacchetti binari pronti da server, sotto il controllo dell'attaccante. In questo caso, il malintenzionato server non deve necessariamente essere selezionato esplicitamente o specificato nelle impostazioni dell'utente - può essere determinato tramite l'opzione «—discover», consentendo 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 nel caso in cui possa connettersi al processo in background tramite un socket Unix (di default accessibile a tutti gli utenti).

La vulnerabilità è presente nell'elaboratore «restore-file», utilizzato per estrarre durante il caricamento del pacchetto, senza attendere il completo download e la verifica dell'archivio scaricato tramite la 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 di nomi di file non validi nell'archivio, l'attaccante può ottenere la scrittura di un file arbitrario in qualsiasi area del file system, nei limiti dei privilegi con cui opera il processo in background guix-daemon.

Per organizzare l'esecuzione del proprio codice nel sistema, ad esempio, è possibile aggiungere uno script da avviare automaticamente, come «~/ .bashrc» o «~/ .profile», oppure modificare il file «~/ .ssh/authorized_keys» con le chiavi SSH. Se in un sistema multiutente guix-daemon gira sotto l'utente root, l'attaccante potrebbe sovrascrivere il file con le password o gli script di sistema.

La possibilità di creare server di proxy per la distribuzione di pacchetti dannosi è stata causata dal fatto che la procedura di caricamento dei metadati (narinfo) sui pacchetti binari disponibili (fetch-narinfos) non effettuava la verifica del certificato del server, facendo affidamento sul fatto che la maggior parte dei metadati fosse firmata digitalmente. Come si è rivelato, la firma non copriva l'URL per il caricamento del pacchetto, il che consentiva di sostituirlo senza compromettere l'integrità dei metadati. Alla fine, il pacchetto di proxy sarebbe stato scartato a causa della mancata verifica del suo contenuto tramite l'hash firmato digitalmente, ma questa verifica veniva effettuata dopo la fase di estrazione, nella quale emergeva il problema con i caratteri speciali nei nomi dei file.

Oltre al comando 'guix substitute', il gestore vulnerabile 'restore-file' è coinvolto nel funzionamento 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 nella base di codice di Guix. Si consiglia agli utenti di installare immediatamente gli aggiornamenti rilasciati dagli sviluppatori di guix e guix-daemon.

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

  • La possibilità di sostituire pacchetti binari a causa dell'assenza di verifica della corrispondenza tra il pacchetto richiesto e i metadati restituiti nel gestore fetch-narinfos. La vulnerabilità può essere utilizzata per restituire una versione obsoleta del pacchetto richiesto, contenente 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 si tratta di metadati e restituirà un errore, nel cui testo verrà menzionata la riga che non è stata in grado di analizzare.
  • Specificare il nome formattato del repository esterno («..\/..\/..\/..\/newfile») durante l'esecuzione dei comandi «guix pull» e «guix time-machine» consente di registrare dati con informazioni sul commit in un file esistente a scelta nel filesystem, a patto che il suo contenuto assomigli a un elenco di righe in linguaggio Scheme. Questa vulnerabilità può essere sfruttata per attacchi DoS, ma non si esclude che attraverso abili manovre con il pseudo-FS \/proc si possano ottenere manipolazioni più pericolose con il 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