Principi de mínim privilegi
En seguretat de la informació, informàtica i altres camps, el principi de mínim privilegi (PoLP), també conegut com a principi de privilegi mínim (PoMP) o principi de mínima autoritat (PoLA), requereix que en una capa d'abstracció particular d'un entorn informàtic, cada mòdul (com ara un procés, un usuari o un programa, depenent del tema) només hagi de poder accedir a la informació i els recursos necessaris per al seu propòsit legítim.[1]
Detalls
[modifica]El principi significa donar a qualsevol compte d'usuari o procés només els privilegis que són essencialment vitals per dur a terme les funcions previstes. Per exemple, un compte d'usuari amb l'únic propòsit de crear còpies de seguretat no necessita instal·lar programari: per tant, només té drets per executar còpies de seguretat i aplicacions relacionades amb les còpies de seguretat. Qualsevol altre privilegi, com ara la instal·lació de programari nou, està bloquejat. El principi també s'aplica a un usuari d'ordinador personal que normalment treballa amb un compte d'usuari normal i obre un compte privilegiat i protegit amb contrasenya només quan la situació ho exigeix absolutament.
Quan s'aplica als usuaris, també s'utilitzen els termes accés d'usuari mínim o compte d'usuari amb menys privilegis (LUA), que fan referència al concepte que tots els comptes d'usuari s'han d'executar amb el mínim de privilegis possible i també iniciar aplicacions amb el mínim de privilegis possible.
El principi (de mínim privilegi) és àmpliament reconegut com una consideració de disseny important per millorar i donar un "impuls" molt necessari a la protecció de les dades i la funcionalitat contra errors (tolerància a errors) i comportaments maliciosos.
Els beneficis del principi inclouen:
- Seguretat intel·lectual. Quan el codi té un abast limitat de canvis que pot fer a un sistema, és més fàcil provar les seves possibles accions i interaccions amb altres aplicacions amb finalitats de seguretat. A la pràctica, per exemple, les aplicacions que s'executen amb drets restringits no tindran accés per realitzar operacions que podrien fer fallar una màquina o afectar negativament altres aplicacions que s'executen al mateix sistema.
- Millor seguretat del sistema. Quan el codi està limitat en les accions que pot realitzar a nivell de sistema, les vulnerabilitats d'una aplicació no es poden utilitzar per explotar la resta de la màquina. Per exemple, Microsoft afirma que "l'execució en mode d'usuari estàndard ofereix als clients una major protecció contra danys accidentals a nivell de sistema causats per "atacs de shatter" i programari maliciós, com ara rootkits, programari espia i virus indetectables".[2]
- Facilitat de desplegament. En general, com menys privilegis requereixi una aplicació, més fàcil serà de desplegar en un entorn més gran. Això sol ser el resultat dels dos primers avantatges: les aplicacions que instal·len controladors de dispositiu o requereixen privilegis de seguretat elevats solen tenir passos addicionals en el seu desplegament. Per exemple, a Windows, una solució sense controladors de dispositiu es pot executar directament sense instal·lació, mentre que els controladors de dispositiu s'han d'instal·lar per separat mitjançant el servei d'instal·lació de Windows per tal de concedir privilegis elevats al controlador.[3]
A la pràctica, existeixen múltiples definicions de veritable (mínim privilegi) que competeixen entre si. A mesura que la complexitat del programa augmenta ràpidament, també ho fa el nombre de problemes potencials, cosa que fa que un enfocament predictiu sigui poc pràctic. Els exemples inclouen els valors de les variables que pot processar, les adreces que necessitarà o el temps precís en què es requeriran aquestes coses. Els sistemes de capacitat d'objectes permeten, per exemple, ajornar l'atorgament d'un privilegi d'ús únic fins al moment en què s'utilitzarà. Actualment, l'enfocament pràctic més proper és eliminar els privilegis que es poden avaluar manualment com a innecessaris. El conjunt de privilegis resultant normalment supera els privilegis mínims requerits per al procés.
Una altra limitació és la granularitat del control que l'entorn operatiu té sobre els privilegis per a un procés individual.[4] A la pràctica, rarament és possible controlar l'accés d'un procés a la memòria, el temps de processament, les adreces dels dispositius d'E/S o els modes amb la precisió necessària per facilitar només el conjunt precís de privilegis que requerirà un procés.
La formulació original és de Jerome Saltzer:[5]
Cada programa i cada usuari privilegiat del sistema hauria d'operar utilitzant la mínima quantitat de privilegis necessària per completar la tasca.
— Jerome Saltzer, Comunicacions de l'ACM
Peter J. Denning, en el seu article "Sistemes operatius tolerants a fallades", ho va situar en una perspectiva més àmplia entre "Els quatre principis fonamentals de la tolerància a fallades".
Les "assignacions dinàmiques de privilegis" ja van ser tractades anteriorment per Roger Needham el 1972.[6][7]
Històricament, la instància més antiga de (mínim privilegi) és probablement el codi font de login.c, que comença l'execució amb permisos de superusuari i, en l'instant en què ja no són necessaris, els descarta mitjançant setuid() amb un argument diferent de zero, tal com es demostra al codi font de la versió 6 d'Unix.
Implementació
[modifica]El nucli sempre s'executa amb els màxims privilegis, ja que és el nucli del sistema operatiu i té accés al maquinari. Una de les principals responsabilitats d'un sistema operatiu, especialment d'un sistema operatiu multiusuari, és la gestió de la disponibilitat del maquinari i les sol·licituds d'accés des dels processos en execució. Quan el nucli falla, els mecanismes pels quals manté l'estat també fallen. Per tant, fins i tot si hi ha una manera que la CPU es recuperi sense un restabliment complet, la seguretat continua aplicant-se, però el sistema operatiu no pot respondre correctament a l'error perquè no va ser possible detectar-lo. Això es deu al fet que l'execució del nucli es va aturar o el comptador del programa va reprendre l'execució des d'algun lloc d'un bucle infinit i, normalment, no funcional. Això seria similar a experimentar amnèsia (error d'execució del nucli) o quedar atrapat en un laberint tancat que sempre torna al punt d'inici (bucles tancats).

Si l'execució es reprèn després de la fallada carregant i executant codi troià, l'autor del codi troià pot usurpar el control de tots els processos. El principi del mínim privilegi obliga el codi a executar-se amb el nivell de privilegis/permisos més baix possible. Això significa que el codi que reprèn l'execució del codi, ja sigui un troià o simplement l'execució de codi que repren des d'una ubicació inesperada, no tindria la capacitat de realitzar processos maliciosos o no desitjats. Un mètode utilitzat per aconseguir-ho es pot implementar al maquinari del microprocessador. Per exemple, a l'arquitectura Intel x86, el fabricant va dissenyar quatre "modes" d'execució (de l'anell 0 a l'anell 3) amb graus d'accés graduats, de manera molt semblant als sistemes d'autorització de seguretat de les agències de defensa i intel·ligència.
Tal com s'implementa en alguns sistemes operatius, els processos s'executen amb un conjunt de privilegis potencial i un conjunt de privilegis actiu. Aquests conjunts de privilegis s'hereten del pare tal com determina la semàntica de fork (). Un fitxer executable que realitza una funció privilegiada (que constitueix tècnicament un component del TCB i que alhora s'anomena programa o procés de confiança) també pot estar marcat amb un conjunt de privilegis. Aquesta és una extensió lògica de les nocions de conjunt d'ID d'usuari i conjunt d'ID de grup.
L'herència de privilegis de fitxer per part d'un procés està determinada per la semàntica de la família de crides al sistema exec (). La manera precisa en què interactuen els privilegis de procés potencials, els privilegis de procés reals i els privilegis de fitxer pot arribar a ser complexa. A la pràctica, el privilegi mínim es practica forçant un procés a executar-se només amb els privilegis requerits per la tasca. L'adherència a aquest model és força complexa i propensa a errors.
Principis similars
[modifica]El concepte de minimització de la base de computació de confiança (TCB) dels Criteris d'Avaluació de Sistemes informàtics de Confiança (TCSEC) és un requisit molt més estricte que només s'aplica a les classes d'assegurança funcionalment més fortes (enllaç a la secció Divisions i classes dels Criteris d'Avaluació de Sistemes informàtics de Confiança), és a dir, les classes B3 i A1 (que són funcionalment idèntiques però difereixen pel que fa a les proves i la documentació requerides).
El privilegi mínim sovint s'associa amb la classificació de privilegis: és a dir, assumir els privilegis necessaris en l'últim moment possible i descartar-los tan bon punt ja no siguin estrictament necessaris, reduint així ostensiblement les conseqüències del codi erroni que explota involuntàriament més privilegis dels que es mereixen. El privilegi mínim també s'ha interpretat en el context de la distribució de permisos de control d'accés discrecional (DAC), per exemple afirmant que donar a l'usuari U accés de lectura/escriptura al fitxer F viola el privilegi mínim si U pot completar les seves tasques autoritzades només amb permís de lectura.
Referències
[modifica]- ↑ Saltzer, Jerome H.; Schroeder, Michael D. Proceedings of the IEEE, 63, 9, 1975, pàg. 1278–1308. DOI: 10.1109/proc.1975.9939. ISSN: 0018-9219. OCLC: 5871551104.
- ↑ Jonathan, Clark. «Virtualization Guru Writes "User-mode is a Good Thing - Deployment to Locked-down Accounts without Security Elevation"» (en anglès). Arxivat de l'original el 10 February 2013. [Consulta: 15 març 2013].
- ↑ Aaron Margosis. «Problems of Privilege: Find and Fix LUA Bugs» (en anglès). Microsoft, 01-08-2006.
- ↑ «Matt Bishop, Computer Security: Art and Science, Boston, MA: Addison-Wesley, 2003. pp. 343-344 cited Barnum & Gegick 2005» (en anglès). Arxivat de l'original el 2007-10-20. [Consulta: 17 novembre 2007].
- ↑ Saltzer, Jerome H. Communications of the ACM, 17, 7, 1974, pàg. 388–402. DOI: 10.1145/361011.361067. ISSN: 0001-0782.
- ↑ Needham, R. M.. «Protection systems and protection implementations». A: Proceedings of the AFIPS '72 Fall Joint Computer Conference, December 5-7, 1972, Part I (en anglès), 1972, p. 571–578. DOI 10.1145/1479992.1480073.
- ↑ Fred B. Schneider. «Least Privilege and More» (en anglès).