Table of Contents

10. Controlul accesului

Chiar dacă o aplicație este securizată din punct de vedere software este posibil să existe probleme de configurare a aplicației sau permisiuni care îi permit să realizeze intenționat sau nu acțiuni nelegitime. Pentru aceasta sistemul va configura politice și mecanisme care să controleze accesul aplicației la resursele sistemului. Principiul least privilege înseamnă că unei aplicații îi vor fi furnizate doar acele permisiuni necesare.

Subiecte abordate

Resurse

Exerciții

Arhiva de suport pentru exerciții se găsește aici. Descărcați arhiva și apoi decomprimați-o folosind comenzile:

wget http://koala.cs.pub.ro/training/res/secure-low-level-programming/arc/10-controlul-accesului-skel.zip
unzip 10-controlul-accesului-skel.zip
cd 10-controlul-accesului-skel/

setuid

Accesăm directorul setuid/ din arhiva de suport.

Urmăriți conținutul fișierului prog.c și rulați executabilul prog. Programul încearcă deschiderea a două fișiere privilegiate. În primă instanța va eșua.

Apoi schimbați owner-ul fișierului în root și adăugați-i bitul de setuid folosind comenzile

sudo chown root:root prog
sudo chmod u+s prog

Acum rulați din nou programul și observați că reușește deschiderea unui fișier, câtă vreme effective user id-ul (euid) este 0. În momentul în care effective user id-ul (euid) este 1000, operația eșuează.

cap

Accesăm directorul cap/ din arhiva de suport.

Va trebui să instalați pachetul libcap-dev folosind comanda

sudo apt install libcap-dev

Urmăriți conținutul fișierului prog.c și rulați executabilul prog. Programul încearcă deschiderea a două fișiere privilegiate. În primă instanța va eșua.

Apoi oferiți executabilului prog capabilitatea CAP_DAC_READ_SEARCH folosind comanda:

sudo setcap cap_dac_read_search+ep ./prog

Verificați adăugarea capabilității folosind comanda:

getcap ./prog

Acum rulați din nou programul și observați că reușește deschiderea unui fișier, câtă vreme capabilitatea CAP_DAC_READ_SEARCH este prezentă.

Dacă doriți să eliminați capabilitatea CAP_DAC_READ_SEARCH din executabilul prog folosiți comanda

sudo setcap cap_dac_read_search-ep ./prog

seccomp

Accesăm directorul seccomp/ din arhiva de suport.

Va trebui să instalați pachetul libseccomp-dev folosind comanda

sudo apt install libseccomp-dev

Urmăriți conținutul fișierului prog.c și rulați executabilul prog. Programul încearcă deschiderea a două fișiere privilegiate. Deschiderea primului fișier va reuși, în vreme ce deschiderea celui de-al doilea fișier va eșua dată fiind folosirea sandboxing-ului cu ajutorul seccomp.