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.
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/
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ă.
Accesăm directorul cap/
din arhiva de suport.
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ă.
CAP_DAC_READ_SEARCH
din executabilul prog
folosiți comanda
sudo setcap cap_dac_read_search-ep ./prog
Accesăm directorul seccomp/
din arhiva de suport.
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
.