Vulnerabilità nell'elaboratore di GitHub Actions che consentiva di compromettere i pacchetti in Nixpkgs

Sono state rivelate informazioni sulle vulnerabilità nei gestori di GitHub Actions, attivati automaticamente al momento dell'invio di pull request nel repository dei pacchetti Nixpkgs, utilizzato nella distribuzione NixOS e nell'ecosistema associato al gestore di pacchetti Nix. La vulnerabilità permetteva a un attaccante esterno di estrarre un token che consentiva accesso in scrittura e lettura al codice sorgente di tutti i pacchetti presenti in Nixpkgs. Questo token permetteva di apportare modifiche direttamente a qualsiasi pacchetto tramite il repository Git del progetto, eludendo i processi di revisione e verifica delle modifiche.

La possibilità di compromettere Nixpkgs e di sostituire il proprio codice in qualsiasi pacchetto è stata dimostrata dai ricercatori di sicurezza nell'ottobre dello scorso anno durante la conferenza NixCon e è stata immediatamente corretta nell'infrastruttura del progetto. Tuttavia, i dettagli dell'attacco sono stati rivelati solo un anno dopo. Il problema era legato all'uso nel repository Git di Nixpkgs di gestori di GitHub Actions associati all'evento "pull_request_target" che eseguivano controlli automatizzati all'arrivo di nuove pull request.

A differenza dell'evento "pull_request", nei gestori associati a "pull_request_target" viene fornito accesso in scrittura e lettura all'ambiente di build, il che richiede particolare attenzione nel lavorare con i dati trasmessi nella pull request. In uno dei gestori legati a "pull_request_target", veniva effettuato un controllo sul file "OWNERS" incluso nella pull request, per il quale veniva raccolto e richiamato lo strumento codeowners-validator: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

Il problema era che, in caso di errore nella formattazione del file OWNERS, lo strumento codeowners-validator stampava il contenuto della riga malformata nel log standard, accessibile pubblicamente. L'attacco consisteva nell'inserire nella pull request un collegamento simbolico chiamato OWNERS, che puntava a un file ".credentials", dove nell'ambiente di build sono archiviati i dati di accesso. Di conseguenza, l'elaborazione di questo file portava a un errore e all'uscita nel log pubblico della prima riga contenente il token di accesso al repository.

Vulnerabilità nell'elaboratore di GitHub Actions che consentiva di compromettere i pacchetti in Nixpkgs

Inoltre, è stata trovata un'altra vulnerabilità nell'elaboratore che esegue il controllo delle regole editorconfig. steps: — name: Ottieni l'elenco dei file modificati dal PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — name: Controllo EditorConfig run: cat «$HOME/changed_files» | xargs -r editorconfig-checker

In questo caso, il problema era l'uso dello strumento «xargs» per avviare il programma editorconfig-checker su ciascun file della pull request. Poiché i nomi dei file non venivano verificati per correttezza, un attaccante poteva includere nella pull request un file con caratteri speciali, che sarebbero stati elaborati durante l'esecuzione dello strumento editorconfig-checker come argomenti della riga di comando. Ad esempio, creando un file «—help», lo strumento editorconfig-checker avrebbe visualizzato un messaggio di aiuto con le opzioni disponibili.

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