Upload
elario-alfano
View
219
Download
0
Embed Size (px)
Citation preview
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
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)
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
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?
Perché è giusto farloPerché è giusto farlo
Perché è giusto avere un utente non Perché è giusto avere un utente non amministratoreamministratore
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
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
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
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
Vivere senza essere Vivere senza essere amministratoriamministratori
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
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
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
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
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
Accessi a File e RegistryAccessi a File e Registry
Windows ExplorerWindows ExplorerRegEditRegEdit
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…
Preparazione al grande saltoPreparazione al grande salto
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
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
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!!
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
Gli strumentiGli strumenti
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
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
PrivBarPrivBar
Utility freehttp://www.speakeasy.org/~aaronmar/NonAdmin/PrivBar.zip
Visualizza il livello di privilegio con cui sono eseguiti Explorer e Internet Explorer
RunAs, RunAsAdminRunAs, RunAsAdmine PrivBare PrivBar
RunAs su ExplorerRunAs su ExplorerRunAs da Command PromptRunAs da Command PromptRunAsAdminRunAsAdminPrivBarPrivBar
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
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
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
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
Riparare applicazioniRiparare applicazioniscritte male…scritte male…
FileMonFileMonRegMonRegMon
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)
Sviluppare senza essere Sviluppare senza essere amministratoriamministratori
Indicazioni specifiche per i programmatoriIndicazioni specifiche per i programmatori
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)
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)
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
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”.
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
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)
Novità in Windows VistaNovità in Windows Vista
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
User
Kernel
Admin
System Services 1. Pochi
layer
2. La maggior parte con alti privilegi
3. Controllo limitato tra I layer
Windows XPWindows XP
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
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
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
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
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
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
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
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
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)
Esempi interfaccia utenteEsempi interfaccia utente
Richiesta elevazione privilegiRichiesta elevazione privilegi
Interfaccia con livelli di warning diversiInterfaccia con livelli di warning diversi
Applicazione sistema operativoApplicazione sistema operativo
Applicazione UnsignedApplicazione UnsignedApplicazione signedApplicazione signed
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
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
Link utiliLink utili
Blog User Account Control in Vista http://blogs.msdn.com/uac/
Blog Aaron Margosishttp://blogs.msdn.com/aaron_margosis/default.aspx
© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Regole di scrittura del codiceRegole di scrittura del codice
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
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\...
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
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)
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
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
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?
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!!!