La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

68
La riduzione dei La riduzione dei privilegi in privilegi in Windows Windows Marco Russo Marco Russo DevLeap DevLeap http://blogs.devleap.com/marco http://blogs.devleap.com/marco [email protected] [email protected]

Transcript of La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Page 1: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

La riduzione dei La riduzione dei privilegi in Windowsprivilegi in Windows

Marco RussoMarco RussoDevLeapDevLeaphttp://blogs.devleap.com/marcohttp://blogs.devleap.com/marco [email protected]@devleap.it

Page 2: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

AgendaAgenda

Cosa è un utente con privilegi minimiPerché è giusto farloVivere senza essere amministratoriPrepararsi al grande saltoGli strumentiSviluppare senza essere amministratoriNovità in Windows Vista

Regole di scrittura (riferimenti)

Page 3: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Utente con privilegi minimiUtente con privilegi minimi

La maggior parte degli utenti usa un account di amministratore locale della macchina

Qualsiasi operazione è consentita

Comodo per installare software e accedere a tutte le configurazioni del sistema operativo

Rischio latente: eseguire del codice che, volontariamente o no, abusa di questo privilegio

Utente “normale”Si dice “con privilegi minimi” perché non può installare nuove applicazioni e accedere a molte componenti critiche del sistema

È un meccanismo di difesa, anche dai propri errori prima che da attacchi esterni e/o codice maligno

Page 4: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Chi deve usare un utente Chi deve usare un utente amministratore?amministratore?

Nessuno, nella pratica quotidianaSoprattutto non per navigare su Internet e leggere mail

Ma io sono un sistemista!Bene, quindi hai già due utenti, uno amministrativo per le operazioni amministrative e uno personale per tutto il resto. Vero? Bravo!

Ma io sono un programmatore!Beh, se scrivi software su un computer attaccato a una rete e magari anche a Internet, sei pur sempre un utente come molti altri

Ma soprattutto, le applicazioni che scrivete sono utilizzabili da un utente normale? Come le provate con un utente amministratore?

Page 5: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Perché è giusto farloPerché è giusto farlo

Perché è giusto avere un utente non Perché è giusto avere un utente non amministratoreamministratore

Page 6: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

I rischiI rischi

Azione Admin UserProgramma in run automatico SI PARZ.Installazione e avviamento servizi

SI NO

Connessione a server di rete SI SIInstallazione keylogger SI NOInvio dati su porte TCP/IP SI SIInstallazione driver SI NOAnalisi traffico di rete (sniffing)

SI NO

Controllo remoto PC SI PARZ.

PARZ. = Vulnerabilità parzialePARZ. = Vulnerabilità parziale

Page 7: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Privilegi minimiPrivilegi minimi

Run with Least PrivilegeSignifica eseguire con il minimo dei privilegi

Si applica ad applicazioni Web e Windows

LPA: Least Privileged AccountUtente con privilegi minimi

Si applica a un utente che non è amministratoreIn Windows, un utente che appartiene al gruppo Users di default

Page 8: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Perché è giusto farloPerché è giusto farlo

Un’applicazione andrebbe eseguita con il minimo dei privilegi necessari

Limita i danni in caso di errore o attacco

Sicurezza, insomma...

Un’applicazione dovrebbe essere eseguibile con il minimo dei privilegi necessari

Il programmatore deve pensarci

Non tutti i programmatori lo fanno

È un motivo per cui i sistemisti odiano i programmatori

Page 9: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Perché è giusto farloPerché è giusto farlo

I vantaggi:Conseguenze di eventuali virus: limitate

Riduce superficie di attacco

No spywareDifficile che si installino, non hanno diritti sufficienti

Esperimento:Un anno di navigazione con un PC senza antivirus, senza anti-spyware e senza firewall

Ma tutti gli aggiornamenti installati tempestivamente

Dopo un anno: nessun virus, nessuno spyware

Attenzione: non è una garanzia, ma aiuta al 95%Si resta sempre e comunque esposti a vulnerabilità 0dayUtente consapevole, non può essere considerato un utente medio

Page 10: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Vivere senza essere Vivere senza essere amministratoriamministratori

Page 11: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

L’esperienza da utenteL’esperienza da utente

Create un logon associato al gruppo UsersNo Administrators

No Power Users

Al logon scoprirete che:Non potete installare nuove applicazioni

Non potete installare plug-in e ActiveX su Internet Explorer

Non potete aggiornare le applicazioni esistenti

Alcune applicazioni già installate non si possono più avviare o presentano dei problemi di funzionamento

Page 12: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Cos’è che non va?Cos’è che non va?

Perché le applicazioni smettono di funzionare:

60% - Accesso a file/directory non autorizzato

39% - Accesso a Registry non autorizzato

<1% - Mancanza di privilegi sufficienti

Soluzioni1. Scrivere meglio il codice…

Ma non sempre si può

2. Individuare i problemi e aumentare gli accessi al minimo indispensabile (su file e registry)

Su file e registry, work around fino a nuova versione

3. Aumentare i diritti dell’utenteNon è una soluzione, è un tornare al problema

Page 13: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Guida alla sopravvivenzaGuida alla sopravvivenza

Il 99% dei problemi è causato da accessi non autorizzati al File System e al Registry

Due tool indispensabili per la diagnosi:FileMon

RegMon

Entrambi su www.sysinternals.com

Page 14: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Problemi di File SystemProblemi di File System

Directory leggibili da Everyone e modificabili solo da amministratori e power users:

C:\

C:\WINDOWS

C:\WINDOWS\SYSTEM32

C:\PROGRAM FILES

Spesso i programmi aprono in scrittura file in queste directory

Anche se poi fanno solo operazioni di lettura

Comunque è un errore scrivere in queste directory, ogni utente dovrebbe avere configurazioni separate

Page 15: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Problemi di RegistryProblemi di Registry

Hive leggibili da Everyone e modificabili solo da amministratori

HKEY_LOCAL_MACHINE

Spesso i programmi aprono in scrittura queste chiavi di registry

Anche se poi fanno solo operazioni di lettura

Comunque è un errore scrivere in questa parte di registry, ogni utente dovrebbe avere configurazioni separate e usare HKEY_CURRENT_USER

Page 16: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Accessi a File e RegistryAccessi a File e Registry

Windows ExplorerWindows ExplorerRegEditRegEdit

Page 17: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Perché tutti questi problemiPerché tutti questi problemi

Molti in buona fedeWindows 9x non ha ACL (Access Control List)Tutti gli utenti possono fare tutto (o quasi) su disco e registryLe applicazioni sviluppate su Windows 9x funzionano su Windows 2000/XP/2003, ma ignorano l’aspetto della securityAltre applicazioni non sono state mai testate da utenti non amministratori…

Page 18: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Preparazione al grande saltoPreparazione al grande salto

Page 19: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

La vita dura dell’utenteLa vita dura dell’utente

Si può e si deve sviluppare con un utente non amministratore

È l’unico modo per capire subito cosa succede ai programmi sviluppati

È anche una questione psicologica: vivere sulla propria pelle certe esperienze fa aumentare la sensibilità al problema

È un modo più sicuro di usare un PCIndipendentemente da firewall e antivirus

Page 20: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Come fare il grande saltoCome fare il grande salto

Caratteristiche dell’utente:No gruppo Administrators

No gruppo Power Users

Sì gruppo Users

Per uno sviluppatoreCreare un gruppo “Developer” o “Advanced User”

Si definiranno le permission sul gruppo e non sull’utente

In caso di nuovi utenti sviluppatori sarà facile abilitarli

Associare l’utente a tale gruppo

Page 21: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Come fare il grande saltoCome fare il grande salto

Tre strade:Cambiare il proprio utente (amministratore locale della macchina) in un utente “normale”

Problema: ciò che è già installato resta accessibile all’utente solo perché è owner di registry e directory

Si rischia di non percepire alcuni problemi

Creare un nuovo utenteStrada consigliabile

Si perdono i profili

Reinstallare tuttoSi perdono i profili

Si evitano “eredità” del passato

Ci vuole un sacco di tempo!!

Page 22: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Prepararsi psicologicamentePrepararsi psicologicamente

Perché questo avvertimento?Tanti programmi e tante operazioni non funzioneranno più come prima!

I primi due giorni sono i più duriCi saranno delle crisi…Resistete! Potete farcela!Dopo una settimana:

Vi sentirete meglio di prima

Avvertirete un maggiore controllo sulla macchina

Vi chiederete come avete fatto prima

Page 23: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Gli strumentiGli strumenti

Page 24: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

RunAsRunAs

Il primo strumento da usare è RunAsConsente di avviare un programma con le credenziali di un altro utente

Richiede un logon a ogni esecuzione

Si può fare uno script con le password in chiaro ma… bye bye security!

Va usato solo per le applicazioni che necessitano realmente di un amministratore:

Configurazione di sistema

Console amministrative

FileMon, RegMon, ProcessExplorer

Page 25: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

RunAsAdminRunAsAdmin

Utility freehttp://sourceforge.net/projects/runasadmin/

Consente di fare logon come amministratore ma usando dei privilegi ridottiUtile per usare utenti Amministratori in maniera più sicuraSi può fare il RunAs dei programmi scegliendo come modificare il token da associare al processo

Page 26: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

PrivBarPrivBar

Utility freehttp://www.speakeasy.org/~aaronmar/NonAdmin/PrivBar.zip

Visualizza il livello di privilegio con cui sono eseguiti Explorer e Internet Explorer

Page 27: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

RunAs, RunAsAdminRunAs, RunAsAdmine PrivBare PrivBar

RunAs su ExplorerRunAs su ExplorerRunAs da Command PromptRunAs da Command PromptRunAsAdminRunAsAdminPrivBarPrivBar

Page 28: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Riparare le applicazioni scritte maleRiparare le applicazioni scritte male

Individuare Registry e Directory di cui modificare le ACL

Usare RegMon e FileMonDi solito si trova un Access Denied poco prima dell’interruzione del programma

Abbassare al minimo indispensabile i diritti delle ACL

Solo sulla directory interessata

Meglio (quando possibile) solo sul file interessato

Usare gruppo “Developer”/“Advanced User” piuttosto che il singolo utente

Page 29: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

FileMonFileMon

Utility freehttp://www.sysinternals.com/Utilities/Filemon.html

Monitor degli accessi al file systemIntercetta tutte le chiamate di I/O

Può rallentare le operazioni, in particolare se nella finestra si visualizza tutto senza filtri

Utile anche per analizzare il responsabile di eccessive operazioni di I/O

Page 30: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

RegMonRegMon

Utility freehttp://www.sysinternals.com/Utilities/Regmon.html

Monitor degli accessi al registryIntercetta tutte le chiamate alle API del Registry

Può rallentare le operazioni, in particolare se nella finestra si visualizza tutto senza filtri

Utile anche per analizzare dove risiede la configurazione di un programma

Talvolta non è dove dovrebbe essereEs. configurazione per utente in HKLM\Software

Page 31: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Uso di FileMon e RegMonUso di FileMon e RegMon

Filtrare le operazioni ACCESS DENIEDErrore che dipende da insufficienza di privilegi

Identificazione del problema e possibili soluzioni:

Garantire l’accesso da un utente normale a file/directory interessate

Workaround temporaneo se non è una propria applicazione

Segnalare il bug e installare poi una versione corretta

Modificare il codice di accesso alla risorsaSe è un proprio programma – durante il debug questi problemi emergono quasi completamente se non si è amministratori

Page 32: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Riparare applicazioniRiparare applicazioniscritte male…scritte male…

FileMonFileMonRegMonRegMon

Page 33: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Application Compatibility ToolkitApplication Compatibility Toolkit

Alcune funzionalità di ACT consentono di bypassare alcuni dei problemi più frequentiLUA shim

Crea file system e registry virtuale in modo analogo a quanto fa Vista

Richiede .NET 1.1 e SQL Server 2000 (o MSDE)

Page 34: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Sviluppare senza essere Sviluppare senza essere amministratoriamministratori

Indicazioni specifiche per i programmatoriIndicazioni specifiche per i programmatori

Page 35: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Setup di Visual Studio .NET 2003Setup di Visual Studio .NET 2003

Visual Studio .NET 2003 crea alcuni gruppi a cui uno sviluppatore deve appartenere:

VS Developers

Debugger Users

Inserire a mano gli utenti sviluppatori in questi gruppiAlcune attività restano agli amministratori:

Registrazione di componenti COM (regsvr32/regasm)

Installazione di assembly nella GAC (gacutil)

Installazione di componenti .NET nel catalogo COM+ (regsvcs)

Page 36: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Setup di Visual Studio 2005Setup di Visual Studio 2005

Visual Studio 2005 usa solo un gruppo speciale:

Debugger Users

Inserire a mano gli utenti sviluppatori in tale gruppoAlcune attività restano agli amministratori (come in VS.NET 2003):

Registrazione di componenti COM (regsvr32/regasm)

Installazione di assembly nella GAC (gacutil)

Installazione di componenti .NET nel catalogo COM+ (regsvcs)

Page 37: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Problemi di debugProblemi di debug

Gruppo Debugger UsersA questo gruppo è assegnato il privilegio SeDebugPrivilege

Un virus potrebbe sfruttare questo privilegio per alcuni attacchi ai processi in esecuzione

Per le applicazioni .NET (managed) il debug al processo di un altro utente richiede utente admin

Non è così per applicazioni Unmanaged

Problemi per chi sviluppa servizi o siti webWorkaround: in debug eseguire il servizio/sito web con lo stesso utente con cui si fa il debug

Se debug remoto: richiesto privilegio SeDebugPrivilege anche su macchina remota

Page 38: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Debug ASP.NETDebug ASP.NET

Due aspettiL’utente con cui gira l’applicazione

Usare lo stesso utente con cui si sviluppa per fare debug

I diritti sulle directory usate da ASP.NETAbilitare i diritti su tali directory all’utente con cui gira l’applicazione ASP.NET

Windows 2000/XP:L’utente associato a ASPNET_WP.EXE è uno solo per tutta la macchina

Workaround: eseguire VS.NET con RunAs _solo_ limitatamente alla fase di debug

Windows 2003:Gli application pool di II6 aiutano nella gestione di diverse applicazioni con credenziali differenti

Visual Studio 2005:Si può usare “Visual Web Developer Web Server”.

Page 39: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Modifica utente ASP.NETModifica utente ASP.NET

IIS 5 (fino a Windows XP)Modificare tag processModel del file web.config

<processModel enable="true" userName="DOMAIN\username" password="pwd" / >

Usare ASPNET_SETREG per cifrare la password senza lasciarla in chiaro (KB 329290)

IIS 6 (Windows 2003)Creare un Application Pool

Assegnare utente sviluppatore all’application pool

Assegnare utente sviluppatore a gruppo IIS_WPG

Altrimenti non funziona con ASP.NET

Assegnare la Virtual Directory all’Application Pool

Page 40: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

VB6VB6

Brutte notizieNon è pensato per essere utilizzato da utenti non amministratoriSi può ovviare con le tecniche descritte prima

Usare FileMon e RegMon

Individuare punti in cui modificare le ACL

Molti problemi causati da componenti (ActiveX) di terze parti

Anche qua si può ovviare con modifica di ACL

Problema: è un lavoro immane e si rischia di tornare al punto di partenza (bassa security)

Page 41: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Novità in Windows VistaNovità in Windows Vista

Page 42: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Aumento della protezione in Windows Aumento della protezione in Windows VistaVista

Servizi eseguiti con Least-Privileged AccountDriver in modalità utente se non richiedono funzioni disponibili solo nel kernel

Gestione diretta I/O, interrupt, accesso hardware, istruzioni privilegiate della CPU

Un driver per un dispositivo collegato su USB non ne ha bisogno

User Account ControlGestione automatizzata del RunAs per tutti gli utenti

Page 43: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

User

Kernel

Admin

System Services 1. Pochi

layer

2. La maggior parte con alti privilegi

3. Controllo limitato tra I layer

Windows XPWindows XP

Page 44: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

System Services

DDD

User Account Control (LUA)

Service Hardenin

g

Admin

Service 1

DDD

Kernel

Service 2

Service 3

DDD

Low Privilege Services

Low rights programs

1. Maggior numero di layer

2. Servizi ripartiti

3. Ridotta la dimensione di layer ad alto rischio

LUA User

Svc 6

Svc 7

User mode drivers

VistaVista

Page 45: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Service hardeningService hardening

Esecuzione con privilegi minimi (Least-privilege Account)

Riduce al minimo accesso a risorse

Riduce il potenziale danno e il numero di vulnerabilità critiche nei servizi

Estende il modello di sicurezza esistente e fornisce opzioni diverse in base alle caratteristiche del servizioGood Spostamento a un least privilege account (LPA)

Ristrutturazione del servizio in due parti dove necessario (separazione zona critica dalle altre che possono usare LPA)

Eliminazione di privilegi Windows non necessari per singolo servizio

Fornisce regole per firewall

Better Garantisce accesso al Sid del servizio attraverso ACL su risorse specifiche

Best Usa SID-Servizio, ACL e “write-restricted token” per isolare i servizi

Page 46: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Cambiamenti ai servizi di VistaCambiamenti ai servizi di VistaServizi comuni alle due Servizi comuni alle due piattaformepiattaforme

Windows XP SP2LocalSystem Wireless

ConfigurationSystem Event NotificationNetwork Connections (netman)COM+ Event SystemNLARasautoShell Hardware DetectionThemesTelephonyWindows AudioError ReportingWorkstationICS

RemoteAccessDHCP ClientW32timeRasmanbrowser6to4Help and supportTask schedulerTrkWksCryptographic ServicesRemovable StorageWMI Perf AdapterAutomatic updatesWMIApp ManagementSecondary LogonBITS

NetworkService

DNS Client

Local Service SSDPWebClientTCP/IP NetBIOS helperRemote registry

Vista client

LocalSystemFirewall Restricted

Removable StorageWMI Perf AdapterAutomatic updates

WMIApp ManagementSecondary Logon

LocalSystemDemand started

BITS

Network ServiceFully Restricted

DNS ClientICSRemoteAccessDHCP ClientW32timeRasman

browser6to4Task schedulerIPSEC ServicesServerNLA

Network ServiceNetwork Restricted

TrkWksCryptographic Services

Local ServiceNo Network Access

Wireless ConfigurationSystem Event NotificationNetwork ConnectionsShell Hardware Detection

RasautoThemesCOM+ Event System

Local ServiceFully Restricted

TelephonyWindows AudioTCP/IP NetBIOS helperWebClientSSDP

Error ReportingEvent LogWorkstationRemote registry

Page 47: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

User Account Control (UAC)User Account Control (UAC)

Nome precedente: “LUA”Utenti fanno logon come non-admin per defaultInterfaccia utente per elevare privilegi ad amministratore per operazioni specificheApplicazioni e tool amministrativi devono essere “UAC area”

Differenziare le funzionalità disponibili in base ai privilegi dell’utente

Applicare controlli di sicurezza corretti alle funzionalità del prodotto

Page 48: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Approccio UACApproccio UAC

Migliorare la produttività garantendo le permission solo quando necessario

Consente a utenti standard di eseguire funzionalità chiave senza impattare sulle impostazioni globaliAiuta a isolare i file di sistema e i dati da codice maligno o erratoLimita i danni potenziali ai dati personali usando Protected Mode IE

Tutte le applicazioni sono eseguite come utente standard se non sono configurate diversamenteIsolamento a livello di processo di applicazioni amministrative e ad alto rischio

Page 49: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Windows Vista UAC GoalsWindows Vista UAC Goals

Tutti gli utenti sono Standard User per default Token filtrato creato durante il logon

Solo applicazioni marcate appositamente ricevono il token non filtrato

Amministratori usano i privilegi completi solo per operazioni e applicazioni amministrative

L’utente fornisce un consenso esplicito prima di usare privilegi elevati

Alta compatibilità delle applicazioni Redirezione dei dati

Consente a vecchie applicazioni di essere eseguite come utente standard

Le impostazioni scritte su chiavi riservate del registry sono salvate in un’immagine virtuale del Registry, visibile solo dal programma che le ha effettuate

Rilevamento procedure installazione

Page 50: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

UAC ArchitectureUAC Architecture Standard User RightsStandard User Rights

Administrative RightsAdministrative Rights

Admin logonAdmin logon

““Standard User” TokenStandard User” Token

Admin TokenAdmin Token

User ProcessUser Process

• Change Time Change Time

ZoneZone

• Run IT Approved Run IT Approved

ApplicationsApplications

• Install FontsInstall Fonts

• Install PrintersInstall Printers

• Run MSN Run MSN

MessengerMessenger

• Etc.Etc.

Standard User ModeStandard User ModeSplit TokenSplit TokenAdmin PrivilegesAdmin Privileges

Admin PrivilegeAdmin Privilege

Standard User PrivilegeStandard User Privilege

Admin PrivilegeAdmin Privilege

Admin PrivilegeAdmin PrivilegeAbbyAbby

Page 51: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Contenuti di uno Standard User TokenContenuti di uno Standard User Token

Privilegi tipici di Standard User tokenBypass traverse checking (SeChangeNotify)

Shut down the system (SeShutdown)

Increase Working Set Size (SeIncreaseWorkingSet)

Remove computer from docking station (SeUndock)

Change Time Zone (SeChangeTimeZone)Nuovo in Vista

Tutti gli altri privilegi sono rimossiRID privilegiati impostati a DENY_ONLY

Es. Administrators, Enterprise Admins, Policy Admins, Power User, etc. – tutti i gruppi che determinano lo split del token

Page 52: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Come eseguire codice con privilegi Come eseguire codice con privilegi elevatielevati

Configurare un’applicazione che richiede privilegi di amministratore attraverso il manifestIndividuazione installerApplication Compatibility shims (automatismo)Tab Compatibility in Program PropertiesRight-click “Run as Administrator” (Run Elevated… in beta precedenti di Vista)

Page 53: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Esempi interfaccia utenteEsempi interfaccia utente

Page 54: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Richiesta elevazione privilegiRichiesta elevazione privilegi

Page 55: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Interfaccia con livelli di warning diversiInterfaccia con livelli di warning diversi

Applicazione sistema operativoApplicazione sistema operativo

Applicazione UnsignedApplicazione UnsignedApplicazione signedApplicazione signed

Page 56: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

ConclusioneConclusione

La security è un problema di tutti,non solo di Microsoft

Chiunque scriva software è parte del problemaCiascuno deve fare la sua parte

Per cominciare:Scrivere applicazioni utilizzabili da utenti “normali”

Sviluppare con un utente non amministratore

Page 57: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Link utiliLink utili

Bug di Visual Studio, KB833896, http://support.microsoft.com/default.aspx?scid=kb;EN-US;833896

Uso di aspnet_setreg, KB329290, http://support.microsoft.com/default.aspx?scid=kb;EN-US;329290

Developing Software in Visual Studio .NET with Non-Administrative Privilegeshttp://msdn.microsoft.com/library/en-us/dv_vstechart/html/ tchDevelopingSoftwareInVisualStudioNETWithNon-AdministrativePrivileges.asp

Keith Brown - Libri e bloghttp://pluralsight.com/blogs/keith/default.aspx

Why non admin – Wikihttp://nonadmin.editme.com

Using a Least-Privileged Accounthttp://www.microsoft.com/technet/security/secnews/articles/lpuseacc.mspx

Page 58: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Link utiliLink utili

Blog User Account Control in Vista http://blogs.msdn.com/uac/

Blog Aaron Margosishttp://blogs.msdn.com/aaron_margosis/default.aspx

Page 59: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Page 60: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Regole di scrittura del codiceRegole di scrittura del codice

Page 61: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

4 semplici regole4 semplici regole

Separare dati setup e configurazione utenteAprire solo in lettura se si deve leggereAccedere a risorse con privilegi minimiMemorizzare i dati per utente

Page 62: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Dati setup e configurazione utenteDati setup e configurazione utente

Dati setupInformazioni sull’installazione

Directory con risorse

Impostazioni “globali” come porte TCP/IP per un servizio

Configurazione di un servizio

Scrivere durante l’installazione su:Registry: hive HKLM (HKEY_LOCAL_MACHINE)

C:\Program Files\...

Page 63: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Dati setup e configurazione utenteDati setup e configurazione utente

Configurazione utente (su file)Modelli, configurazioni su file (XML o altro):

C:\Documents and Settings\NOMEUTENTE\Application Data\NOMEAZIENDA\NOMEAPPLICAZIONE\...

Modelli, configurazioni su file (XML o altro) per tutti gli utenti:

C:\Documents and Settings\All Users\Application Data\NOMEAZIENDA\NOMEAPPLICAZIONE\...

Directory in sola lettura per utenti “normali”Ci scrivono solo i gruppi Administrators e Power Users

Per ottenere queste directory usare:

System.Environment.GetFolderPathVedere parametro Environment.SpecialFolder

Molti casi specifici già definiti

Page 64: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Dati setup e configurazione utenteDati setup e configurazione utente

Configurazione utente (su registry)Configurazione globale (directory con dati, percorsi, impostazioni definite in fase di Setup)HKEY_LOCAL_MACHINE (abbreviato in HKLM)

Solo in lettura per utenti “normali”Ci scrive soltanto il gruppo Administrators

Configurazione di partenza per tutti gli utenti:HKEY_USERS\.DEFAULT

Contenuto copiato nel profilo di un utente al primo logon sulla macchina, non interviene sui profili già esistentiSolo in lettura per utenti “normali”Ci scrive soltanto il gruppo Administrators

Configurazione specifica per ogni utenteHKEY_CURRENT_USER (abbreviato in HKCU)

Diritti completi per l’utenteImpossibile vedere la configurazione di un utente diverso (a meno che non si sia Administrators)

Page 65: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Aprire in sola letturaAprire in sola lettura

Il setup viene eseguito da un amministratore

Crea e modifica qualsiasi file e/o chiave di registry

Il programma viene eseguito da un utenteDopo il setup accedere solo in lettura alle informazioni di configurazione

Eseguire Open con richiesta diritti sola lettura

Effettuare solo operazioni Read

Errore comune:Fare la Open con diritti di lettura e scrittura

In seguito, fare solo Read senza fare Write

Il problema è che la Open fallisce subito…

Morale: Open va READ ONLY

Page 66: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Accedere a risorse con privilegi minimiAccedere a risorse con privilegi minimi

Più in generale, l’accesso a una risorsa va fatto richiedendo privilegi minimi

Aprire un file in lettura se non serve scrivere

Accedere a processi, thread e semafori senza richiedere diritti più alti del necessario

Se si scrive un servizio o un sito web, assegnare un utente con privilegi minimi per accedere alle risorse necessarie al programma

Evitare LocalSystem come utente di default

Un errore (o un attacco) può essere devastante

Page 67: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Memorizzare i dati per utenteMemorizzare i dati per utente

I dati dell’utente per default vanno su My Documents

Environment.GetFolderPath( Environment.SpecialFolder.Personal )

Diritti di ownership per l’utente

Ogni applicazione può vedere “tutti i dati” dell’utente

Anche per questo è importante evitare l’installazione di virus e spyware

Dove mettere dati visibili e modificabili da tutti gli utenti?

Page 68: La riduzione dei privilegi in Windows Marco Russo DevLeapdevleap.it.

Memorizzare i dati per utenteMemorizzare i dati per utente

Dove mettere dati visibili e modificabili da tutti gli utenti?

Non esiste uno standard

Problema latente di sicurezza: i dati sono pubblici

Esempio: un MDB con la contabilità… non è una buona idea renderlo accessibile a tutti

Possibile soluzione:Individuare una directory comune e cambiare le ACL durante il setup (una potrebbe essere SpecialFolder.CommonApplicationData)

Resta il problema di aggiungere dei nuovi utenti in futuro: deve farlo l’amministratore

NON LASCIARE DIRITTI A EVERYONE!!!