Quali vulnerabilità del kernel Linux consentono l'installazione di un rootkit a livello di kernel?

14

La mia domanda è legata alle vulnerabilità che consentono l'installazione di un rootkit a livello kernel di Linux (ad esempio, per modificare il flusso di esecuzione all'interno del kernel, per attacchi orientati al rendimento o per modificare alcune strutture per nascondere determinati processi).

Nel seguente sito, ho trovato una bella classificazione delle vulnerabilità del kernel Linux note fino ad ora:

link

Sono rimasto un po 'sorpreso quando ho notato che c'erano vulnerabilità 0 (pubblicamente note) per l'esecuzione di codice nel 2011.

Significa che il resto delle vulnerabilità in quella tabella (ad esempio DoS, danneggiamento della memoria, overflow) non può essere sfruttato per l'esecuzione di un rootkit a livello di kernel?

Ho un sistema embedded Android basato su ARM. Il kernel Linux ha disabilitato questa funzionalità: "moduli kernel dinamici", "/ dev / kmem", "/ dev / mem /", "ksplice". Inoltre, il sistema ha un processo Secure BOOT (ad es., Il kernel Linux non può accedere a nessun file di avvio e questo è applicato dall'hardware). Pertanto, l'unico modo per installare un rootkit a livello di kernel (a parte gli attacchi hardware) è quello di sfruttare un bug nel kernel *.

* Se non sei d'accordo, ti preghiamo di fare un commento qui o in questo post: link

    
posta Daniel Sangorrin 05.12.2011 - 04:17
fonte

3 risposte

9

Le vulnerabilità nel kernel stesso, sebbene serie, sono solo una parte della trama per gli utenti di tutti i giorni.

Il problema delle installazioni "normali" e "out of the box" sono in realtà vulnerabilità nei processi in esecuzione come root. Poiché questi sono affidabili, possono chiedere al kernel di fare quello che vogliono, incluso l'inserimento di moduli del kernel o l'accesso a /dev/kmem .

È importante capire che, per quanto riguarda la CPU, i processi di root vengono eseguiti come processi non privilegiati per quanto riguarda la CPU. Su x86 chiamiamo questo anello 3; sui processori ARM le modalità CPU sono User, FIQ, IRQ, Supervisore, Abort e Undef, dove User è il livello non privilegiato utilizzato per i processi (tutte le altre modalità sono infatti privilegiate). L'esecuzione dei processi in modalità User non può modificare direttamente altri processi o il kernel; devono prima chiedere al kernel. Tuttavia, dato che sono affidabili, il kernel non "dice di no". Quindi per una configurazione ordinaria, è sufficiente compromettere un processo eseguito come root.

Ora, nel tuo setup le cose sono un po 'diverse - hai disabilitato il caricamento del modulo e l'accesso a /dev/kmem . Per fare un danno serio, devi far eseguire il tuo rootkit in modalità supervisore (suoneria 0 / qualsiasi modalità che non sia User ) o essere in grado di manipolare /dev/kmem . Poiché non è possibile modificare le voci di avvio, questo lascia il livello hardware come il principale vettore di minacce (o ksplice.) Lo menzioni su SO: è sicuramente un rischio perché permetti di applicare patch a un kernel in esecuzione con codice! kexec è un altro potenziale problema perché si sostituisce il kernel in posizione).

Quindi in teoria, quello che hai è molto più sicuro.

Does it mean that the rest of vulnerabilities in that table (e.g., DoS, memory corruption, overflow) cannot be exploited for executing a kernel-level rootkit?

Bene, per occuparci prima dell'ultimo bit - non è necessario essere in grado di sfruttare una vulnerabilità su un sistema "normale" perché si può semplicemente inserire un modulo del kernel. Tuttavia, nel tuo caso questa è praticamente la tua unica strada; dovresti trovare un bug da qualche parte nel sistema che ti permette di caricare il codice o altrimenti può essere sfruttato per controllare il kernel.

Ora, sulla tua osservazione di zero bug - come dici tu, ci sono zero bug conosciuti in quel periodo di tempo. Ciò non significa che non ci siano bug. Inoltre, dovremmo dare un'occhiata a:

  • È il kernel della tua distribuzione? Ha patch non presenti nel kernel di vanilla? Queste patch aggiungono anche dei rischi.
  • Il tuo kernel richiede un codice aggiuntivo di terze parti (driver di schede grafiche, driver di virtualizzazione)? Se è così, anche questi aumentano il rischio.

Ora, su questi CVE - sì, quando dicono di no "esecuzione di codice" è ciò che significa. Le vulnerabilità presenti possono danneggiare la memoria ed eseguire il DoS ma non possono effettivamente eseguire codice dannoso. Dai un'occhiata a una delle vulnerabilità di esecuzione del codice :

...allow remote attackers to cause a denial of service (panic) or possibly execute arbitrary code...

Quindi sì, così com'è non ci sono vulnerabilità note per l'esecuzione del codice nel kernel al momento della scrittura di Update alla luce di questa risposta Sto attraversando quel bit attraverso - non è chiaro dal sito quale voce rappresenta il kernel vanilla e che rappresentano i kernel forniti dal fornitore, o in effetti qual è la differenza. Lasciatemelo dire che con in qualsiasi definizione del kernel che era c'erano zero vulnerabilità, che è quello che stavo cercando di ottenere prima con parlare di patch fornite da fornitori / codice di terze parti.

    
risposta data 05.12.2011 - 10:49
fonte
3

I dati CVE, pubblicati da NVD (cvedetails.com pubblica i dati pubblicati dal National Vulnerability Database, nvd.nist.gov.), presentano alcune incongruenze, in particolare informazioni su prodotti e versioni non affidabili.

Per esempio ci sono più definizioni di prodotto per il kernel di Linux. Consulta il link per un elenco di prodotti correlati. (E potrebbero esserci ancora più vulnerabilità definite con altri fornitori o nomi di prodotti)

Quindi, per essere sicuri, dovresti controllare anche le vulnerabilità definite per altri prodotti correlati. Dovresti almeno controllare link (ci sono alcuni exploit relativi alle vulnerabilità relativo a questo prodotto)

È difficile essere certi di non perdere una vulnerabilità. cvedetails.com ha caratteristiche di corrispondenza prodotto / fornitore che consentono agli utenti di abbinare i prodotti correlati, ma per essere onesti non sono popolari.

(P.S: sono il proprietario di cvedetails.com)

    
risposta data 05.12.2011 - 16:02
fonte
-1

Scarica ed esegui Linux Exploit Suggester :

$ perl ./Linux_Exploit_Suggester.pl -k 3.0.0

Kernel local: 3.0.0

Possible Exploits:
[+] semtex
   CVE-2013-2094
   Source: www.exploit-db.com/download/25444/‎
[+] memodipper
   CVE-2012-0056
   Source: http://www.exploit-db.com/exploits/18411/
    
risposta data 11.12.2014 - 19:27
fonte

Leggi altre domande sui tag