Un bug di snapd da accesso root ai sistemi Canonical

5

Un paio di giorni fa vi abbiamo messo in guarda per un grave bug in runC, la runtime di Docker; se avete corso e patchato il vostro sistema avete fatto un ottimo lavoro, ma se siete utenti delle diverse distribuzioni Canonical che utilizzano snapd (Ubuntu in primis) non potete ancora tirare un sospiro di sollievo.

Già perchè proprio in questi giorni Chris Moberly, ricercatore nell’ambito della sicurezza, ha scoperto un bug, battezzato “Dirty_Sock” (calzino sporco [nda]) che seppur affligga prevalentemente i sistemi Canonical, in realtà colpisce tutti i sistemi Linux che utilizzano il demone snapd.

Gli Snap, di cui abbiamo già parlato in articoli passati, sono applicazioni distribuite in pacchetti che contengono tutte le librerie, i file e gli eseguibili necessari all’esecuzione di quella specifica applicazione, rendendoli quindi autosufficienti e funzionanti anche senza dover direttamente installare nel sistema tutte le dipendenze necessarie.

Il bug, rilasciato in ben due versioni dirty_sockv1 e dirty_sockv2, permette tramite l’uso di diverse metodologie, di fare privilege escalation, permettendo quindi al contenuto del pacchetto, tipicamente eseguito come utente normale, di eseguire comandi con l’utente root, l’amministratore di sistema.

E, come ben sappiamo, quando qualcosa esegue senza la nostra esplicita conferma comandi come root, il sistema è da considerarsi compromesso.

Il problema è dato dal fatto che il demone snapd fornisce delle API per permettere agli sviluppatori di comunicare con esso, ad esempio per ottenere informazioni dal sistema che sta eseguendo lo snap; queste API utilizzano informazioni passate dall’utente che le lancia per capire il livello di privilegi che questo ha ed alcune (ad esempio quella per creare utenti sul sistema) richiedono che l’utente che le interroga abbia alti privilegi.

Chris è riuscito, costruendo chiamate ad-hoc a questo demone, ad ingannarlo facendogli pensare che le chiamate provenivano da utenti altamente privilegiati (uid=0, root quindi); questa tecnica è stata poi utilizzata nella v2 della vulnerabilità per creare un utente locale sulla macchina con privilegi molto elevati, al punto da poter eseguire tramite sudo qualsiasi comando di root. E’ ovvio che questo è solo un test di vulnerabilità, un reale utente malintenzionato potrebbe installare un trojan o una backdoor, e prendere possesso dell’intero sistema.

Il bug, fortunatamente, è già stato patchato da Canonical per tutte le versioni LTS di Ubuntu dalla 14.04 fino all’attuale 18.04, e per la versione 18.10 (non LTS), ma l’alta diffusione di quel demone anche su altri sistemi fa si che sia necessario stare molto attenti.

Vi lasciamo all’articolo approfondito di Chris in cui mostra il funzionamento del bug e, seppur magari avete patchato pochi giorni fa, mettetevi il cuore in pace e procedete nuovamente ad un update, almeno di snapd.

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l’HA e l’universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.

5 risposte a “Un bug di snapd da accesso root ai sistemi Canonical”

  1. Avatar michele
    michele

    Più sento queste notizie e più sono invogliato a “riabbracciare” la filosofia Slackware.

    Snap e Flatpack mi convincevano poco, perché copiare quello che ha creato problemi a windows. Il bello delle distro è avere un parco software omogeneo e allineato alla versione in uso. Se fai usao di un software non incluso in quelli proposti, alla peggiolo puoi compilare, o chiedere a qualcuno della comunti (di cui ti fidi) di copilartelo i di farti auitare a farlo, si tratterebbe comunque di casi veramente rarissimi.

  2. Avatar Raoul Scarazzini
    Raoul Scarazzini

    Capisco il tuo punto di vista, ma poi va messo tutto sulla bilancia. Il primo obiettivo dell’approccio Snap è quello di fare in modo che chi sviluppa applicazioni non debba + preoccuparsi di dipendenze, differenze tra versioni di sistema operativo, librerie e via dicendo. Per noi figli delle dipendenze rpm da soddisfare scaricando i pacchetti da rpmfind.net questa cosa non può non essere accolta con favore. Penso alle varie applicazioni come Spotify, Skype e via dicendo ed a quanto aiuta l’approccio Snap piuttosto che la necessità di generare pacchetti per ciascuna distribuzione.
    Poi certo, i limiti nella sicurezza di questo approccio ci sono, ma è tutta roba “ordinaria”, come dimostra il bug di runc che abbiamo raccontato l’altro ieri (https://www.miamammausalinux.org/2019/02/ce-un-grave-bug-in-runc-la-runtime-di-docker-e-nemmeno-lxc-e-al-sicuro/), tutto sommato simile a questo…

  3. Avatar michele
    michele

    Software close source. Quelli open vengono inseriti nei repo ufficiali (o semi ufficiali come rpmfusion o ppa certificati)
    Tra l’altro, in alcuni casi, ci sono pacchetti per software close source (mi viene in mente i driver nvidia)

  4. Avatar Raoul Scarazzini
    Raoul Scarazzini

    Ecco, parlando di nvidia la prima parola che mi viene in mente in merito alla gestione di quei pacchetti è… AGGHIAGGIANDE.

  5. Avatar michele
    michele

    Verissimio, ma anche installare un demone per gestire un codice che utilizza delle sue librerie mi fa “AGGHICCIARE”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *