Seccomp
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Seccomp, wat staan vir Secure Computing mode, is 'n sekuriteitskenmerk van die Linux-kern wat ontwerp is om stelsels aanroep te filter. Dit beperk prosesse tot 'n beperkte stel stelsels aanroep (exit()
, sigreturn()
, read()
, en write()
vir reeds-geopende lêer beskrywings). As 'n proses probeer om enigiets anders aan te roep, word dit deur die kern beëindig met SIGKILL of SIGSYS. Hierdie meganisme virtualiseer nie hulpbronne nie, maar isoleer die proses daarvan.
Daar is twee maniere om seccomp te aktiveer: deur die prctl(2)
stelsels aanroep met PR_SET_SECCOMP
, of vir Linux-kerns 3.17 en hoër, die seccomp(2)
stelsels aanroep. Die ouer metode om seccomp in te skakel deur na /proc/self/seccomp
te skryf, is verouderd ten gunste van prctl()
.
'n Verbetering, seccomp-bpf, voeg die vermoë by om stelsels aanroep te filter met 'n aanpasbare beleid, met behulp van Berkeley Packet Filter (BPF) reëls. Hierdie uitbreiding word benut deur sagteware soos OpenSSH, vsftpd, en die Chrome/Chromium-browsers op Chrome OS en Linux vir buigsame en doeltreffende syscall-filtering, wat 'n alternatief bied vir die nou nie-ondersteunde systrace vir Linux.
In hierdie modus laat Seccomp slegs die syscalls exit()
, sigreturn()
, read()
en write()
toe vir reeds-geopende lêer beskrywings. As enige ander syscall gemaak word, word die proses doodgemaak met SIGKILL
Hierdie modus laat filtrering van stelselskille toe met 'n konfigureerbare beleid wat geïmplementeer is met behulp van Berkeley Packet Filter reëls.
Seccomp-bpf word deur Docker ondersteun om die syscalls van die houers te beperk, wat effektief die oppervlakarea verminder. Jy kan die syscalls wat geblokkeer is deur default vind in https://docs.docker.com/engine/security/seccomp/ en die default seccomp-profiel kan hier gevind word https://github.com/moby/moby/blob/master/profiles/seccomp/default.json. Jy kan 'n docker-houer met 'n ander seccomp beleid uitvoer met:
As jy byvoorbeeld wil verbied dat 'n houer sekere syscall soos uname
uitvoer, kan jy die standaardprofiel aflaai van https://github.com/moby/moby/blob/master/profiles/seccomp/default.json en net die **uname
string uit die lys **verwyder.
As jy wil seker maak dat 'n sekere binêre nie binne 'n docker-houer werk nie, kan jy strace gebruik om die syscalls wat die binêre gebruik, op te lys en hulle dan verbied.
In die volgende voorbeeld word die syscalls van uname
ontdek:
As jy Docker net gebruik om 'n toepassing te begin, kan jy dit profiel met strace
en net die syscalls toelaat wat dit benodig
Om die Seccomp-funksie te illustreer, laat ons 'n Seccomp-profiel skep wat die “chmod” stelselsoproep soos hieronder deaktiveer.
In die bogenoemde profiel het ons die standaard aksie op "toelaat" gestel en 'n swartlys geskep om "chmod" te deaktiveer. Om veiliger te wees, kan ons die standaard aksie op "drop" stel en 'n witlys skep om stelsels oproepe selektief te aktiveer. Die volgende uitvoer toon die "chmod" oproep wat 'n fout teruggee omdat dit in die seccomp profiel gedeaktiveer is.
Die volgende uitvoer toon die “docker inspect” wat die profiel vertoon:
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)