Indietro

ⓘ Privilege escalation




                                     

ⓘ Privilege escalation

In informatica, si intende con privilege escalation lo sfruttamento di una falla, di un errore di progetto o di configurazione di un software applicativo o di un sistema operativo al fine di acquisire il controllo di risorse di macchina normalmente precluse a un utente o a unapplicazione. Unapplicazione con maggiori autorizzazioni di quelle previste dallo sviluppo originale o fissate dallamministratore di sistema può, ovviamente, mettere in opera azioni impreviste e non autorizzate.

                                     

1. Cenni generali

La "scalata" verso un livello più alto di autorizzazioni è possibile in caso di progetto errato o di funzionalità di sistema mal gestite: ciò apre una falla nella sicurezza tramite la quale un utente o un software male intenzionato può mettere in opera azioni dei seguenti tipi:

  • Scalata verticale: un utente accede a funzioni, autorizzazioni e privilegi più alti di quelli assegnatigli: per fare un esempio finanziario, unutenza che accede a livelli di amministrazione.
  • Come corollario, questo comporta anche la possibilità per lutente divenuto amministratore di retrocedere i privilegi di altri amministratori al livello di semplice utente.
  • Scalata orizzontale: un utente a pari livello di autorizzazione di altri utenti, ma con accesso ad aree differenti rispetto a questi ultimi, guadagna accesso a dette aree.
                                     

2. Vertical privilege escalation

Questo tipo di privilege escalation esiste quando lutente o il processo è in grado di ottenere un livello di accesso più alto di quello di un amministratore o di quello voluto dallo sviluppatore del sistema, possibilmente eseguendo operazioni a livello del kernel kernel-level.

                                     

2.1. Vertical privilege escalation Esempi di vertical privilege escalation

In alcuni casi unapplicazione con alti privilegi si presume sarà soltanto provvista di input che vada bene con la sua specifica interfaccia, senza però convalidare linput. Un Attacker può quindi essere in grado di utilizzare questo presupposto in modo che un codice non autorizzato giri con gli stessi privilegi dellapplicazione:

  • Sotto alcune passate versioni del sistema operativo Microsoft Windows, tutti gli screensaver di tutti gli utenti girano sotto laccount Local System, ogni account che può sostituire il corrente screensaver binario nel file system o Registro può perciò aumentare i privilegi.
  • Alcuni servizi Windows sono configurati per girare sotto un account utente del Local System. Una vulnerabilità così come il buffer overflow può essere usata per eseguire un codice arbitrario con privilegi elevati nel Local System. In alternativa, un servizio di sistema che si sta spacciando per un utente minore può elevare i propri privilegi se durante tale operazione gli errori che ne conseguono non vengono maneggiati correttamente.
  • Un jailbreak è latto lo strumento usato per effettuare levasione chroot o jail in sistemi operativi tipo UNIX o bypassando i digital rights management DRM. Nel primo caso, esso permette allutente di vedere file esterni al file system che lamministratore intende rendere disponibili per le applicazioni o su richiesta degli utenti. Nel contesto del DRM, ciò permette che lutente faccia girare arbitrariamente un codice definito su dispositivi gravati dal DRM così pure da evadere le restrizioni del tipo chroot. I dispositivi gravati dal DRM come lXbox, PSP, iPhone, e iPod touch sono state ripetutamente soggetti a jailbreaks, permettendo lesecuzione di codice arbitrario, ma hanno avuto i jailbreaks disabilitati dagli updates dei rispettivi venditori.
  • * In certe versioni del kernel di Linux era possibile scrivere un programma che dovrebbe posizionare la sua directory corrente in /etc/cron.d, per richiedere che un core dump sia capace in caso di crash che esso stesso venga ucciso da un altro processo. Il file core dump dovrebbe essere posizionato nella directory corrente del programma, cioè, /etc/cron.d, e cron dovrebbe essere trattato come un file di testo istruendo esso a far girare programmi su schedule. Poiché i contenuti dei file dovrebbero essere sotto il controllo dellattacker, esso dovrebbe essere capace di eseguire qualunque programma con i privilegi di root.
  • Cross Zone Scripting è un tipo di attacco privilege escalation nel quale un sito web sovverte il modello di sicurezza dei browser del web così che può girare codice malevolo sui computer di tipo client.
  • Un metodo simile di jailbreaking esiste per la piattaforma S60 degli smartphones, il quale richiede linstallazione di patch softmod-style, che richiede il patching di certi file ROM mentre sono caricati nella RAM o il firmware editato simile allM33 firmware hackato usato per la PlayStation Portable per raggirare le restrizioni su codice non firmato. Nokia ha pubblicato degli updates per mettere un freno ai jailbreaking non autorizzati, in maniera simile ad Apple.
  • In particolare liPhone è stato un terreno fertile di battaglia. Il gruppo di hacker delliPod touch/iPhone tuttavia, risponde ai più recenti updates dei venditori creando nuovi modi per abilitare applicazioni di terzi quasi istantaneamente. È stato solo quando aumentò la popolarità delliPhone che il termine jailbreaking diventò ben noto in tutto il mondo.
  • I calcolatori della Texas Instruments in particolare il TI-85 e il TI-83 furono originariamente progettati per usare solo programmi interpretati scritti nella dialettica del TI-BASIC; tuttavia, dopo che gli utenti scoprirono dei bug che potrebbero essere utilizzati per permettere al codice nativo Z-80 di girare su lhardware del calcolatore, i Texas Instruments pubblicarono i dati necessari alla programmazione programming data per supportare lo sviluppo di terzi. Ciò non manda avanti gli ARM-based TI-Nspire, per i quali i jailbreaks non sono stati ancora trovati con successo.
  • Ci sono anche situazioni dove unapplicazione può usare altri servizi con alti privilegi e assunzioni incorrette su come un client potrebbe manipolare luso di questi servizi. Unapplicazione che può eseguire una Command line o una shell di comandi potrebbe avere una vulnerabilità Shell Injection se usa input invalidati come parte di un comando eseguito. Un attacker dovrebbe essere in grado di far girare comandi di sistema usando i privilegi delle applicazioni.


                                     

2.2. Vertical privilege escalation Esempio famoso di attacco usando il Demone Cron

Un esempio famoso era un programma che faceva uso del demone cron che consentiva agli utenti la schedulazione del lavoro. In genere veniva eseguito come root avendo quindi libero accesso a tutti i file di sistema e a tutti gli account utente. Principalmente lattacco avveniva in questo modo:

  • Dopo di che serve che venga creato un core dump e questo può avvenire in 2 modi, o va in errore così da generare un core dump o si lascia uccidere così da ottenere lo stesso un core dump.
  • I core dump sono generati nella directory di lavoro che coincide in questo caso con quella del demone cron. Poiché i dump sono fatti dal sistema possono essere scritti senza che venga fermato dal sistema di protezione. Limmagine della memoria del programma attaccante aveva una struttura tale da essere formata da un insieme valido di comandi per il demone cron che poteva eseguirli come root di sistema avendo massimi privilegi.
  • Lattaccante crea un programma che avrà come directory di lavoro proprio quella del demone cron.
  • A questo punto lattaccante si ritrovava un codice arbitrario che era in esecuzione come superuser.

Fortunatamente questo particolare bug è stato risolto ma rimane sempre un ottimo esempio di questo tipo di attacco.

                                     

2.3. Vertical privilege escalation Strategie per ridurre il rischio

I sistemi operativi e gli utenti possono usare le seguenti strategie per ridurre il rischio di privilege escalation:

  • Criptando il software e/o i componenti del firmware
  • Richiedendo che il codice in kernel-mode abbia la firma digitale
  • Data Execution Prevention
  • Fare lup-to-date del software antivirus
  • Address space layout randomization per rendere più difficile i buffer overruns ed eseguire istruzioni privilegiate su indirizzi conosciuti in memoria
  • Usando compilatori che ingannino il buffer overruns
  • Facendo il Patching
  • Facendo girare applicazioni con il minimo privilegio per esempio facendo girare Internet Explorer con la SID dellAmministratore disattivata nel processo di tokenizzazione in modo da ridurre labilità dellazione buffer overrun di abusare dei privilegi di un utente elevato.
                                     

3. Horizontal privilege escalation

Horizontal privilege escalation accade quando unapplicazione permette allattacker di guadagnare laccesso alle risorse le quali normalmente dovrebbere essere state protette da unapplicazione o da un utente. Il risultato è che lapplicazione esegue azioni con lo stesso ma differente contesto di sicurezza di quello inteso dalla sviluppatore dellapplicazione o dallamministratore del sistema; ciò è effettivamente una forma limitata di privilege escalation specificatamente, il non autorizzato presupposto sulle capacità di imitare altri utenti.

                                     

3.1. Horizontal privilege escalation Esempi di horizontal privilege escalation

Questo problema capita spesso nelle applicazioni web. Consideriamo il seguente esempio:

  • Utente ha accesso allaccount della banca in unapplicazione di servizi bancari online.
  • Utente B ha accesso allaccount della banca nella medesima applicazione di servizi bancari online.
  • La vulnerabilità si manifesta quando lUtente A è in grado di accedere allaccount dellUtente B eseguendo qualche tipo di attività malevola.

Questa attività malevola può essere possibile dovuta a debolezze o vulnerabilità delle comuni applicazioni web. Le potenziali vulnerabilità dellapplicazione web che possono portare a questa condizione includono:

  • Session fixation
  • La semplice intuizione delle password
  • La prevedibile session IDs nel HTTP cookie dellutente
  • Cross-site Scripting