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, inamaanisha Hali ya Usalama wa Kompyuta, ni kipengele cha usalama cha kernel ya Linux kilichoundwa kuchuja wito wa mfumo. Inapunguza michakato kwa seti ndogo ya wito wa mfumo (exit()
, sigreturn()
, read()
, na write()
kwa viashiria vya faili vilivyo wazi tayari). Ikiwa mchakato unajaribu kuita chochote kingine, unakatishwa na kernel kwa kutumia SIGKILL au SIGSYS. Mekanism hii haisimamishi rasilimali lakini inatenga mchakato kutoka kwao.
Kuna njia mbili za kuanzisha seccomp: kupitia wito wa mfumo prctl(2)
na PR_SET_SECCOMP
, au kwa kernel za Linux 3.17 na zaidi, wito wa mfumo seccomp(2)
. Njia ya zamani ya kuwezesha seccomp kwa kuandika kwenye /proc/self/seccomp
imeondolewa kwa ajili ya prctl()
.
Uboreshaji, seccomp-bpf, unaleta uwezo wa kuchuja wito wa mfumo kwa sera inayoweza kubadilishwa, kwa kutumia sheria za Berkeley Packet Filter (BPF). Kupanua hii inatumika na programu kama OpenSSH, vsftpd, na vivinjari vya Chrome/Chromium kwenye Chrome OS na Linux kwa kuchuja wito wa mfumo kwa njia rahisi na yenye ufanisi, ikitoa mbadala kwa systrace ambayo sasa haisaidiwi kwa Linux.
Katika hali hii Seccomp inaruhusu tu wito wa mfumo exit()
, sigreturn()
, read()
na write()
kwa viashiria vya faili vilivyo wazi tayari. Ikiwa wito mwingine wa mfumo unafanywa, mchakato unauawa kwa kutumia SIGKILL
Hali hii inaruhusu kuchuja wito wa mfumo kwa kutumia sera inayoweza kubadilishwa iliyotekelezwa kwa kutumia sheria za Berkeley Packet Filter.
Seccomp-bpf inasaidiwa na Docker ili kupunguza syscalls kutoka kwa kontena, hivyo kupunguza eneo la hatari. Unaweza kupata syscalls zilizozuiwa kwa default katika https://docs.docker.com/engine/security/seccomp/ na profaili ya seccomp ya default inaweza kupatikana hapa https://github.com/moby/moby/blob/master/profiles/seccomp/default.json. Unaweza kuendesha kontena la docker na sera ya seccomp tofauti kwa:
Ikiwa unataka kwa mfano kuzuia kontena kutekeleza syscall kama uname
unaweza kupakua profaili ya default kutoka https://github.com/moby/moby/blob/master/profiles/seccomp/default.json na tu ondoa string ya uname
kutoka kwenye orodha.
Ikiwa unataka kuhakikisha kwamba binary fulani haifanyi kazi ndani ya kontena la docker unaweza kutumia strace kuorodhesha syscalls ambazo binary inatumia na kisha kuzikataa.
Katika mfano ufuatao syscalls za uname
zinagunduliwa:
Ikiwa unatumia Docker kuzindua programu tu, unaweza kuunda profaili yake kwa strace
na kuruhusu tu syscalls inazohitaji
Ili kuonyesha kipengele cha Seccomp, hebu tuunde profaili ya Seccomp inayozuia wito wa mfumo wa “chmod” kama ilivyo hapa chini.
Katika wasifu hapo juu, tumepanga hatua ya default kuwa "kuruhusu" na kuunda orodha ya mblack ili kuzima "chmod". Ili kuwa salama zaidi, tunaweza kuweka hatua ya default kuwa kuacha na kuunda orodha ya nyeupe ili kuwezesha simu za mfumo kwa kuchagua. Matokeo yafuatayo yanaonyesha wito wa "chmod" ukirudisha kosa kwa sababu umezimwa katika wasifu wa seccomp.
Ifuatayo ni matokeo yanayoonyesha “docker inspect” ikionyesha wasifu:
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)