Perché nessuna autorizzazione come Android o iOS?


26

Quando installo un programma come GIMP o LibreOffice su Linux non mi vengono mai chieste autorizzazioni. Installando un programma su Ubuntu, sto esplicitamente dando a quel programma piena autorizzazione per leggere / scrivere ovunque sul mio disco e pieno accesso a Internet?

In teoria, GIMP potrebbe leggere o eliminare qualsiasi directory sul mio disco, senza richiedere una password di tipo sudo?

Sono curioso solo se è tecnicamente possibile, non se è probabile o no. Certo, so che non è probabile.


26
XKCD obbligatorio: xkcd.com/1200
Andrea Lazzarotto

10
Perché il modello di sicurezza di Linux risale a prima che qualcuno pensasse di farlo. In realtà risale a prima di Internet, quando la tua più grande minaccia era che altre persone usassero lo stesso computer.
user253751

2
In parte perché molte delle persone che usano * nix non "installano" i programmi, o li compilano dal sorgente o li scrivono da soli. Quindi immagina se dovessi passare il rigamarole "autorizzazioni" per ogni semplice script di shell che hai scritto: non sarebbe una grande perdita di tempo?
jamesqf,

4
Non compro questa linea di ragionamento, "il codice è open source, puoi rivederlo e compilarlo tu stesso!". Tutte queste affermazioni sono vere, ma ciò non significa che sarò in grado di rivedere ogni riga di codice che eseguo, e anche se lo facessi, o una squadra di persone, o tutto il mondo, ciò non significa in alcun modo noterai codice dannoso o cattivo che influisce negativamente sul tuo computer. Ma grazie per l'input, vedo come potrebbe diventare un grande dolore e ho scoperto modi per aggirarlo ora.
Stackinator

Risposte:


31

Ci sono due cose qui:

  • quando si installa un programma in modo standard (programma di installazione di sistema come apt / apt-get su Ubuntu), di solito viene installato in una directory in cui è disponibile per tutti gli utenti (/ usr / bin ...). Questa directory richiede i privilegi su cui scrivere, quindi sono necessari privilegi speciali durante l'installazione.

  • quando si utilizza il programma, viene eseguito con il proprio ID utente e può solo leggere o scrivere dove i programmi eseguiti con il proprio ID sono autorizzati a leggere o scrivere. Nel caso di Gimp, scoprirai ad esempio che non puoi modificare risorse standard come i pennelli perché sono condivisi /usr/share/gimp/e che devi prima copiarli. Ciò mostra anche Edit>Preferences>Foldersdove la maggior parte delle cartelle si trova in coppie, una di sistema di sola lettura e una utente su cui è possibile scrivere.


17
Una volta installato il programma, il modo in cui è stato installato diventa irrilevante. L'unica cosa che conta è sotto quale userid viene eseguito ((in altre parole, chi lo sta usando). Quindi assume gli stessi diritti di accesso di tutti gli altri programmi eseguiti dallo stesso utente.
xenoid

3
@xenoid A meno che il programma non sia installato di proprietà di root e con bit setuid attivo. In tal caso, il programma funziona come root, nonostante sia utilizzato da qualcun altro.
Monty Harder,

2
Sì, tutti e 18: mount / umount / ping / sudo ...
xenoid,

2
@xenoid, penso che l'importante sia che l'installazione di un pacchetto non ti chieda esplicitamente il permesso di installare un binario setuid. Invece, qualunque cosa sia nel pacchetto viene installata e devi solo "sapere" in qualche altro modo se ci sono programmi privilegiati coinvolti. Fai completamente affidamento sul packager per assicurarti che il pacchetto corrisponda alla documentazione e sia altrimenti sicuro, ecc., L'utilità del gestore pacchetti non fa nulla per aiutarti.
ilkkachu,

3
Sì, quindi niente di nuovo, ecco perché ci sono repository ... Anche senza il bit setuid e il software installato possono fare molte altre cose brutte come rm -rf ~/. Se installi da altre fonti devi fare attenzione (o installare da fonti, dopo un'ispezione del codice).
xenoide,

23

Installando un programma su Ubuntu concedo esplicitamente a quel programma la completa autorizzazione a leggere / scrivere ovunque sul mio disco e al pieno accesso a Internet?

Sì, se usi sudoo equivalenti, stai dando all'installatore l'autorizzazione completa a leggere / scrivere ovunque sul tuo disco. Questa è principalmente la stessa cosa. C'è anche un flag che il programma di installazione può impostare, chiamato setuid, che farà sì che il programma disponga anche delle autorizzazioni complete dopo l'installazione.

Anche se ignoriamo il programma di installazione e se il programma non è setuid (è molto raro che i programmi utilizzino setuid), quando esegui il programma ha pieno accesso a tutto ciò a cui il tuo account può accedere. Ad esempio, se hai effettuato l'accesso al tuo banking online, potrebbe ipoteticamente inviare tutti i tuoi fondi in Nigeria.

Perché nessuna autorizzazione come Android o iOS?

Il modello di sicurezza, ovvero il modo in cui è progettato il sistema di sicurezza, in Linux è molto vecchio. È ereditato da Unix, che risale agli anni '60. All'epoca non esisteva Internet e la maggior parte delle persone in un dipartimento utilizzava lo stesso computer. La maggior parte dei programmi proveniva da grandi aziende di cui ci si fidava. Quindi il sistema di sicurezza è stato progettato per proteggere gli utenti gli uni dagli altri, non per proteggere gli utenti dai programmi che eseguono.

Oggi è abbastanza obsoleto. Android si basa su Linux, ma funziona creando un "account utente" separato per ogni app, anziché per ogni utente. Non so cosa usi iOS. Sforzi come Flatpak stanno attualmente cercando di portare lo stesso tipo di cose sul desktop Linux.


2
Questo è in realtà un argomento per eseguire codice potenzialmente sfruttabile come utente separato non privilegiato e sperare che non ci sia alcuna vulnerabilità di escalation di privilegi nel sistema operativo. O Docker.
Willtech,

@immibis Android utilizza il kernel Linux e un ext FS. Non condivide altre somiglianze afaik. Non confondere Linux e UNIX-like (o GNU / Linux). (Almeno non hai chiamato FreeBSD "Linux" ..)
wizzwizz4 il

1
@ wizzwizz4 Linux è un kernel, Android usa il kernel chiamato Linux, non sono sicuro di quale sia il tuo punto.
user253751

@Willtech Tecnicamente funziona come misura di sicurezza, ma è piuttosto scomodo. Dopotutto, vuoi che le app siano in grado di accedere ai tuoi file. Ma solo i file a cui hai detto di accedere.
user253751

@immibis Le autorizzazioni non sono implementate nel kernel, quindi è fuorviante implicare che Android sia basato su un sistema che include il modello di autorizzazione. (IIirc il kernel impone alcune delle autorizzazioni però ..)
wizzwizz4,

9

Quello che vuoi è fornito dalle app Flatpack. Questi sono praticamente l'equivalente delle app iOS, Android o Windows Store.

Non li ho usati, quindi non so se hanno ancora implementato la GUI, per vedere le autorizzazioni richieste da ciascuna app quando è installata.

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

Ogni applicazione flatpak contiene un manifest, chiamato metadata. Questo file descrive i dettagli dell'applicazione, come la sua identità (id-app) e quale runtime utilizza. Elenca anche le autorizzazioni richieste dall'applicazione.

Per impostazione predefinita, una volta installata, un'applicazione ottiene tutte le autorizzazioni richieste. Tuttavia, puoi sovrascrivere le autorizzazioni ogni volta che chiami flatpak run o globalmente in base all'applicazione usando flatpak override (vedi manpage per flatpak-run e flatpak-override per i dettagli). La gestione delle autorizzazioni dell'applicazione è attualmente in qualche modo nascosta nell'interfaccia, ma il piano a lungo termine è mostrare le autorizzazioni durante l'installazione e semplificare la sostituzione.

Inoltre non ho usato l'alternativa di Ubuntu, Snappy, per sapere se fornisce tale funzionalità visibile nella GUI.


Flatpaks ha i permessi di lettura / scrittura per la mia cartella home in Ubuntu?
Stackinator

1
Leggendo il collegamento, sembra che a) abbiano in mente una soluzione elegante in cui le app ottengono l'accesso solo ai file che l'utente ha scelto in una finestra di apertura / salvataggio dei file, ecc., B) l'impostazione predefinita era concedere l'accesso completo alla home directory .
Fontejedi

2
Le app Web sono una soluzione molto più standard a questo problema, sebbene in molti casi fastidiosamente inefficienti. Qualsiasi browser Web popolare è un sandbox altamente versatile e accuratamente testato.
sudo,

6

È tecnicamente possibile e le soluzioni includono apparmor, selinuxe firejailo anche contenitori pieni come LXCo una macchina virtuale completa (ad esempio VirtualBox, kvmo vmware). Per la rete esiste opensnitchun clone del littlesnitchprogramma da OSX.

Il motivo per cui non esiste un modello di sicurezza diffuso con autorizzazioni fornite dall'utente è che tradizionalmente stai attento a ciò che esegui sul tuo PC. Il 90% di ciò che è nelle appstore dei sistemi mobili sarebbe considerato malware sui PC.

Esistono scanner per adware (ad es. Adaware o Spybot D&D) che classificano comportamenti come malware sul PC come il collegamento di Facebook, Google Analytics e reti pubblicitarie. L'ecosistema mobile è come un intero riavvio dell'informatica quando si tratta di queste cose. Tutti raggruppano adware, solo perché è facile e aggiunge analisi, solo perché è curioso. Gli effetti collaterali sono la riduzione della privacy e della sicurezza. La parte di sicurezza è rappresentata dal modello sandbox, la parte di privacy è ancora un problema aperto.

Un altro motivo per non averlo a lungo sul PC è la complessità di un sandbox, il che significa che entrambi potrebbero essere troppo lenti per i PC più vecchi qualche tempo fa e richiedere una maggiore ingegnerizzazione per qualcosa che allora aveva pochi vantaggi.

Oggi vediamo tentativi di usare il sandboxing in nuovi formati di pacchetto come snap e flatpak e i browser lo usano anche per le loro estensioni. Chromium utilizza un modello di autorizzazione sin dall'inizio e Firefox ne utilizza uno per tutte le estensioni Web (dal 57 le uniche estensioni che è possibile installare). Questo è abbastanza ragionevole, perché le persone installano estensioni del browser di autori sconosciuti proprio come le app di persone di cui non hanno mai sentito parlare, pensando di non essere più pericolose di un sito Web che visitano, il che è un errore irreversibile quando non c'è sandbox per proteggerle.


4

Android utilizza un modello di sicurezza "marketplace": diverse applicazioni provengono da diversi fornitori (semi-attendibili) e dovrebbero essere isolate dalle risorse protette e reciprocamente. La maggior parte delle app sono distribuite a scopo di lucro: sono vendute (payware), mostrano pubblicità a pagamento o "monetizzano" i loro utenti vendendo i loro dati a terzi. C'è un'alta motivazione a impegnarsi nell'accesso illecito ai dati, anche se vengono scoperti.

La maggior parte delle applicazioni in Debian, Red Hat e simili "classiche" distribuzioni Linux sono distribuite in formato sorgente: dopo che un'applicazione open source ha acquisito sufficiente trazione, viene scelta manualmente per essere inclusa dai manutentori della distribuzione. C'è poca motivazione per eseguire l'accesso illecito ai dati, - i potenziali guadagni non giustificano gli sforzi.

Vale la pena notare che il modello di sicurezza avanzato di Android è uno dei motivi, per cui ha guadagnato così tanta trazione, superando facilmente iOS sui mercati mobili. Le distro Linux desktop moderne non sono solo "diverse", ma sono in realtà molto indietro rispetto ai tempi in termini di modelli di sicurezza e distribuzione.

Alcune delle distribuzioni Linux stanno migliorando il loro sistema di distribuzione del software: repository software centralizzati di terze parti (AUR), formati di pacchetti specializzati per la distribuzione di software di terze parti (AppImage, Snappy, Flatpack), sistemi di repository secondari (Docker). Sfortunatamente, questi miglioramenti ottengono pochissima trazione nel tempo: AppImage è stato inventato nel 2004, la prima versione di AUR è stata rilasciata nel 2005, ma nessuna delle moderne distribuzioni Linux ha adottato ufficialmente le sue funzionalità dopo> 10 anni.


3

Quando installo un programma come GIMP o LibreOffice su Linux non mi vengono mai chieste autorizzazioni.

Queste applicazioni sono installate in una parte privilegiata del file system che l'utente e la maggior parte degli utenti normalmente non hanno accesso alle modifiche.

Nelle distribuzioni tradizionali impostate per l'uso desktop, il singolo utente inizialmente impostato durante l'installazione avrà in genere i diritti di amministratore. Tutto ciò che verrà loro normalmente richiesto è la propria password di accesso per installare il software e non sempre.

Una volta installato, per impostazione predefinita il software sarà configurato per essere eseguibile dagli utenti normali e consentirà la lettura dei file di dati. Questo è tutto ciò che serve.

Installando un programma su Ubuntu, sto esplicitamente dando a quel programma piena autorizzazione per leggere / scrivere ovunque sul mio disco e pieno accesso a Internet?

Non il programma. Quello che succede è che l'account utente appartiene a gruppi diversi e i diversi gruppi concedono l'accesso a risorse diverse.

Il modello di sicurezza su Linux è che il tuo account utente ha determinati diritti e i gruppi a cui appartiene il tuo account hanno diritti specifici. Il diritto a qualsiasi parte del file system richiede i privilegi di root, che normalmente non sono concessi agli utenti. Anche quando usi sudo non ottieni tutti i diritti.

Gli account utente normali in genere hanno accesso alle risorse di cui ci si aspetterebbe di avere bisogno, come Internet.

In teoria, GIMP potrebbe leggere o eliminare qualsiasi directory sul mio disco, senza richiedere una password di tipo sudo?

Qualsiasi directory o file a cui hai diritti di accesso come utente può accedere dall'applicazione avviata poiché in genere eredita i tuoi diritti. Un utente che ha effettuato l'accesso normalmente non avrà normalmente il diritto di modificare la maggior parte dei file di sistema critici o dei file condivisi.

Sono curioso solo se è tecnicamente possibile, non se è probabile o no. Certo, so che non è probabile.

Tieni presente che la maggior parte degli utenti in genere installa applicazioni da repository ben controllati e il rischio di codice ostile è basso.

Probabilmente suggerirei qualche lettura aggiuntiva per fare i conti con le autorizzazioni di Linux.

Il modello di sicurezza Android si sta evolvendo per soddisfare le esigenze degli utenti che non solo non comprendono generalmente il modello di sicurezza sottostante del sistema operativo, ma non comprendono quasi nulla dei computer.

Il modello Linux (che sinceramente mi piace di più) è progettato per consentire agli utenti (e in particolare agli amministratori) di esercitare un maggiore controllo sulla sicurezza del sistema (entro i limiti se le loro autorizzazioni consentite).

Penso che dal punto di vista dell'utente sia meglio descritto come la differenza tra controllo full-auto e semi-auto o manuale. I consumatori moderni vogliono l'auto completa. Linux ha semi-auto e manuale. La maggior parte degli utenti Linux non ha mai bisogno di conoscere il modello di sicurezza in questi giorni, ma il controllo è lì se ne hai bisogno o lo desideri.


2

Quando installi alcuni programmi, sei in grado di installarli nel tuo spazio utente (cioè autonomo nella tua home directory) e non a livello di sistema. Pertanto, non ti vengono richiesti i privilegi di superutente perché non ti servono per installare un programma per uso personale. Un programma di questa convenzione è installato sarebbe davvero non essere in grado di accedere ai file non concessi i "membri non-proprietario non-gruppo possono leggere questo" permesso assente un'escalation di privilegi.


Se il programma è installato nella mia home directory può leggere e scrivere ovunque nella home directory?
Stackinator

2
Funziona con le tue autorizzazioni, quindi può accedere a tutto ciò a cui puoi accedere.
DopeGhoti,

1
Su una macchina a singolo utente, l'accesso solo all'utente non è molto più sicuro dell'accesso root. Ad ogni modo, tutto ciò che è importante è probabilmente accessibile dall'utente.
sudo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.