Linux เดเตเตผเดฃเตฝ เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ, เด เดคเดฟเดจเตเดฑเต เดธเดตเดฟเดถเตเดทเดคเดเตพ, Seccomp
เดธเตเดฅเดฟเดฐเดคเดฏเต เดธเตเดฐเดเตเดทเดฏเต เดตเตเดเดคเดฏเต เดจเดทเตเดเดชเตเดชเตเดเตเดคเตเดคเดพเดคเต เดเตเตผเดฃเตฝ เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เดถเดเตเดคเดฎเดพเดฏ เดฎเดพเตผเดเด BPF เดจเตฝเดเตเดจเตเดจเต. เดเดเตเดเดพเดฐเดฃเดคเตเดคเดพเตฝ, Seccomp BPF เดเดจเตเดจเตเด เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจ Seccomp เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต, Seccomp-เตฝ เดชเตเดฐเตเดธเดธเต เดเดธเตเดฒเตเดทเตป เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เด เดคเดฟเดจเตเดฑเต เดฌเดนเตเดฎเตเดเดค เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฒเตเดฒเดคเดพเดฃเตเดจเตเดจเต เดเตเตผเดฃเตฝ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดเดฐเตเดคเดฟ. เด เด เดงเตเดฏเดพเดฏเดคเตเดคเดฟเตฝ Seccomp เดเดจเตเดคเดพเดฃเตเดจเตเดจเตเด เด เดคเต เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเตเด เดเดเตเดเตพ เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเตเด. เดคเตเดเตผเดจเตเดจเต BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต Seccomp เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเต เดจเดฟเดเตเดเตพ เดชเด เดฟเดเตเดเตเด. เด เดคเดฟเดจเตเดถเตเดทเด, Linux เดธเตเดฐเดเตเดทเดพ เดฎเตเดกเตเดฏเตเดณเตเดเตพเดเตเดเตเดณเตเดณ เดเตเตผเดฃเดฒเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป BPF เดนเตเดเตเดเตเดเตพ เดเดเตเดเตพ เดจเตเดเตเดเดพเด.
เดฒเดฟเดจเดเตเดธเต เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดฎเตเดกเตเดฏเตเดณเตเดเตพ (LSM) เดตเดฟเดตเดฟเดง เดธเตเดฐเดเตเดทเดพ เดฎเตเดกเดฒเตเดเตพ เดเดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดฐเตเดคเดฟเดฏเดฟเตฝ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเดพเดตเตเดจเตเดจ เดเดฐเต เดเตเดเตเดเด เดซเดเดเตเดทเดจเตเดเตพ เดจเตฝเดเตเดจเตเดจ เดเดฐเต เดเดเตเดเดเตเดเตเดเดพเดฃเต. Apparmor, SELinux, Tomoyo เดคเตเดเดเตเดเดฟเดฏ เดเตเตผเดฃเตฝ เดธเตเดดเตโเดธเต เดเตเดฐเตเดฏเดฟเตฝ LSM เดจเตเดฐเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดฒเดฟเดจเดเตเดธเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดเตผเดเตเด เดเตเดฏเตเดคเตเดเตเดฃเตเดเต เดจเดฎเตเดเตเดเต เดเดฐเดเดญเดฟเดเตเดเดพเด.
เดธเดตเดฟเดถเตเดทเดคเดเตพ
เดฒเดฟเดจเดเตเดธเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเดณเตเดเต เดธเดพเดฐเดพเดเดถเด, เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดเตเดฎเดคเดฒ เดจเดฟเตผเดตเดนเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพ เดเดฐเต เด เดจเดญเดฟเดฒเดทเดฃเตเดฏเดฎเดพเดฏ เดชเตเดฐเตเดธเดธเตเดธเต เด เดจเตเดฎเดคเดฟ เดจเตฝเดเตเดฃเตเดเดคเตเดฃเตเดเต, เดเดจเตเดจเดพเตฝ เด เดเดตเดถเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ suid เดเดชเดฏเตเดเดฟเดเตเดเดพเดคเต, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดฎเตเดณเตเดณเดคเดพเดเตเดเตเด, เดเดเตเดฐเดฎเดฃ เดธเดพเดงเตเดฏเดค เดเตเดฑเดฏเตเดเตเดเตเดเดฏเตเด เดเดฟเดฒ เดเตเดฒเดฟเดเตพ เดเตเดฏเตเดฏเดพเตป เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด เดเดจเตเดจเดคเดพเดฃเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเดเตเดเดณเตเดเต เด เดชเตเดฒเดฟเดเตเดเตเดทเดจเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดชเตเตผเดเตเดเต เดคเตเดฑเดเตเดเดฃเดฎเตเดเตเดเดฟเตฝ, เดชเตเดฐเตเดธเดธเตเดธเต เดฑเตเดเตเดเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดชเดเดฐเด 80 เดเดจเตเดจเต เดชเดฑเดฏเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เด เดคเดฟเดจเต CAP_NET_BIND_SERVICE เดเดดเดฟเดตเต เดจเตฝเดเดพเด.
main.go เดเดจเตเดจเต เดชเตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต Go เดชเตเดฐเตเดเตเดฐเดพเด เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด:
package main
import (
"net/http"
"log"
)
func main() {
log.Fatalf("%v", http.ListenAndServe(":80", nil))
}
เด เดชเตเดฐเตเดเตเดฐเดพเด เดชเตเตผเดเตเดเต 80-เตฝ เดเดฐเต HTTP เดธเตเตผเดตเตผ เดจเตฝเดเตเดจเตเดจเต (เดเดคเตเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดชเตเตผเดเตเดเต เดเดฃเต). เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดเตเดเตพ เดเดคเต เดธเดฎเดพเดนเดฐเดฟเดเตเด เดเดเตป เดคเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต:
$ go build -o capabilities main.go
$ ./capabilities
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดเตเดเตพ เดฑเตเดเตเดเต เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดเตเดเตพ เด เดจเตเดตเดฆเดฟเดเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดชเตเตผเดเตเดเต เดฌเตเตปเดกเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เด เดเตเดกเต เดเดฐเต เดชเดฟเดถเดเต เดตเดฐเตเดคเตเดคเตเด:
2019/04/25 23:17:06 listen tcp :80: bind: permission denied
exit status 1
เดเตเดฏเดพเดชเตเดทเต (เดทเตเตฝ เดฎเดพเดจเตเดเตผ) เดเดจเตเดจเดคเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดเดดเดฟเดตเตเดเดณเตเดณเตเดณ เดเดฐเต เดทเตเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดชเดเดฐเดฃเดฎเดพเดฃเต.
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดคเดฟเดจเดเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเตเดชเตเดฒเต, เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดฑเตเดเตเดเต เด เดตเดเดพเดถเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเตเดชเดเดฐเด, เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเตฝ เดเดคเดฟเดจเดเด เดเดณเตเดณ เดเดฒเตเดฒเดพเดฑเตเดฑเดฟเดจเตเด เดเดชเตเดชเด cap_net_bind_service เดถเตเดทเดฟ เดจเตฝเดเดฟเดเตเดเตเดฃเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดคเตเดฏเตเด เดชเตเตผเดเตเดเต เดฌเตเตปเดกเดฟเดเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดพเด. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดฏเดพเดชเตเดทเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดพเด:
# capsh --caps='cap_net_bind_service+eip cap_setpcap,cap_setuid,cap_setgid+ep'
--keep=1 --user="nobody"
--addamb=cap_net_bind_service -- -c "./capabilities"
เด เดเตเดฎเดฟเดจเต เดเตเดฑเดเตเดเตเดเตเดเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเด.
- capsh - เดเดฐเต เดทเตเดฒเตเดฒเดพเดฏเดฟ เดเตเดฏเดพเดชเตเดทเต เดเดชเดฏเตเดเดฟเดเตเดเตเด.
- โcaps='cap_net_bind_service+eip cap_setpcap,cap_setuid,cap_setgid+ep' - เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดฎเดพเดฑเตเดฑเตเดฃเตเดเดคเดฟเดจเดพเตฝ (เดฑเตเดเตเดเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ), cap_net_bind_service เดเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดเดชเดฏเตเดเตเดคเต เดเดกเดฟ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเตเด เดเดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเด. เดเดฐเตเดฎเดฟเดฒเตเดฒ, เด เดคเดพเดฏเดคเต cap_setuid, cap_setgid.
- โkeep=1 โ เดฑเตเดเตเดเต เด เดเตเดเตเดฃเตเดเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดฑเตเดฎเตเดชเตเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดเดดเดฟเดตเตเดเตพ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต.
- โเดเดชเดฏเตเดเตเดคเดพเดตเต=โเดเดฐเตเดโ โ เดชเตเดฐเตเดเตเดฐเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เด เดจเตเดคเดฟเดฎ เดเดชเดฏเตเดเตเดคเดพเดตเต เดเดฐเตเด เดเดฏเดฟเดฐเดฟเดเตเดเดฟเดฒเตเดฒ.
- โaddamb=cap_net_bind_service โ เดฑเตเดเตเดเต เดฎเตเดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดฑเดฟเดฏเดคเดฟเดจเต เดถเตเดทเด เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดเดดเดฟเดตเตเดเดณเตเดเต เดเตเดฒเดฟเดฏเดฑเดฟเดเดเต เดธเดเตเดเดฎเดพเดเตเดเตเด.
- - -c "./capabilities" - เดชเตเดฐเตเดเตเดฐเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด.
เดจเดฟเดฒเดตเดฟเดฒเต เดชเตเดฐเตเดเตเดฐเดพเด execve() เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เดเตเตฝเดกเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเต เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดดเดฟเดตเตเดเดณเดพเดฃเต เดฒเดฟเดเตเดเตเดกเต เดเดดเดฟเดตเตเดเตพ. เดฌเดจเตเดงเดชเตเดชเตเดเตเดคเตเดคเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเดชเตเดชเตเดเตเด เดเดดเดฟเดตเตเดเตพ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดฑเตเดฑเตเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดเตเดเดพเตฝ, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดเดดเดฟเดตเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเต.
--caps เดเดชเตเดทเดจเดฟเตฝ เดเดดเดฟเดตเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดคเดฟเดจเต เดถเตเดทเด +eip เดเดจเตเดคเดพเดฃเต เด เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเดฟเดจเตเดคเดฟเดเตเดเตเดเตเดเดพเด. เดถเตเดทเดฟ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเดพเตป เด เดชเดคเดพเดเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต:
-เดเดเตเดเดฟเดตเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดฃเด (p);
-เดเดชเดฏเตเดเดคเตเดคเดฟเดจเต เดฒเดญเตเดฏเดฎเดพเดฃเต (เด);
- เดถเดฟเดถเต เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ (i) เดตเดดเดฟ เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเตเด.
เดจเดฎเตเดเตเดเต cap_net_bind_service เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดคเดฟเดจเดพเตฝ, e เดซเตเดฒเดพเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดคเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต. เด เดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เดเดฎเดพเตปเดกเดฟเตฝ เดทเตเตฝ เดเดฐเดเดญเดฟเดเตเดเตเด. เดเดคเต เดเดดเดฟเดตเตเดเตพ เดฌเตเดจเดฑเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด, เดเดเตเดเตพ เด เดคเต i เดซเตเดฒเดพเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต. เด เดตเดธเดพเดจเดฎเดพเดฏเดฟ, p เดเดชเดฏเตเดเดฟเดเตเดเต เดซเตเดเตเดเตผ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดฃเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต (เดฏเตเดเดกเดฟ เดฎเดพเดฑเตเดฑเดพเดคเต เดเดเตเดเตพ เดเดคเต เดเตเดฏเตเดคเต). เดเดคเต cap_net_bind_service+eip เดชเตเดฒเต เดคเตเดจเตเดจเตเดจเตเดจเต.
ss เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดซเดฒเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด. เดชเตเดเดฟเตฝ เดเดคเตเดเตเดเดพเตป เดเดเตเดเตโเดชเตเดเตเดเต เดเตเดฑเดเตเดเต เดเตเดฑเตเดคเดพเดเตเดเดพเด, เดเดจเตเดจเดพเตฝ เดเดคเต 0 เด เดฒเตเดฒเดพเดคเตเดค เด เดจเตเดฌเดจเตเดง เดชเตเตผเดเตเดเตเด เดฏเตเดธเตผ เดเดกเดฟเดฏเตเด เดเดพเดฃเดฟเดเตเดเตเด, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ 65:
# ss -tulpn -e -H | cut -d' ' -f17-
128 *:80 *:*
users:(("capabilities",pid=30040,fd=3)) uid:65534 ino:11311579 sk:2c v6only:0
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเตเดฏเดพเดชเตเดทเต เดเดชเดฏเตเดเดฟเดเตเดเต, เดเดจเตเดจเดพเตฝ เดฒเดฟเดฌเตเดเดพเดชเตเดชเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดทเตเตฝ เดเดดเตเดคเดพเด. เดเตเดเตเดคเตฝ เดตเดฟเดตเดฐเดเตเดเตพเดเตเดเต, man 3 libcap เดเดพเดฃเตเด.
เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดดเตเดคเตเดฎเตเดชเตเตพ, เดฑเตบ เดเตเดฎเดฟเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดธเดตเดฟเดถเตเดทเดคเดเดณเตเด เดกเตเดตเดฒเดชเตเดชเตผเดเตเดเต เดฎเตเตปเดเตเดเตเดเดฟ เด เดฑเดฟเดฏเดฟเดฒเตเดฒ; เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเดเดณเดฟเตฝ เด เดธเดตเดฟเดถเตเดทเดคเดเตพ เดฎเดพเดฑเดฟเดฏเตเดเตเดเดพเด.
เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดจเดจเตเดจเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเตป, เดจเดฎเตเดเตเดเต BCC เดถเตเดทเดฟเดฏเตเดณเตเดณ เดเตเตพ เดเดเตเดเตเดเดพเด, เด เดคเต cap_capable เดเตเตผเดฃเตฝ เดซเดเดเตโเดทเดจเตเดตเตเดฃเตเดเดฟ kprobe เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต:
/usr/share/bcc/tools/capable
TIME UID PID TID COMM CAP NAME AUDIT
10:12:53 0 424 424 systemd-udevd 12 CAP_NET_ADMIN 1
10:12:57 0 1103 1101 timesync 25 CAP_SYS_TIME 1
10:12:57 0 19545 19545 capabilities 10 CAP_NET_BIND_SERVICE 1
cap_capable เดเตเตผเดฃเตฝ เดซเดเดเตโเดทเดจเดฟเตฝ เดเดฐเต เดตเตบ-เดฒเตเดจเตผ kprobe เดเดชเดฏเตเดเดฟเดเตเดเต bpftrace เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดเตเดเต เดเดคเต เดเดพเดฐเตเดฏเด เดจเตเดเดพเดจเดพเดเตเด:
bpftrace -e
'kprobe:cap_capable {
time("%H:%M:%S ");
printf("%-6d %-6d %-16s %-4d %dn", uid, pid, comm, arg2, arg3);
}'
| grep -i capabilities
kprobe-เดจเต เดถเตเดทเด เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดฟเดฏเดพเตฝ เดเดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเตเดชเตเดฒเตเดณเตเดณ เดเดจเตเดจเต เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเด:
12:01:56 1000 13524 capabilities 21 0
12:01:56 1000 13524 capabilities 21 0
12:01:56 1000 13524 capabilities 21 0
12:01:56 1000 13524 capabilities 12 0
12:01:56 1000 13524 capabilities 12 0
12:01:56 1000 13524 capabilities 12 0
12:01:56 1000 13524 capabilities 12 0
12:01:56 1000 13524 capabilities 10 1
เด เดเตเดเดพเดฎเดคเตเดคเต เดเตเดณเด เดชเตเดฐเตเดธเดธเตเดธเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดดเดฟเดตเตเดเดณเดพเดฃเต, เดเตเดเดพเดคเต เด เดเดเตเดเตโเดชเตเดเตเดเดฟเตฝ เดจเตเตบ-เดเดกเดฟเดฑเตเดฑเต เดเดตเดจเตเดฑเตเดเตพ เดเตพเดชเตเดชเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเดกเดฟเดฑเตเดฑเต เดซเตเดฒเดพเดเต (เดเดเตเดเตโเดชเตเดเตเดเดฟเตฝ เด เดตเดธเดพเดจเดคเตเดคเตเดคเต) 1 เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดเดกเดฟเดฑเตเดฑเต เดเดคเดฐ เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเด เด เดตเดธเดพเดจเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดถเตเดทเดฟเดฏเตเด เดเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต. เดเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดเดจเตเดจเต CAP_NET_BIND_SERVICE เดเดฃเต, เดเดคเต เดซเดฏเดฒเดฟเดฒเต เดเตเตผเดฃเตฝ เดธเตเดดเตโเดธเต เดเตเดกเดฟเดฒเต เดธเตเดฅเดฟเดฐเดพเดเตเดเดฎเดพเดฏเดฟ เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต, เดเดกเดจเตเดฑเดฟเดซเดฏเตผ 10-เดจเตเดชเตเดชเด/uapi/linux/ability.h:
/* Allows binding to TCP/UDP sockets below 1024 */
/* Allows binding to ATM VCIs below 32 */
#define CAP_NET_BIND_SERVICE 10<source lang="go">
เดฑเตบเดธเดฟ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดกเตเดเตเดเตผ เดชเตเดฒเตเดณเตเดณ เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดเตพเดเตเดเต เด เดจเตผเดนเดฎเดพเดฏ เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฑเตบเดเตเดฎเดฟเตฝ เดเดดเดฟเดตเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดพเดฑเตเดฃเตเดเต, เดเดจเตเดจเดพเตฝ เดฎเดฟเดเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดดเดฟเดตเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เด เดตเดฏเตเดเตเดเต เด เดจเตเดตเดฆเดฟเดเตเดเต. เดเดฐเต เด เดชเตเดฒเดฟเดเตเดเตเดทเดจเต เดเดฟเดฒ เดเดดเดฟเดตเตเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเดฎเตเดชเตเตพ, เดกเตเดเตเดเดฑเดฟเดจเต เด เดต --cap-add เดเดชเดฏเตเดเดฟเดเตเดเต เดจเตฝเดเดพเตป เดเดดเดฟเดฏเตเด:
docker run -it --rm --cap-add=NET_ADMIN ubuntu ip link add dummy0 type dummy
เด เดเดฎเดพเตปเดกเต เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดจเต CAP_NET_ADMIN เดเดดเดฟเดตเต เดจเตฝเดเตเด, เดกเดฎเตเดฎเดฟ0 เดเดจเตเดฑเตผเดซเตเดธเต เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดฒเดฟเดเตเดเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเตป เด เดคเดฟเดจเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเต เดชเตเดฒเตเดณเตเดณ เดธเดตเดฟเดถเตเดทเดคเดเตพ เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เด เดเตเดคเตเดค เดตเดฟเดญเดพเดเด เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดชเตเดฐเตเดเตเดฐเดพเดฎเดพเดฑเตเดฑเดฟเดเต เดเดฏเดฟ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดฎเดฑเตเดฑเตเดฐเต เดธเดพเดเตเดเตเดคเดฟเดเดค เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดธเตเดเตเดเตเดฎเตเดชเต
Seccomp เดเดจเตเดจเดคเต เดธเตเดเตเดฏเตเตผ เดเดฎเตเดชเตเดฏเตเดเตเดเดฟเดเดเดฟเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต, เดเดคเต เดฒเดฟเดจเดเตเดธเต เดเตเตผเดฃเดฒเดฟเตฝ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟเดฏ เดเดฐเต เดธเตเดฐเดเตเดทเดพ เดชเดพเดณเดฟเดฏเดพเดฃเต, เดเดคเต เดเดฟเดฒ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเตพ เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเดพเตป เดกเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. Seccomp-เดจเต เดฒเดฟเดจเดเตเดธเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเตเดเตเดคเตเดคเดพเดฎเตเดเตเดเดฟเดฒเตเด, เดเดฟเดฒ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เด เดคเดฟเดจเตเดฑเต เดเดดเดฟเดตเต เด เดตเดฏเต เด เดชเตเดเตเดทเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดตเดดเดเตเดเดฎเตเดณเตเดณเดคเดพเดเตเดเตเดจเตเดจเต.
Seccomp, Linux เดธเดตเดฟเดถเตเดทเดคเดเตพ เดชเดฐเดธเตเดชเดฐเดตเดฟเดฐเตเดฆเตเดงเดฎเดฒเตเดฒ, เดฐเดฃเตเดเต เดธเดฎเตเดชเดจเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดชเตเดฐเดฏเตเดเดจเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดชเดฒเดชเตเดชเตเดดเตเด เดเดฐเตเดฎเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฑเตเดฃเตเดเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดเดฐเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดจเต CAP_NET_ADMIN เดเดดเดฟเดตเต เดจเตฝเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดเตเดเดพเด, เดเดจเตเดจเดพเตฝ เดธเตเดเตเดเดฑเตเดฑเต เดเดฃเดเตเดทเดจเตเดเตพ เดธเตเดตเตเดเดฐเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเดฟเดฒเตเดฒ, เดธเตเดตเตเดเดฐเดฟเดเตเดเตเด, เดธเตเดตเตเดเดฐเดฟเดเตเดเตเด4 เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเตพ เดคเดเดฏเตเด.
SECCOMP_MODE_FILTER เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ BPF เดซเดฟเตฝเดเตเดเดฑเตเดเดณเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณเดคเดพเดฃเต Seccomp เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเต เดฐเตเดคเดฟ, เดเตเดเดพเดคเต เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเดเต เด เดคเต เดฐเตเดคเดฟเดฏเดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเต เดจเดเดคเตเดคเตเดจเตเดจเต.
PR_SET_SECCOMP เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดเต prctl เดเดชเดฏเตเดเดฟเดเตเดเต Seccomp เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดซเดฟเตฝเดเตเดเดฑเตเดเตพ seccomp_data เดเดเดจ เดชเตเดฐเดคเดฟเดจเดฟเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต Seccomp เดชเดพเดเตเดเดฑเตเดฑเดฟเดจเตเด เดเดฐเต BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเตเดฑเต เดฐเตเดชเดฎเดพเดฃเต เดเดเตเดเตเดเตเดจเตเดจเดคเต. เด เดเดเดจเดฏเดฟเตฝ เดฑเดซเดฑเตปเดธเต เดเตผเดเตเดเดฟเดเตเดเตเดเตผ, เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเดจเตเดฑเต เดธเดฎเดฏเดคเตเดคเต เดชเตเดฐเตเดธเดธเตผ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ, uint64 เดเดฏเดฟ เดชเตเดฐเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดชเดฐเดฎเดพเดตเดงเดฟ เดเดฑเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ เดเดจเตเดจเดฟเดต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
linux/seccomp.h เดซเดฏเดฒเดฟเดฒเต เดเตเตผเดฃเตฝ เดธเตเดดเตเดธเต เดเตเดกเดฟเตฝ เดจเดฟเดจเตเดจเต seccomp_data เดเดเดจ เดเดเตเดเดจเตเดฏเดพเดฃเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเดคเต:
struct seccomp_data {
int nr;
__u32 arch;
__u64 instruction_pointer;
__u64 args[6];
};
เด เดเดเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดจเดฎเตเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ, เด เดคเดฟเดจเตเดฑเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฐเดฃเตเดเตเด เดเตเดเดฟเดเตเดเตเตผเดจเตเดจเต เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเดพเด.
เดเดฐเต Seccomp เดชเดพเดเตเดเดฑเตเดฑเตเด เดฒเดญเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด, เด เดจเตเดคเดฟเดฎ เดคเตเดฐเตเดฎเดพเดจเด เดเดเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดเดจเตเดคเตเดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเต เดเตเตผเดฃเดฒเดฟเดจเตเดเต เดชเดฑเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดซเดฟเตฝเดเตเดเตผ เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดจเดเดคเตเดคเดฃเด. เด เดจเตเดคเดฟเดฎ เดคเตเดฐเตเดฎเดพเดจเด เดฑเดฟเดเตเดเตเตบ เดฎเตเดฒเตเดฏเดเตเดเดณเดฟเดฒเตเดจเตเดจเต (เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เดเตเดกเตเดเตพ) เดชเตเดฐเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
- SECCOMP_RET_KILL_PROCESS - เดเดเตเดเดพเดฐเดฃเดคเตเดคเดพเตฝ เดเดเตโเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเดคเตเดค เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตโเดค เดเดเตป เดคเดจเตเดจเต เดฎเตเดดเตเดตเตป เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดจเตเดจเต.
- SECCOMP_RET_KILL_THREAD - เดเดเตเดเดพเดฐเดฃเดคเตเดคเดพเตฝ เดเดเตโเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเดคเตเดค เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตโเดค เดเดเตป เดจเดฟเดฒเดตเดฟเดฒเต เดคเตเดฐเตเดกเต เด เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
โ SECCOMP_RET_KILL โ SECCOMP_RET_KILL_THREAD เดเดจเตเดจเดคเดฟเดจเตเดฑเต เด เดชเดฐเดจเดพเดฎเด, เดชเดฟเดจเตเดจเตเดเตเด เด เดจเตเดฏเตเดเตเดฏเดคเดฏเตเดเตเดเดพเดฏเดฟ เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเต.
- SECCOMP_RET_TRAP - เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเดฟเดฐเตเดงเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต SIGSYS (เดฎเตเดถเด เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ) เดธเดฟเดเตเดจเตฝ เด เดคเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจ เดเดพเดธเตเดเตเดเดฟเดฒเตเดเตเดเต เด เดฏเดฏเตเดเตเดเตเดจเตเดจเต.
- SECCOMP_RET_ERRNO - เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ, เดเตเดเดพเดคเต SECCOMP_RET_DATA เดซเดฟเตฝเดเตเดเตผ เดฑเดฟเดเตเดเตเตบ เดฎเตเดฒเตเดฏเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดญเดพเดเด เดคเตเดฑเตเดฑเดพเดฏ เดฎเตเดฒเตเดฏเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเตเดคเต เดธเตโเดชเตเดฏเตโเดธเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเดจเตเดจเต. เดชเดฟเดถเดเดฟเดจเตเดฑเต เดเดพเดฐเดฃเดคเตเดคเต เดเดถเตเดฐเดฏเดฟเดเตเดเต, เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดฟเดถเดเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเต. เดชเดฟเดถเดเต เดจเดฎเตเดชเดฑเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด เดเตเดคเตเดค เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
- SECCOMP_RET_TRACE - PTRACE_O_TRACESECCOMP เดเดชเดฏเตเดเดฟเดเตเดเต ptrace Tracer-เดจเต เด เดฑเดฟเดฏเดฟเดเตเดเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต - เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เด เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดพเดฃเดพเดจเตเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเดจเตเด. เดเดฐเต เดเตเดฐเตเดฏเตโเดธเตผ เดเดฃเดเตโเดฑเตเดฑเต เดเตเดฏเตโเดคเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดฐเต เดชเดฟเดถเดเต เดคเดฟเดฐเดฟเดเต เดฒเดญเดฟเดเตเดเตเด, เดชเดฟเดถเดเต -ENOSYS เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดเตโเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
- SECCOMP_RET_LOG - เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเต เดฒเตเดเต เดเตเดฏเตเดคเต.
- SECCOMP_RET_ALLOW - เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เด เดจเตเดตเดฆเดจเตเดฏเดฎเดพเดฃเต.
เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเต เดจเดฟเตผเดตเตเดตเดนเดฃเด เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเดพเดจเตเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเดจเตเดฎเตเดณเตเดณ เดเดดเดฟเดตเตเดณเตเดณ เดเตเดฐเตเดธเดฟ เดเดจเตเดจ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดเตเดฐเตเดฏเตโเดธเดฟเดเดเต เดฎเตเดเตเดเดพเดจเดฟเดธเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดพเดฃเต ptrace. เดเตเดฐเตเดฏเตโเดธเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเต เดเดเตโเดธเดฟเดเตเดฏเตเดทเดจเต เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดธเตเดตเดพเดงเตเดจเดฟเดเตเดเดพเดจเตเด เดเตเดฐเตเดธเดฟเดฏเตเดเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ เดชเดฐเดฟเดทเตโเดเตเดเดฐเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด. Seccomp เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ, SECCOMP_RET_TRACE เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เดเตเดกเต เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ ptrace เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเดจเดพเตฝ เดเตเดฐเตเดธเดฑเดฟเดจเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดเดฏเดพเดจเตเด เด เดคเดฟเดจเตเดฑเตเดคเดพเดฏ เดฒเตเดเดฟเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
Seccomp เดชเดฟเดถเดเตเดเตพ
เดเดพเดฒเดพเดเดพเดฒเดเตเดเดณเดฟเตฝ, Seccomp-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดจเดฟเดเตเดเตพเดเตเดเต เดตเดฟเดตเดฟเดง เดชเดฟเดถเดเตเดเตพ เดจเตเดฐเดฟเดเตเดฃเตเดเดฟเดตเดฐเตเด, เด เดคเต SECCOMP_RET_ERRNO เดเดจเตเดจ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฑเดฟเดเตเดเตเตบ เดฎเตเดฒเตเดฏเดคเตเดคเดพเตฝ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดชเตเดชเตเดเตเด. เดเดฐเต เดชเดฟเดถเดเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตเดฏเตเดฏเดพเตป, seccomp เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ 1-เดจเต เดชเดเดฐเด -0 เดจเตฝเดเตเด.
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฟเดถเดเตเดเตพ เดธเดพเดงเตเดฏเดฎเดพเดฃเต:
- ACCESS - เดเตเดณเตผ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเตเดฏเตเดฏเดพเตป เด เดจเตเดตเดพเดฆเดฎเดฟเดฒเตเดฒ. เดเดคเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต เดเดคเดฟเดจเต CAP_SYS_ADMIN เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดเตเดเตพ เดเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเดฒเต prctl เดเดชเดฏเตเดเดฟเดเตเดเต no_new_privs เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเดคเตเดคเดคเดฟเดจเดพเดฒเต เดเดฃเต (เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดเตเดเตพ เดชเดฟเดจเตเดจเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเด);
โ EFAULT โ เดชเดพเดธเดพเดฏ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพเดเตเดเต (seccomp_data เดเดเดจเดฏเดฟเดฒเต args) เดธเดพเดงเตเดตเดพเดฏ เดเดฐเต เดตเดฟเดฒเดพเดธเด เดเดฒเตเดฒ;
- EINVAL - เดเดตเดฟเดเต เดจเดพเดฒเต เดเดพเดฐเดฃเดเตเดเดณเตเดฃเตเดเดพเดเดพเด:
-เด เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเด เด เดเตเดเดพเดคเดฎเดพเดฃเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฟเดฒเดตเดฟเดฒเต เดเตเตบเดซเดฟเดเดฑเตเดทเดจเดฟเตฝ เดเตเตผเดฃเตฝ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ;
เด เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดซเตเดฒเดพเดเตเดเตพ เดธเดพเดงเตเดคเดฏเตเดณเตเดณเดคเดฒเตเดฒ;
-เดเดชเตเดชเดฑเตเดทเดจเดฟเตฝ BPF_ABS เดเตพเดชเตเดชเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเดซเตโเดธเตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดถเตโเดจเดเตเดเดณเตเดฃเตเดเต, เด เดคเต seccomp_data เดเดเดจเดฏเตเดเต เดตเดฒเตเดชเตเดชเด เดเดตเดฟเดเตเดเตเดเตเดเดพเด;
-เดซเดฟเตฝเดเตเดเดฑเดฟเดฒเตเดเตเดเต เด เดฏเดเตเด เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดเดฃเตเดฃเด เดชเดฐเดฎเดพเดตเดงเดฟ เดเดตเดฟเดฏเตเดจเตเดจเต;
- ENOMEM - เดชเตเดฐเตเดเตเดฐเดพเด เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดฎเดคเดฟเดฏเดพเดฏ เดฎเตเดฎเตเดฎเดฑเดฟ เดเดฒเตเดฒ;
- EOPNOTSUPP - SECCOMP_GET_ACTION_AVAIL เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดฒเดญเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดเดชเตเดชเดฑเตเดทเตป เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเต, เดเดจเตเดจเดพเตฝ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเดฟเดฒเต เดฑเดฟเดเตเดเตเดฃเตเดเดณเต เดเตเตผเดฃเตฝ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ;
- ESRCH - เดฎเดฑเตเดฑเตเดฐเต เดธเตเดเตเดฐเตเด เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดฐเต เดชเตเดฐเดถเตเดจเด เดธเดเดญเดตเดฟเดเตเดเต;
- ENOSYS - SECCOMP_RET_TRACE เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เดเตเดฐเตเดฏเตโเดธเตผ เดเดเดฟเดชเตเดชเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒ.
prctl เดเดจเตเดจเดคเต เดเดฐเต เดชเตเดฐเตเดธเดธเดฟเดจเตเดฑเต เดชเตเดฐเดคเตเดฏเตเด เดตเดถเดเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป (เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเดจเตเด เดจเตเดเดพเดจเตเด) เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดพเดฃเต, เด เดคเดพเดฏเดคเต byte endianness, เดคเตเดฐเตเดกเต เดจเตเดฏเดฟเดฎเตเดเตพ, เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดเดฎเตเดชเตเดฏเตเดเตเดเตเดทเตป เดฎเตเดกเต (Seccomp), เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดเตเดเตพ, Perf เดเดตเดจเตเดฑเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต.
Seccomp เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดธเดพเตปเดกเตโเดฌเตเดเตโเดธเต เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเดพเดฏเดฟ เดคเตเดจเตเดจเดฟเดฏเตเดเตเดเดพเด, เดชเดเตเดทเต เด เดคเต เด เดเตเดเดจเตเดฏเดฒเตเดฒ. เดเดฐเต เดธเดพเตปเดกเตโเดฌเตเดเตโเดธเต เดธเดเดตเดฟเดงเดพเดจเด เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเดพเดฃเต Seccomp. Seccomp เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดตเดดเดฟ เดจเตเดฐเดฟเดเตเดเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดชเดฏเตเดเตเดคเต เดเดจเตเดฑเดฑเดพเดเตเดทเตป เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดเตเดเดจเต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดชเตเดชเตเตพ เดจเตเดเตเดเดพเด.
BPF Seccomp เดซเดฟเตฝเดเตเดเตผ เดเดฆเดพเดนเดฐเดฃเด
เดฎเตเดฎเตเดชเต เดเตผเดเตเด เดเตเดฏเตเดค เดฐเดฃเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเดเตเดเดจเต เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดเดตเดฟเดเต เดเดพเดฃเดฟเดเตเดเตเด, เด เดคเดพเดฏเดคเต:
- เดเดเตเดเตพ เดเดฐเต Seccomp BPF เดชเตเดฐเตเดเตเดฐเดพเด เดเดดเตเดคเตเด, เด เดคเต เดเดเตเดคเตเดค เดคเตเดฐเตเดฎเดพเดจเดเตเดเดณเต เดเดถเตเดฐเดฏเดฟเดเตเดเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดฑเดฟเดเตเดเตเตบ เดเตเดกเตเดเดณเตเดณเตเดณ เดเดฐเต เดซเดฟเตฝเดเตเดเดฑเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเด;
โ prctl เดเดชเดฏเตเดเดฟเดเตเดเต เดซเดฟเตฝเดเตเดเตผ เดฒเตเดกเต เดเตเดฏเตเดฏเตเด.
เดเดฆเตเดฏเด เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดฒเตเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเด Linux เดเตเตผเดฃเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดคเดฒเดเตเดเตเดเตเดเตเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฃเต:
#include <errno.h>
#include <linux/audit.h>
#include <linux/bpf.h>
#include <linux/filter.h>
#include <linux/seccomp.h>
#include <linux/unistd.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/prctl.h>
#include <unistd.h>
เด เดเดฆเดพเดนเดฐเดฃเด เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดเตเตผเดฃเตฝ CONFIG_SECCOMP เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเดชเตเตฝ เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเตเด CONFIG_SECCOMP_FILTER y เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเตเด เดเดฑเดชเตเดชเดพเดเตเดเดฃเด. เดเดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเตเดชเตเดฒเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
cat /proc/config.gz| zcat | grep -i CONFIG_SECCOMP
เดฌเดพเดเตเดเดฟเดฏเตเดณเตเดณ เดเตเดกเต เดฐเดฃเตเดเต เดญเดพเดเดเตเดเดณเตเดณเตเดณ install_filter เดซเดเดเตโเดทเดจเดพเดฃเต. เดเดฆเตเดฏ เดญเดพเดเดคเตเดคเดฟเตฝ เดเดเตเดเดณเตเดเต BPF เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต:
static int install_filter(int nr, int arch, int error) {
struct sock_filter filter[] = {
BPF_STMT(BPF_LD + BPF_W + BPF_ABS, (offsetof(struct seccomp_data, arch))),
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, arch, 0, 3),
BPF_STMT(BPF_LD + BPF_W + BPF_ABS, (offsetof(struct seccomp_data, nr))),
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, nr, 0, 1),
BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ERRNO | (error & SECCOMP_RET_DATA)),
BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ALLOW),
};
linux/filter.h เดซเดฏเดฒเดฟเตฝ เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ BPF_STMT, BPF_JUMP เดฎเดพเดเตเดฐเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต.
เดจเดฎเตเดเตเดเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเดฟเดฒเตเดเต เดชเตเดเดพเด.
- BPF_STMT(BPF_LD + BPF_W + BPF_ABS (เดเดซเตเดธเตเดฑเตเดฑเตเดซเต(เดธเตโเดเตเดฐเดเตเดฑเตเดฑเต เดธเตเดเตเดเตเดฎเตเดชเต_เดกเดพเดฑเตเดฑ, เดเตผเดเตเดเต))) - BPF_LD เดเดจเตเดจ เดตเดพเดเตเดเดฟเดจเตเดฑเต เดฐเตเดชเดคเตเดคเดฟเตฝ BPF_LD-เตฝ เดจเดฟเดจเตเดจเต เดธเดฟเดธเตเดฑเตเดฑเด เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดถเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดชเดพเดเตเดเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดเดซเตโเดธเตเดฑเตเดฑเดฟเดฒเดพเดฃเต BPF_ABS เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต.
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, arch, 0, 3) - เด เดเตเดฏเตเดฎเตเดฒเตเดฑเตเดฑเตผ เดธเตเดฅเดฟเดฐเดพเดเตเดเดฎเดพเดฏ BPF_K เดฒเต เดเตผเดเตเดเดฟเดเตเดเตเดเตผ เดฎเตเดฒเตเดฏเด เดเดฎเดพเดจเดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต เดเดจเตเดจเต BPF_JEQ เดเดชเดฏเตเดเดฟเดเตเดเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต. เด เดเตเดเดจเตเดฏเตเดเตเดเดฟเตฝ, เดเดซเตโเดธเตเดฑเตเดฑเต 0-เตฝ เด เดเตเดคเตเดค เดจเดฟเตผเดฆเตเดฆเตเดถเดคเตเดคเดฟเดฒเตเดเตเดเต เดเดพเดเตเด, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฎเดพเดจเด เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดเดฐเต เดชเดฟเดถเดเต เดตเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดเดซเตโเดธเตเดฑเตเดฑเต 3-เตฝ (เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ) เดเดพเดเตเด.
- BPF_STMT(BPF_LD + BPF_W + BPF_ABS (เดเดซเตโเดธเตเดฑเตเดฑเตเดซเต(เดธเตโเดเตเดฐเดเตเดฑเตเดฑเต เดธเตเดเตเดเตเดฎเตเดชเต_เดกเดพเดฑเตเดฑ, เดเตปเดเตผ))) - BPF_LD เดเดจเตเดจ เดตเดพเดเตเดเดฟเดจเตเดฑเต เดฐเตเดชเดคเตเดคเดฟเตฝ BPF_LD-เตฝ เดจเดฟเดจเตเดจเต เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดถเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดคเต BPF_ABS-เดจเตเดฑเต เดจเดฟเดถเตเดเดฟเดค เดเดซเตโเดธเตเดฑเตเดฑเดฟเตฝ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเดฎเตเดชเดฑเดพเดฃเต.
โ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, nr, 0, 1) โ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเดฎเตเดชเดฑเดฟเดจเต nr เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต เดฎเตเดฒเตเดฏเดตเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดต เดคเตเดฒเตเดฏเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เด เดเตเดคเตเดค เดจเดฟเตผเดฆเตเดฆเตเดถเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเตเดเดฏเตเด เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เด เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด SECCOMP_RET_ALLOW เดเดชเดฏเตเดเดฟเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเดจเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
- BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ERRNO | (เดชเดฟเดถเดเต & SECCOMP_RET_DATA)) - BPF_RET เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เด เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดชเดฟเดถเดเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดจเดฎเตเดชเดฑเดฟเตฝ SECCOMP_RET_ERRNO เดเดจเตเดจ เดชเดฟเดถเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
- BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ALLOW) - BPF_RET เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เด เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด SECCOMP_RET_ALLOW เดเดชเดฏเตเดเดฟเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดเตโเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
SECCOMP CBPF เดเดฃเต
เดเดเดชเตเตฝ เดเตเดฏเตโเดค ELF เดเดฌเตโเดเดเตเดฑเตเดฑเดฟเดจเต JIT เดเดเดชเตเตฝ เดเตเดฏเตโเดค เดธเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเต เดชเดเดฐเด เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดคเตเดเตเดฃเตเดเดพเดฃเตเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเดฟเดจเตเดคเดฟเดเตเดเตเดเตเดเดพเด.เดเดคเดฟเดจเต เดฐเดฃเตเดเต เดเดพเดฐเดฃเดเตเดเดณเตเดฃเตเดเต.
โข เดเดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, Seccomp cBPF (เดเตเดฒเดพเดธเดฟเดเต BPF) เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, eBPF เด เดฒเตเดฒ, เด เดคเดฟเดจเตผเดคเตเดฅเด: เดเดคเดฟเดจเต เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ เดเดฒเตเดฒ, เดชเดเตเดทเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดเดพเดฃเตเดจเตเดจเดคเต เดชเตเดฒเต เด เดตเดธเดพเดจ เดเดฃเดเตเดเตเดเตเดเตเดเตฝ เดซเดฒเด เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เด เดเตเดฏเตเดฎเตเดฒเตเดฑเตเดฑเตผ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต.
โข เดฐเดฃเตเดเดพเดฎเดคเดพเดฏเดฟ, BPF เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดเดฐเต เดจเดฟเดฐเดฏเดฟเดฒเตเดเตเดเต เดจเตเดฐเดฟเดเตเดเต Seccomp เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต, เดฎเดฑเตเดฑเตเดจเตเดจเตเด. เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเด เดฎเดพเดเตเดฐเตเดเตพ เดชเตเดฐเตเดเตเดฐเดพเดฎเตผ-เดธเตเดนเตเดฆ เดฐเตเดคเดฟเดฏเดฟเตฝ เด เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเต.
เด เด เดธเดเดฌเตเดฒเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดธเดนเดพเดฏเด เดเดตเดถเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ, เด เดคเต เดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจ เดธเตเดฏเตเดกเตเดเตเดกเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด:
if (arch != AUDIT_ARCH_X86_64) {
return SECCOMP_RET_ALLOW;
}
if (nr == __NR_write) {
return SECCOMP_RET_ERRNO;
}
return SECCOMP_RET_ALLOW;
เดธเตเดเตเดเดฑเตเดฑเต_เดซเดฟเตฝเดฑเตเดฑเตผ เดเดเดจเดฏเดฟเตฝ เดซเดฟเตฝเดเตเดเตผ เดเตเดกเต เดจเดฟเตผเดตเดเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด, เดเตเดกเตเด เดซเดฟเตฝเดเตเดเดฑเดฟเดจเตเดฑเต เดเดฃเดเตเดเดพเดเตเดเดฟเดฏ เดฆเตเตผเดเตเดฏเดตเตเด เด เดเดเตเดเตเดจเตเดจ เดเดฐเต เดธเตเดเตเดเต_เดเดซเตเดชเตเดฐเตเดเต เดจเดฟเดเตเดเตพ เดจเดฟเตผเดตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดชเตเดฐเตเดธเดธเตเดธเต เดชเดฟเดจเตเดจเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเดพเดฏเดฟ เด เดกเดพเดฑเตเดฑเดพ เดเดเดจ เดเดตเดถเตเดฏเดฎเดพเดฃเต:
struct sock_fprog prog = {
.len = (unsigned short)(sizeof(filter) / sizeof(filter[0])),
.filter = filter,
};
install_filter เดซเดเดเตโเดทเดจเดฟเตฝ เดเดฐเต เดเดพเดฐเตเดฏเด เดฎเดพเดคเตเดฐเดฎเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณเต - เดชเตเดฐเตเดเตเดฐเดพเด เดคเดจเตเดจเต เดฒเตเดกเตเดเตเดฏเตเดฏเตเด! เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ prctl เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เดธเตเดฐเดเตเดทเดฟเดค เดเดฎเตเดชเตเดฏเตเดเตเดเดฟเดเดเต เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตเดถเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดชเตเดทเดจเดพเดฏเดฟ PR_SET_SECCOMP เดเดเตเดเตเดเตเดจเตเดจเต. เดคเตเดเตผเดจเตเดจเต เดธเตเดเตเดเต_เดซเตเดชเตเดฐเตเดเต เดเตเดชเตเดชเดฟเดจเตเดฑเต เดชเตเดฐเตเดเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ SECCOMP_MODE_FILTER เดเดชเดฏเตเดเดฟเดเตเดเต เดซเดฟเตฝเดเตเดเตผ เดฒเตเดกเตเดเตเดฏเตเดฏเดพเตป เดเดเตเดเตพ เดฎเตเดกเดฟเดจเตเดเต เดชเดฑเดฏเตเดจเตเดจเต:
if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog)) {
perror("prctl(PR_SET_SECCOMP)");
return 1;
}
return 0;
}
เด เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดเดเตเดเตพเดเตเดเต เดเดเตเดเดณเตเดเต install_filter เดซเดเดเตโเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเดพเด, เดเดจเตเดจเดพเตฝ เด เดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดฟเดฒเดตเดฟเดฒเต เดเดเตโเดธเดฟเดเตเดฏเตเดทเดจเดพเดฏเดฟ PR_SET_NO_NEW_PRIVS เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเตป prctl เดเดชเดฏเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดคเตเดตเดดเดฟ เดเตเตฝเดกเต เดชเตเดฐเตเดธเดธเตเดธเตเดเตพเดเตเดเต เด เดตเดฐเตเดเต เดฎเดพเดคเดพเดชเดฟเดคเดพเดเตเดเดณเตเดเตเดเดพเตพ เดเตเดเตเดคเตฝ เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเดจเตเดจ เดธเดพเดนเดเดฐเตเดฏเด เดเดดเดฟเดตเดพเดเตเดเตเด. เดเดคเตเดชเดฏเตเดเดฟเดเตเดเต, เดฑเตเดเตเดเต เด เดตเดเดพเดถเดเตเดเดณเดฟเดฒเตเดฒเดพเดคเต เดเตปเดธเตเดฑเตเดฑเตเตพ_เดซเดฟเตฝเดฑเตเดฑเตผ เดซเดเดเตเดทเดจเดฟเตฝ เดจเดฎเตเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ prctl เดเตเดณเตเดเตพ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต install_filter เดซเดเดเตโเดทเดจเต เดตเดฟเดณเดฟเดเตเดเดพเด. X86-64 เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดเดฒเตเดฒเดพ เดฑเตเดฑเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเด เดคเดเดฏเตเดเดฏเตเด เดเดฒเตเดฒเดพ เดถเตเดฐเดฎเดเตเดเดณเตเดฏเตเด เดคเดเดฏเตเดจเตเดจ เดเดฐเต เด เดจเตเดฎเดคเดฟ เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเดพเด. เดซเดฟเตฝเดเตเดเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดถเตเดทเด, เดเดฆเตเดฏเดคเตเดคเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดคเตเดเดฐเตเดจเตเดจเต:
int main(int argc, char const *argv[]) {
if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
perror("prctl(NO_NEW_PRIVS)");
return 1;
}
install_filter(__NR_write, AUDIT_ARCH_X86_64, EPERM);
return system(argv[1]);
}
เดจเดฎเตเดเตเดเต เดคเตเดเดเตเดเดพเด. เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต clang เด เดฒเตเดฒเตเดเตเดเดฟเตฝ gcc เดเดชเดฏเตเดเดฟเดเตเดเดพเด, เดเดจเตเดจเตเดเดฟเตฝ เด เดคเต เดชเตเดฐเดคเตเดฏเตเด เดเดชเตโเดทเดจเตเดเดณเดฟเดฒเตเดฒเดพเดคเต main.c เดซเดฏเตฝ เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดเดฏเดพเดฃเต:
clang main.c -o filter-write
เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเตเดชเตเดฒเต, เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดฒเต เดเดฒเตเดฒเดพ เดเตปเดเตเดฐเดฟเดเดณเตเด เดเดเตเดเตพ เดคเดเดเตเดเต. เดเดคเต เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเด เดเดตเดถเตเดฏเดฎเดพเดฃเต - ls เดเดฐเต เดจเดฒเตเดฒ เดธเตเดฅเดพเดจเดพเตผเดคเตเดฅเดฟเดฏเดพเดฃเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเต. เด เดตเตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดเตเดเดจเตเดฏเดพเดฃเต เดชเตเดฐเตเดฎเดพเดฑเตเดจเตเดจเดคเต:
ls -la
total 36
drwxr-xr-x 2 fntlnz users 4096 Apr 28 21:09 .
drwxr-xr-x 4 fntlnz users 4096 Apr 26 13:01 ..
-rwxr-xr-x 1 fntlnz users 16800 Apr 28 21:09 filter-write
-rw-r--r-- 1 fntlnz users 19 Apr 28 21:09 .gitignore
-rw-r--r-- 1 fntlnz users 1282 Apr 28 21:08 main.c
เด เดคเตเดญเตเดคเด! เดเดเตเดเดณเตเดเต เดฑเดพเดชเตเดชเตผ เดชเตเดฐเตเดเตเดฐเดพเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเดเตเดเดจเตเดฏเตเดจเตเดจเต เดเดคเดพ: เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดฐเดพเด เดเดฆเตเดฏ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเดพเดฏเดฟ เดเดเตเดเตพ เดชเดพเดธเตเดธเดพเดเตเดเตเดจเตเดจเต:
./filter-write "ls -la"
เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, เด เดชเตเดฐเตเดเตเดฐเดพเด เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดถเตเดจเตเดฏเดฎเดพเดฏ เดเดเตเดเตเดชเตเดเตเดเต เดเดฃเตเดเดพเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดเดพเดฃเดพเตป เดจเดฎเตเดเตเดเต เดธเตโเดเตเดฐเตเดธเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด:
strace -f ./filter-write "ls -la"
เดเตเดฒเดฟเดฏเตเดเต เดซเดฒเด เดตเดณเดฐเต เดเตเดฐเตเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดชเดเตเดทเต เด เดคเดฟเดจเตเดฑเต เด เดจเตเดฌเดจเตเดง เดญเดพเดเด EPERM เดชเดฟเดถเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดฑเตเดเตเดเตเตผเดกเตเดเตพ เดคเดเดเตเดเตเดตเตเดจเตเดจเต เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต - เดเดเตเดเตพ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเด เด เดคเต เดเดจเตเดจเต. เดฑเตเดฑเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดเตเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดชเตเดฐเตเดเตเดฐเดพเด เดเดจเตเดจเตเด เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ เดเดจเตเดจเดพเดฃเต เดเดคเดฟเดจเตผเดคเตเดฅเด:
[pid 25099] write(2, "ls: ", 4) = -1 EPERM (Operation not permitted)
[pid 25099] write(2, "write error", 11) = -1 EPERM (Operation not permitted)
[pid 25099] write(2, "n", 1) = -1 EPERM (Operation not permitted)
Seccomp BPF เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดเดจเตเดคเตเดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดจเดฒเตเดฒ เดงเดพเดฐเดฃเดฏเตเดฃเตเดเต. เดเดจเตเดจเดพเตฝ cBPF-เดจเต เดชเดเดฐเด eBPF-เดจเตเดฑเต เดชเตเตผเดฃเตเดฃ เดถเดเตเดคเดฟ เดชเตเดฐเดฏเตเดเดจเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เด เดคเต เดเดพเดฐเตเดฏเด เดจเตเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเต?
eBPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดฟเดจเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดฎเดฟเดเตเด เดเดณเตเดเดณเตเด เดเดฟเดจเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดเตเดเตพ เด เดต เดเดดเตเดคเตเดเดฏเตเด เด เดกเตเดฎเดฟเดจเดฟเดธเตเดเตเดฐเตเดฑเตเดฑเตผ เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดเตเดเตพ เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดเดจเตเดจเดพเดฃเต. เด เดชเตเดฐเดธเตเดคเดพเดตเดจ เดชเตเดคเตเดตเต เดถเดฐเดฟเดฏเดพเดฃเตเดเตเดเดฟเดฒเตเด, เดตเดฟเดตเดฟเดง เดคเดฒเดเตเดเดณเดฟเตฝ eBPF เดเดฌเตเดเดเตเดฑเตเดฑเตเดเดณเต เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเตเดเตเดเด เดฎเตเดเตเดเดพเดจเดฟเดธเดเตเดเตพ เดเตเตผเดฃเตฝ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต. เด เดธเดเดตเดฟเดงเดพเดจเดเตเดเดณเต เดฌเดฟเดชเดฟเดเดซเต เดเตฝเดเดธเตเดเด เดเตเดฐเดพเดชเตเดชเตเดเตพ เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต.
เดฌเดฟเดชเดฟเดเดซเต เดเตฝเดเดธเตเดเด เดเตเดฃเดฟเดเตพ
เดธเดฟเดธเตเดฑเตเดฑเด เดเดตเดจเตเดฑเตเดเดณเตเดเต เดเตผเดเตเดเดฟเดเตเดเตเดเตผ-เดธเตเดตเดคเดจเตเดคเตเดฐ เดจเดฟเดฐเตเดเตเดทเดฃเด เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต, เดเตเดฐเดพเดชเตเดชเตเดเตพ เดเดจเตเดจ เดเดถเดฏเด LSM เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต. เดเดฐเต เดนเตเดเตเดเต เดเตเตพ เดธเดพเดเตเดเตเดคเดฟเดเดฎเดพเดฏเดฟ เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดธเดฟเดธเตเดฑเตเดฑเด เดธเตเดตเดคเดจเตเดคเตเดฐเดตเตเด เด เดเดฟเดธเตเดฅเดพเดจ เดธเตเดเดฐเตเดฏเดตเตเดฎเดพเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเตเดฎเดพเดฃเต. เดตเตเดฏเดคเตเดฏเดธเตโเดค เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเตเดเดณเดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เดจเตเดฐเดฟเดเตเดจเตเดจ เดชเตเดฐเดถเตโเดจเดเตเดเตพ เดเดดเดฟเดตเดพเดเตเดเดพเตป เดเดฐเต เด เดฌเตโเดธเตโเดเตเดฐเดพเดเตเดทเตป เดฒเตเดฏเดฑเดฟเดจเต เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดคเดฟเดฏ เดเดถเดฏเด เดเตฝเดเดธเตเดเด เดจเตฝเดเตเดจเตเดจเต.
เดเดดเตเดคเตเดฎเตเดชเตเตพ, เดเตเตผเดฃเดฒเดฟเดจเต BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดเดดเต เดนเตเดเตเดเตเดเตพ เดเดฃเตเดเต, เด เดต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจ เดเดฐเตเดฏเตเดฐเต เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตฝเดเดธเตเดเด เดเดฃเต SELinux.
เดเตเดฃเดฟเดเตพเดเตเดเดพเดฏเตเดณเตเดณ เดธเตเดดเตเดธเต เดเตเดกเต เดซเดฏเดฒเดฟเดฒเต เดเตเตผเดฃเตฝ เดเตเดฐเตเดฏเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจเต include/linux/security.h:
extern int security_bpf(int cmd, union bpf_attr *attr, unsigned int size);
extern int security_bpf_map(struct bpf_map *map, fmode_t fmode);
extern int security_bpf_prog(struct bpf_prog *prog);
extern int security_bpf_map_alloc(struct bpf_map *map);
extern void security_bpf_map_free(struct bpf_map *map);
extern int security_bpf_prog_alloc(struct bpf_prog_aux *aux);
extern void security_bpf_prog_free(struct bpf_prog_aux *aux);
เด เดต เดเดฐเตเดจเตเดจเตเด เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดตเดฟเดง เดเดเตเดเดเตเดเดณเดฟเตฝ เดตเดฟเดณเดฟเดเตเดเดชเตเดชเตเดเตเด:
โ security_bpf โ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดค BPF เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเดเต เดชเตเดฐเดพเดฐเดเดญ เดชเดฐเดฟเดถเตเดงเดจ เดจเดเดคเตเดคเตเดจเตเดจเต;
- security_bpf_map - เดฎเดพเดชเตเดชเดฟเดจเดพเดฏเดฟ เดเตเตผเดฃเตฝ เดเดฐเต เดซเดฏเตฝ เดกเดฟเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตผ เดจเตฝเดเตเดฎเตเดชเตเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต;
- security_bpf_prog - eBPF เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเดพเดฏเดฟ เดเตเตผเดฃเตฝ เดเดฐเต เดซเดฏเตฝ เดกเดฟเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตผ เดจเตฝเดเตเดฎเตเดชเตเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต;
โ security_bpf_map_alloc โ BPF เดฎเดพเดชเตเดชเตเดเตพเดเตเดเตเดณเตเดณเดฟเดฒเต เดธเตเดฐเดเตเดทเดพ เดซเตเตฝเดกเต เดเดฐเดเดญเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดฏเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต;
- security_bpf_map_free - BPF เดฎเดพเดชเตเดชเตเดเตพเดเตเดเตเดณเตเดณเดฟเตฝ เดธเตเดฐเดเตเดทเดพ เดซเตเตฝเดกเต เดฎเดพเดฏเตโเดเตเดเดฟเดเตเดเตเดฃเตเดเต เดเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต;
โ security_bpf_prog_alloc โ BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเตเดณเตเดณเดฟเตฝ เดธเตเดฐเดเตเดทเดพ เดซเตเตฝเดกเต เดเดฐเดเดญเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดฏเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต;
- security_bpf_prog_free - BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเตเดณเตเดณเดฟเตฝ เดธเตเดฐเดเตเดทเดพ เดซเตเตฝเดกเต เดฎเดพเดฏเตโเดเตเดเดฟเดเตเดเตเดฃเตเดเต เดเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต.
เดเดชเตเดชเตเตพ, เดเดคเตเดฒเตเดฒเดพเด เดเดพเดฃเตเดฎเตเดชเตเตพ, เดเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดจเตเดจเต: LSM BPF เดเดจเตเดฑเตผเดธเตเดชเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดชเดฟเดจเตเดจเดฟเดฒเต เดเดถเดฏเด, เด เดตเตผเดเตเดเต เดเดฒเตเดฒเดพ eBPF เดเดฌเตเดเดเตเดฑเตเดฑเดฟเดจเตเด เดธเดเดฐเดเตเดทเดฃเด เดจเตฝเดเดพเตป เดเดดเดฟเดฏเตเด, เดเดเดฟเดคเดฎเดพเดฏ เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดฎเตเดณเตเดณเดตเตผเดเตเดเต เดฎเดพเดคเตเดฐเดฎเต เดเดพเตผเดกเตเดเดณเดฟเดฒเตเด เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเดฟเดฒเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดเดคเตเดคเดพเตป เดเดดเดฟเดฏเต เดเดจเตเดจเดคเดพเดฃเต.
เดธเดเดเตเดฐเดนเด
เดจเดฟเดเตเดเตพ เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเด เดเดฐเตเดชเตเดฒเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดจเตเดจเดฒเตเดฒ เดธเตเดฐเดเตเดท. เดตเตเดฏเดคเตเดฏเดธเตเดค เดคเดฒเดเตเดเดณเดฟเดฒเตเด เดตเตเดฏเดคเตเดฏเดธเตเดค เดฐเตเดคเดฟเดเดณเดฟเดฒเตเด เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเต เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดตเดฟเดถเตเดตเดธเดฟเดเตเดเดพเดฒเตเด เดเดฒเตเดฒเตเดเตเดเดฟเดฒเตเด, เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดเตเดเดพเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดจเดฒเตเดฒ เดฎเดพเตผเดเด เดตเตเดฏเดคเตเดฏเดธเตเดค เดจเดฟเดฒเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เดธเดเดฐเดเตเดทเดฃเด เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เดเดฐเต เดฒเตเดตเดฒเดฟเดจเตเดฑเต เดธเตเดฐเดเตเดท เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเดคเต เดฎเตเดดเตเดตเตป เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดเตเดเตเด เดชเตเดฐเดตเตเดถเดจเด เด เดจเตเดตเดฆเดฟเดเตเดเดฟเดฒเตเดฒ. เดตเตเดฏเดคเตเดฏเดธเตเดค เดฒเตเดฏเดฑเตเดเดณเตเดเตเดฏเตเด เดเดเตเดเต เดชเตเดฏเดฟเดจเตเดฑเตเดเดณเตเดเตเดฏเตเด เดเดฐเต เดเตเดเตเดเด เดเดเตเดเตพเดเตเดเต เดจเตฝเดเตเดจเตเดจเดคเดฟเตฝ เดเตเตผ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดฎเดฟเดเดเตเด เดเตเดฒเดฟ เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเต. เดฒเตเดฏเดฑเตเดเตพ เดเดจเตเดคเดพเดฃเตเดจเตเดจเตเด เด เดตเดฏเตโเดเตเดเตเดชเตเดชเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เดเดเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดจเดฒเตเดฒ เดงเดพเดฐเดฃ เดจเตฝเดเดฟเดฏเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเต เดเดเตเดเตพ เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เดเดดเตเดคเตเดคเตเดเดพเดฐเต เดเตเดฑเดฟเดเตเดเต
เดกเตเดตเดฟเดกเต เดเดฒเดตเตเดฐ Netlify-เดฏเดฟเดฒเต CTO เดเดฃเต. เดกเตเดเตเดเตผ เดธเดชเตเดชเตเตผเดเตเดเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเด เด เดฆเตเดฆเตเดนเด Runc, Go, BCC เดเตเดณเตเดเดณเตเดเตเดฏเตเด เดฎเดฑเตเดฑเต เดเดชเตเดชเตบ เดธเตเดดเตโเดธเต เดชเตเดฐเตเดเดเตเดเตเดเดณเตเดเตเดฏเตเด เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเต เดธเดเดญเดพเดตเดจ เดจเตฝเดเดฟ. เดกเตเดเตเดเตผ เดชเตเดฐเตเดเดเตโเดฑเตเดฑเตเดเดณเดฟเดฒเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเด เดกเตเดเตเดเตผ เดชเตเดฒเดเดฟเตป เดเดเตเดเตเดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเตเด เดชเตเดฐเตเดเตเดเตเดเดคเดพเดฃเต. เดซเตเดฒเตเด เดเตเดฐเดพเดซเตเดเดณเดฟเตฝ เดกเตเดตเดฟเดกเต เดตเดณเดฐเต เด เดญเดฟเดจเดฟเดตเตเดถเดฎเตเดณเตเดณเดฏเดพเดณเดพเดฃเต, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดชเตเดฐเดเดเดจเด เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเต เดเตเดฏเตเดฏเดพเตป เดเดชเตเดชเตเดดเตเด เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต.
เดฒเตเดฑเตเตปเดธเต เดซเตเดฃเตเดเดพเดจ เดธเดฟเดธเตโเดกเดฟเดเดฟเดฒเต เดเดชเตเดชเตบ เดธเตเดดเตโเดธเต เดเตเดฎเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เด เดตเดฟเดเต เด เดฆเตเดฆเตเดนเด เดชเตเดฐเดพเดฅเดฎเดฟเดเดฎเดพเดฏเดฟ เดซเดพเตฝเดเตเดเตเดฏเดฟเตฝ เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดฐเต เดเตเตผเดฃเตฝ เดฎเตเดกเตเดฏเตเดณเดฟเดฒเตเดเตเดฏเตเด eBPF เดตเดดเดฟเดฏเตเด เดเดฃเตเดเตเดฏเตโเดจเตผ เดฑเตบเดเตเด เดธเตเดฐเดเตเดทเดฏเตเด เด เดชเดพเดเดค เดเดฃเตเดเตเดคเตเดคเดฒเตเด เดจเตฝเดเตเดจเตเดจ เดเตเดฒเตเดกเต เดจเตเดฑเตเดฑเตเดตเต เดเดฎเตเดชเตเดฏเตเดเตเดเดฟเดเดเต เดซเตเดฃเตเดเตเดทเตป เดชเตเดฐเตเดเดเตเดฑเตเดฑเต. เดกเดฟเดธเตเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเดกเต เดธเดฟเดธเตเดฑเตเดฑเดเตเดเตพ, เดธเตเดซเตเดฑเตเดฑเตโเดตเตเดฏเตผ เดจเดฟเตผเดตเดเดฟเดเตเดเดชเตเดชเตเดเตเด เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดเดเต, เดฒเดฟเดจเดเตเดธเต เดเตเตผเดฃเตฝ, เดชเตเดฐเดเดเดจ เดตเดฟเดถเดเดฒเดจเด เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เด เดฆเตเดฆเตเดนเดคเตเดคเดฟเดจเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเต.
ยป เดชเตเดธเตเดคเดเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดฟเดตเดฐเดเตเดเตพ เดเดตเดฟเดเต เดเดพเดฃเดพเด
ยป
ยป
เดเดฌเตเดฐเตเดเดฟเดฑเตเดฑเตเดฒเดฟเดเตเดเต เดเตเดชเตเดชเตบ เดเดชเดฏเตเดเดฟเดเตเดเต 25% เดเดฟเดดเดฟเดตเต - เดฒเดฟเดจเดเตเดธเต
เดชเตเดธเตเดคเดเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดชเตเดชเตผ เดชเดคเดฟเดชเตเดชเต เดชเดฃเดฎเดเดฏเตเดเตเดเตเดฎเตเดชเตเตพ, เดเดฐเต เดเดฒเดเตเดเตเดฐเตเดฃเดฟเดเต เดชเตเดธเตเดคเดเด เด-เดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เด
เดฏเดฏเตเดเตเดเตเด.
เด
เดตเดฒเดเดฌเด: www.habr.com