Vulnerabilità nel gestore di GitHub Actions che consentiva di compromettere i pacchetti in Nixpkgs

Sono emerse informazioni sulle vulnerabilità nei gestori di GitHub Actions, attivati automaticamente al momento dell'invio di pull request nel repository di pacchetti Nixpkgs, utilizzato nella distribuzione NixOS e nell'ecosistema associato al gestore di pacchetti Nix. La vulnerabilità consentiva a un soggetto esterno di estrarre un token che forniva accesso in lettura e scrittura 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 iniettare il proprio codice in qualsiasi pacchetto è stata dimostrata da ricercatori in sicurezza nell'ottobre dello scorso anno durante la conferenza NixCon e subito corretta nell'infrastruttura del progetto. Tuttavia, i dettagli sull'attacco condotto sono stati rivelati solo un anno dopo. Il problema era legato all'uso nei repository GitHub di Nixpkgs di gestori di GitHub Actions associati all'evento "pull_request_target" e che eseguivano controlli automatizzati al momento dell'arrivo di nuove pull request.

A differenza dell'evento «pull_request», in «pull_request_target» i gestori hanno accesso in lettura e scrittura all'ambiente di build, il che richiede particolare attenzione quando si lavora con i dati trasferiti nella pull request. In uno dei gestori associati a «pull_request_target», è stata eseguita una verifica del file «OWNERS» presente nella pull request, per la quale è stata raccolta e chiamata l'utilità 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, l'utilità codeowners-validator registrava il contenuto della riga formattata in modo errato nel log standard, accessibile pubblicamente. L'attacco consisteva nel posizionare nella pull request un collegamento simbolico chiamato OWNERS, che puntava al file «.credentials», dove nell'ambiente di build si trovano le credenziali. Di conseguenza, l'elaborazione di questo file ha portato a un errore e alla registrazione nel log pubblico della prima riga contenente il token di accesso al repository.

Vulnerabilità nel gestore di GitHub Actions che consentiva di compromettere i pacchetti in Nixpkgs

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

In questo caso, il problema era nell'uso dello strumento «xargs» per avviare il programma editorconfig-checker con ogni file dall pull request. Poiché i nomi dei file non venivano controllati per la correttezza, un aggressore poteva inserire 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 mostrato 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