เจฒเฉเจจเจเจธ เจเจฐเจจเจฒ เจธเฉเจฐเฉฑเจเจฟเจ, เจเจธ เจฆเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจ เจคเฉ เจธเฉเจเฉเจเจช
BPF เจธเจฅเจฟเจฐเจคเจพ, เจธเฉเจฐเฉฑเจเจฟเจ, เจเจพเจ เจเจคเฉ เจฆเจพ เจฌเจฒเฉเจฆเจพเจจ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ เจเจฐเจจเจฒ เจจเฉเฉฐ เจตเจงเจพเจเจฃ เจฆเจพ เจเฉฑเจ เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจคเจฐเฉเจเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจธ เจเจพเจฐเจจ เจเจฐเจเฉ, เจเจฐเจจเจฒ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจจเฉ เจธเฉเจเจฟเจ เจเจฟ BPF เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจฆเฉเจเจฐเจพ เจธเจฎเจฐเจฅเจฟเจค Seccomp เจซเจฟเจฒเจเจฐ, เจเจฟเจธเจจเฉเฉฐ Seccomp BPF เจตเฉ เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉ, เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจเฉ Seccomp เจตเจฟเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจ เจฒเฉฑเจ-เจฅเจฒเฉฑเจเจคเจพ เจจเฉเฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจธเจฆเฉ เจฌเจนเฉเจชเฉฑเจเจคเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจเฉฑเจ เจเฉฐเจเจพ เจตเจฟเจเจพเจฐ เจนเฉเจตเฉเจเจพเฅค เจเจธ เจ เจงเจฟเจเจ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจฆเฉฑเจธเจพเจเจเฉ เจเจฟ Seccomp เจเฉ เจนเฉ เจ เจคเฉ เจเจธเจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจตเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจซเจฟเจฐ เจคเฉเจธเฉเจ เจธเจฟเฉฑเจเฉเจเฉ เจเจฟ BPF เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ Seccomp เจซเจฟเจฒเจเจฐ เจเจฟเจตเฉเจ เจฒเจฟเจเจฃเฉ เจนเจจเฅค เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ, เจ เจธเฉเจ เจฌเจฟเจฒเจ-เจเจจ BPF เจนเฉเฉฑเจเจพเจ เจจเฉเฉฐ เจฆเฉเจเจพเจเจเฉ เจเฉ เจฒเฉเจจเจเจธ เจธเฉเจฐเฉฑเจเจฟเจ เจฎเฉเจกเฉเจเจฒ เจฒเจ เจเจฐเจจเจฒ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจนเจจเฅค
เจฒเฉเจจเจเจธ เจธเฉเจฐเฉฑเจเจฟเจ เจฎเฉเจกเฉเจเจฒ (LSM) เจเฉฑเจ เจซเจฐเฉเจฎเจตเจฐเจ เจนเฉ เจเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเจพ เจเฉฑเจ เจธเฉเฉฑเจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉ เจเฉ เจเฉฑเจ เจฎเจฟเจเจฐเฉ เจขเฉฐเจ เจจเจพเจฒ เจตเฉฑเจ-เจตเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ เจฎเจพเจกเจฒเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจตเจฐเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจเฅค LSM เจจเฉเฉฐ เจธเจฟเฉฑเจงเฉ เจเจฐเจจเจฒ เจธเฉเจฐเจธ เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ Apparmor, SELinux เจ เจคเฉ Tomoyoเฅค
เจเจ เจฒเฉเจจเจเจธ เจฆเฉเจเจ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจฌเจพเจฐเฉ เจเจฐเจเจพ เจเจฐเจเฉ เจธเจผเฉเจฐเฉ เจเจฐเฉเจเฅค
เจซเฉเจเจฐ
เจฒเฉเจจเจเจธ เจฆเฉเจเจ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจฆเจพ เจจเจฟเจเฉเฉ เจเจน เจนเฉ เจเจฟ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฟเจธเฉ เจเจพเจธ เจเฉฐเจฎ เจจเฉเฉฐ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเฉเจฐ-เจ เจงเจฟเจเจพเจฐเจค เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเฉเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจชเจฐ เจเจธ เจเจฆเฉเจธเจผ เจฒเจ เจธเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ, เจเจพเจ เจจเจนเฉเจ เจคเจพเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐเจค เจฌเจฃเจพเจเจฃเจพ, เจนเจฎเจฒเฉ เจฆเฉ เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉเฉฐ เจเจเจพเจเจเจฆเจพ เจนเฉ เจ เจคเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเฉเจ เจเจพเจฐเจ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐ เจชเฉเจฐเจพเจชเจค เจชเฉเจฐเจ เจเฉเจฒเฉเจนเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจคเจพเจ 80 เจเจนเฉ, เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฐเฉเจ เจตเจเฉเจ เจเจฒเจพเจเจฃ เจฆเฉ เจฌเจเจพเจ, เจคเฉเจธเฉเจ เจเจธเจจเฉเฉฐ CAP_NET_BIND_SERVICE เจธเจฎเจฐเฉฑเจฅเจพ เจฆเฉ เจธเจเจฆเฉ เจนเฉเฅค
main.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
capsh (เจธเจผเฉเฉฑเจฒ เจฎเฉเจจเฉเจเจฐ) เจเฉฑเจ เจเฉเจฒ เจนเฉ เจเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจฆเฉ เจเฉฑเจ เจเจพเจธ เจธเฉเฉฑเจ เจจเจพเจฒ เจธเจผเฉเฉฑเจฒ เจเจฒเจพเจเจเจฆเจพ เจนเฉเฅค
เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจเจฟเจตเฉเจ เจเจฟ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฆเฉฑเจธเจฟเจ เจเจฟเจ เจนเฉ, เจชเฉเจฐเฉ เจฐเฉเจ เจ เจงเจฟเจเจพเจฐ เจฆเฉเจฃ เจฆเฉ เจฌเจเจพเจ, เจคเฉเจธเฉเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจตเจฟเฉฑเจ เจชเจนเจฟเจฒเจพเจ เจคเฉเจ เจฎเฉเจเฉเจฆ เจนเจฐ เจเฉเจเจผ เจฆเฉ เจจเจพเจฒ cap_net_bind_service เจธเจฎเจฐเฉฑเจฅเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจเฉ เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐ เจชเฉเจฐเจพเจชเจค เจชเฉเจฐเจ เจฌเจพเจเจกเจฟเฉฐเจ เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจ เจธเฉเจ เจเจชเจฃเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ capsh เจตเจฟเฉฑเจ เจจเฉฑเจฅเฉ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ:
# 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 - เจเฉฑเจ เจธเจผเฉเฉฑเจฒ เจฆเฉ เจคเฉเจฐ เจคเฉ capsh เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเฅค
- โcaps='cap_net_bind_service+eip cap_setpcap,cap_setuid,cap_setgid+ep' - เจเจฟเจเจเจเจฟ เจธเจพเจจเฉเฉฐ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ (เจ เจธเฉเจ เจฐเฉเจ เจฆเฉ เจคเฉเจฐ เจคเฉ เจจเจนเฉเจ เจเจฒเจพเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ), เจ เจธเฉเจ cap_net_bind_service เจ เจคเฉ เจ เจธเจฒ เจตเจฟเฉฑเจ เจเจชเจญเฉเจเจคเจพ ID เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจฏเฉเจเจคเจพ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจเจฐเจพเจเจเฉ เจฐเฉเจ เจเฉ เจเจฟเจธเฉ เจตเฉ เจจเจนเฉเจ, เจเจฟเจตเฉเจ เจเจฟ เจเฉเจช_เจธเฉเจเฉเจเจก เจ เจคเฉ เจเฉเจช_เจธเฉเจเจเจฟเจกเฅค
- โkeep=1 โ เจ เจธเฉเจ เจฐเฉเจ เจเจพเจคเฉ เจคเฉเจ เจธเจตเจฟเฉฑเจ เจเจฐเจจ เจตเฉเจฒเฉ เจเฉฐเจธเจเจพเจฒ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจจเฉเฉฐ เจฐเฉฑเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจเฅค
- โuser=โเจเฉเจ เจจเจนเฉเจโ โ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจตเจพเจฒเจพ เจ เฉฐเจคเจฎ เจเจชเจญเฉเจเจคเจพ เจเฉเจ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพเฅค
- โaddamb=cap_net_bind_service โ เจฐเฉเจ เจฎเฉเจก เจคเฉเจ เจธเจตเจฟเจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจฆเฉ เจเจฒเฉเจ เจฐเจฟเฉฐเจ เจธเฉเฉฑเจ เจเจฐเฉเฅค
- - -c "./capabilities" - เจธเจฟเจฐเจซเจผ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเจฒเจพเจเฅค
เจฒเจฟเฉฐเจเจก เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจเจฟเจธเจฎ เจฆเฉเจเจ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ เจเฉ เจฌเจพเจฒ เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจฆเฉเจเจฐเจพ เจตเจฟเจฐเจพเจธเจค เจตเจฟเฉฑเจ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ เจเจฆเฉเจ เจฎเฉเจเฉเจฆเจพ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเจนเจจเจพเจ เจจเฉเฉฐ execve() เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจฒเจพเจเจเจฆเจพ เจนเฉ. เจธเจฟเจฐเจซเจผ เจเจน เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจธเจฌเฉฐเจงเจฟเจค เจนเฉเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฑเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจเจพเจ เจฆเฉเจเฉ เจธเจผเจฌเจฆเจพเจ เจตเจฟเฉฑเจ, เจตเจพเจคเจพเจตเจฐเจฃ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจตเจเฉเจ, เจตเจฟเจฐเจพเจธเจค เจตเจฟเฉฑเจ เจฎเจฟเจฒ เจธเจเจฆเฉเจเจ เจนเจจเฅค
เจคเฉเจธเฉเจ เจธเจผเจพเจเจฆ เจธเฉเจ เจฐเจนเฉ เจนเฉเจตเฉเจเฉ เจเจฟ --caps เจตเจฟเจเจฒเจช เจตเจฟเฉฑเจ เจธเจฎเจฐเฉฑเจฅเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ +eip เจฆเจพ เจเฉ เจ เจฐเจฅ เจนเฉเฅค เจเจน เจซเจฒเฉเจ เจเจน เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจฒเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเจจ เจเจฟ เจธเจฎเจฐเฉฑเจฅเจพ:
- เจเจฟเจฐเจฟเจเจธเจผเฉเจฒ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ (เจชเฉ);
- เจตเจฐเจคเฉเจ เจฒเจ เจเจชเจฒเจฌเจง (e);
- เจฌเฉฑเจเฉ เจฆเฉเจเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ (i) เจฆเฉเจเจฐเจพ เจตเจฟเจฐเจพเจธเจค เจตเจฟเฉฑเจ เจฎเจฟเจฒ เจธเจเจฆเฉ เจนเจจเฅค
เจเจฟเจเจเจเจฟ เจ เจธเฉเจ cap_net_bind_service เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ, เจธเจพเจจเฉเฉฐ เจเจน เจ เจซเจฒเฉเจ เจจเจพเจฒ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจซเจฟเจฐ เจ เจธเฉเจ เจเจฎเจพเจเจก เจตเจฟเฉฑเจ เจธเจผเฉเฉฑเจฒ เจธเจผเฉเจฐเฉ เจเจฐเจพเจเจเฉเฅค เจเจน เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจฌเจพเจเจจเจฐเฉ เจจเฉเฉฐ เจเจฒเจพเจเจเจพ เจ เจคเฉ เจธเจพเจจเฉเฉฐ เจเจธเจจเฉเฉฐ i เจซเจฒเฉเจ เจจเจพเจฒ เจฎเจพเจฐเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจ เฉฐเจค เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ เจเจฟ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจเจ เจเจพเจตเฉ (เจ เจธเฉเจ UID เจจเฉเฉฐ เจฌเจฆเจฒเฉ เจฌเจฟเจจเจพเจ เจ เจเจฟเจนเจพ เจเฉเจคเจพ) p เจจเจพเจฒ. เจเจน cap_net_bind_service+eip เจตเจฐเจเจพ เจฒเฉฑเจเจฆเจพ เจนเฉเฅค
เจคเฉเจธเฉเจ ss เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจจเจคเฉเจเจพ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ. เจเจ เจชเฉเจ 'เจคเฉ เจซเจฟเฉฑเจ เจเจฐเจจ เจฒเจ เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ เจฅเฉเฉเจพ เจเฉเจเจพ เจเจฐเฉเจ, เจชเจฐ เจเจน 0 เจคเฉเจ เจเจฒเจพเจตเจพ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจชเฉเจฐเจ เจ เจคเฉ เจเจชเจญเฉเจเจคเจพ ID เจฆเจฟเจเจพเจเจเจพ, เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ 65:
# ss -tulpn -e -H | cut -d' ' -f17-
128 *:80 *:*
users:(("capabilities",pid=30040,fd=3)) uid:65534 ino:11311579 sk:2c v6only:0
เจเจธ เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเฉเจชเจธเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจนเฉ, เจชเจฐ เจคเฉเจธเฉเจ libcap เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจธเจผเฉเฉฑเจฒ เจฒเจฟเจ เจธเจเจฆเฉ เจนเฉเฅค เจนเฉเจฐ เจเจพเจฃเจเจพเจฐเฉ เจฒเจ, 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 เจฆเฉ เจจเจพเจฒ include/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 เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจตเจฟเฉฑเจ เจฒเฉเจจเจเจธ เจจเจพเจฒ เจคเฉเจฒเจจเจพเจฏเฉเจ เจนเฉ, เจเฉเจ เจธเจฟเจธเจเจฎ เจเจพเจฒเจพเจ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฐเจจ เจฆเฉ เจเจธเจฆเฉ เจฏเฉเจเจคเจพ เจเจนเจจเจพเจ เจฆเฉ เจฎเฉเจเจพเจฌเจฒเฉ เจเจธเจจเฉเฉฐ เจฌเจนเฉเจค เจเจผเจฟเจเจฆเจพ เจฒเจเจเจฆเจพเจฐ เจฌเจฃเจพเจเจเจฆเฉ เจนเฉเฅค
Seccomp เจ เจคเฉ Linux เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจเจชเจธ เจตเจฟเฉฑเจ เจจเจฟเจตเฉเจเจฒเฉ เจจเจนเฉเจ เจนเจจ เจ เจคเฉ เจ เจเจธเจฐ เจฆเฉเจตเจพเจ เจชเจนเฉเฉฐเจเจพเจ เจคเฉเจ เจฒเจพเจญ เจฒเฉเจฃ เจฒเจ เจเจเฉฑเจ เฉ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจคเฉเจธเฉเจ เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ CAP_NET_ADMIN เจธเจฎเจฐเฉฑเจฅเจพ เจฆเฉเจฃเจพ เจเจพเจน เจธเจเจฆเฉ เจนเฉ เจชเจฐ เจเจธเจจเฉเฉฐ เจธเจพเจเฉเจ เจเจจเฉเจเจธเจผเจจเจพเจ เจจเฉเฉฐ เจธเจตเฉเจเจพเจฐ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจจเจนเฉเจ เจฆเฉ เจธเจเจฆเฉ เจนเฉ, เจธเจตเฉเจเจพเจฐ เจเจฐเฉ เจ เจคเฉ เจธเจตเฉเจเจพเจฐ เจเจฐเฉ4 เจธเจฟเจธเจเจฎ เจเจพเจฒเจพเจ เจจเฉเฉฐ เจฌเจฒเฉเจ เจเจฐเฉเฅค
Seccomp เจซเจฟเจฒเจเจฐเจฟเฉฐเจ เจตเจฟเจงเฉ SECOMP_MODE_FILTER เจฎเฉเจก เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจจ เจตเจพเจฒเฉ BPF เจซเจฟเจฒเจเจฐเจพเจ 'เจคเฉ เจ เจงเจพเจฐเจค เจนเฉ, เจ เจคเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจซเจฟเจฒเจเจฐเจฟเฉฐเจ เจเจธเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเจฟเจตเฉเจ เจเจฟ เจชเฉเจเฉเจเจพเจ เจฒเจเฅค
Seccomp เจซเจฟเจฒเจเจฐ PR_SET_SECCOMP เจเจพเจฐเจตเจพเจ เจฆเฉเจเจฐเจพ prctl เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฒเฉเจก เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจเจน เจซเจฟเจฒเจเจฐ เจเฉฑเจ BPF เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเจพ เจฐเฉเจช เจฒเฉเจเจฆเฉ เจนเจจ เจเฉ seccomp_data เจขเจพเจเจเฉ เจฆเฉเจเจฐเจพ เจฆเจฐเจธเจพเจ เจนเจฐเฉเจ Seccomp เจชเฉเจเฉเจ เจฒเจ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจธ เจขเจพเจเจเฉ เจตเจฟเฉฑเจ เจธเฉฐเจฆเจฐเจญ เจเจฐเจเฉเจเฉเจเจเจฐ, เจธเจฟเจธเจเจฎ เจเจพเจฒ เจฆเฉ เจธเจฎเฉเจ เจชเฉเจฐเฉเจธเฉเจธเจฐ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ, เจ เจคเฉ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจเจฐเจเฉเจฎเฉเจเจเจธ, uint64 เจตเจเฉเจ เจฆเจฐเจธเจพเจ เจเจ เจนเจจเฅค
linux/seccomp.h เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจเจฐเจจเจฒ เจธเฉเจฐเจธ เจเฉเจก เจคเฉเจ seccomp_data เจขเจพเจเจเจพ เจ เจเจฟเจนเจพ เจฆเจฟเจธเจฆเจพ เจนเฉ:
struct seccomp_data {
int nr;
__u32 arch;
__u64 instruction_pointer;
__u64 args[6];
};
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจเจธ เจขเจพเจเจเฉ เจคเฉเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ, เจ เจธเฉเจ เจธเจฟเจธเจเจฎ เจเจพเจฒ, เจเจธเจฆเฉ เจเจฐเจเฉเจฎเฉเจเจเจพเจ, เจเจพเจ เจฆเฉเจตเจพเจ เจฆเฉ เจธเฉเจฎเฉเจฒ เจฆเฉเจเจฐเจพ เจซเจฟเจฒเจเจฐ เจเจฐ เจธเจเจฆเฉ เจนเจพเจเฅค
เจนเจฐเฉเจ Seccomp เจชเฉเจเฉเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจซเจฟเจฒเจเจฐ เจจเฉเฉฐ เจ เฉฐเจคเจฟเจฎ เจซเฉเจธเจฒเจพ เจฒเฉเจฃ เจฒเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ เจ เจคเฉ เจเจฐเจจเจฒ เจจเฉเฉฐ เจฆเฉฑเจธเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเจฟ เจ เฉฑเจเฉ เจเฉ เจเจฐเจจเจพ เจนเฉเฅค เจ เฉฐเจคเจฎ เจซเฉเจธเจฒเจพ เจตเจพเจชเจธเฉ เจฎเฉเฉฑเจฒเจพเจ (เจธเจเฉเจเจธ เจเฉเจก) เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจฆเฉเจเจฐเจพ เจฆเจฐเจธเจพเจเจ เจเจฟเจ เจนเฉเฅค
- SECOMP_RET_KILL_PROCESS - เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉเฉฐ เจซเจฟเจฒเจเจฐ เจเจฐเจจ เจคเฉเจ เจคเฉเจฐเฉฐเจค เจฌเจพเจ เจฆ เจชเฉเจฐเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเจคเจฎ เจเจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเฉ เจเจธ เจเจพเจฐเจจ เจจเจนเฉเจ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค
- SECOMP_RET_KILL_THREAD - เจเฉฑเจ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉเฉฐ เจซเจฟเจฒเจเจฐ เจเจฐเจจ เจคเฉเจ เจคเฉเจฐเฉฐเจค เจฌเจพเจ เจฆ เจฎเฉเจเฉเจฆเจพ เจฅเฉเจฐเฉเจก เจจเฉเฉฐ เจฌเฉฐเจฆ เจเจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเฉ เจเจธ เจเจพเจฐเจจ เจจเจนเฉเจ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค
โ SECOMP_RET_KILL โ SECOMP_RET_KILL_THREAD เจฒเจ เจเจชเจจเจพเจฎ, เจชเจฟเจเฉเฉ เจ เจจเฉเจเฉเจฒเจคเจพ เจฒเจ เจเฉฑเจกเจฟเจ เจเจฟเจเฅค
- SECOMP_RET_TRAP - เจธเจฟเจธเจเจฎ เจเจพเจฒ เจฆเฉ เจฎเจจเจพเจนเฉ เจนเฉ, เจ เจคเฉ SIGSYS (เจฌเฉเจก เจธเจฟเจธเจเจฎ เจเจพเจฒ) เจธเจฟเจเจจเจฒ เจเจธ เจเฉฐเจฎ เจฒเจ เจญเฉเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจเฉ เจเจธเจจเฉเฉฐ เจเจพเจฒ เจเจฐเจฆเจพ เจนเฉเฅค
- SECOMP_RET_ERRNO - เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉเฉฐ เจเจเจเจผเฉเจเจฟเจเจ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจ เจคเฉ SECOMP_RET_DATA เจซเจฟเจฒเจเจฐ เจฐเจฟเจเจฐเจจ เจฎเฉเฉฑเจฒ เจฆเจพ เจนเจฟเฉฑเจธเจพ errno เจฎเฉเฉฑเจฒ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจเจชเจญเฉเจเจคเจพ เจธเจชเฉเจธ เจจเฉเฉฐ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจฒเจคเฉ เจฆเฉ เจเจพเจฐเจจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเฉ เจนเฉเจ, เจตเฉฑเจ-เจตเฉฑเจ เจเจฒเจคเฉ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจ เจเจฒเฉ เจญเจพเจ เจตเจฟเฉฑเจ เจเจฒเจคเฉ เจจเฉฐเจฌเจฐเจพเจ เจฆเฉ เจธเฉเจเฉ เจฆเจฟเฉฑเจคเฉ เจเจ เจนเฉเฅค
- SECOMP_RET_TRACE - ptrace เจเจฐเฉเจธเจฐ เจจเฉเฉฐ เจธเฉเจเจฟเจค เจเจฐเจจ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉ - PTRACE_O_TRACESECCOMP เจจเฉเฉฐ เจฐเฉเจเจฃ เจฒเจ เจเจฆเฉเจ เจเฉฑเจ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจเจธ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฆเฉเจเจฃ เจ เจคเฉ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจจ เจฒเจ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเฉเจเจฐ เจเฉฑเจ เจเจฐเฉเจธเจฐ เจเจจเฉเจเจ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจคเจพเจ เจเฉฑเจ เจเจฒเจคเฉ เจตเจพเจชเจธ เจ เจเจพเจเจฆเฉ เจนเฉ, errno เจจเฉเฉฐ -ENOSYS 'เจคเฉ เจธเฉเฉฑเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉเฉฐ เจเจฒเจพเจเจ เจจเจนเฉเจ เจเจพเจเจฆเจพ เจนเฉเฅค
- SECOMP_RET_LOG - เจธเจฟเจธเจเจฎ เจเจพเจฒ เจนเฉฑเจฒ เจนเฉ เจเจ เจนเฉ เจ เจคเฉ เจฒเฉเจ เจเฉเจคเฉ เจเจ เจนเฉเฅค
- SECOMP_RET_ALLOW - เจธเจฟเจธเจเจฎ เจเจพเจฒ เจฆเฉ เจธเจฟเจฐเจซเจผ เจเจเจพเจเจผเจค เจนเฉเฅค
ptrace เจเฉฑเจ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจนเฉ เจเฉ เจเจฐเฉเจธเฉ เจจเจพเจฎเจ เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจเจฐเฉเจธเจฟเฉฐเจ เจฎเจเฉเจจเจฟเจเจผเจฎ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉ เจจเจฟเจเจฐเจพเจจเฉ เจ เจคเฉ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจเจฐเจจ เจฆเฉ เจฏเฉเจเจคเจพ เจนเฉเฅค เจเจฐเฉเจธ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจจเฉเฉฐ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจขเฉฐเจ เจจเจพเจฒ เจชเฉเจฐเจญเจพเจตเจฟเจค เจเจฐ เจธเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจฐเฉเจธเฉ เจฆเฉ เจฎเฉเจฎเฉเจฐเฉ เจฐเจเจฟเจธเจเจฐเจพเจ เจจเฉเฉฐ เจธเฉเจง เจธเจเจฆเจพ เจนเฉเฅค Seccomp เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจ, ptrace เจฆเฉ เจตเจฐเจคเฉเจ SECOMP_RET_TRACE เจธเจฅเจฟเจคเฉ เจเฉเจก เจฆเฉเจเจฐเจพ เจธเจผเฉเจฐเฉ เจนเฉเจฃ 'เจคเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจเจธเจฒเจ เจเจฐเฉเจธเจฐ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจคเฉเจ เจฐเฉเจ เจธเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจชเจฃเจพ เจคเจฐเจ เจฒเจพเจเฉ เจเจฐ เจธเจเจฆเจพ เจนเฉเฅค
Seccomp เจเจฒเจคเฉเจเจ
เจธเจฎเฉเจ-เจธเจฎเฉเจ 'เจคเฉ, Seccomp เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจ เจคเจฐเฉเฉฑเจเฉเจเจ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเจฐเจจเจพ เจชเจตเฉเจเจพ, เจเฉ เจเจฟ SECOMP_RET_ERRNO เจเจฟเจธเจฎ เจฆเฉ เจตเจพเจชเจธเฉ เจฎเฉเฉฑเจฒ เจฆเฉเจเจฐเจพ เจชเจเจพเจฃเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจเฅค เจเฉฑเจ เจเจฒเจคเฉ เจฆเฉ เจฐเจฟเจชเฉเจฐเจ เจเจฐเจจ เจฒเจ, seccomp เจธเจฟเจธเจเจฎ เจเจพเจฒ 1 เจฆเฉ เจฌเจเจพเจ -0 เจตเจพเจชเจธ เจเจตเฉเจเฉเฅค
เจนเฉเจ เจฒเจฟเจเฉเจเจ เจเจฒเจคเฉเจเจ เจธเฉฐเจญเจต เจนเจจ:
- EACCESS - เจเจพเจฒเจฐ เจจเฉเฉฐ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจจเจนเฉเจ เจนเฉเฅค เจเจน เจเจฎ เจคเฉเจฐ 'เจคเฉ เจตเจพเจชเจฐเจฆเจพ เจนเฉ เจเจฟเจเจเจเจฟ เจเจธ เจตเจฟเฉฑเจ CAP_SYS_ADMIN เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐ เจจเจนเฉเจ เจนเจจ เจเจพเจ prctl เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ no_new_privs เจธเฉเฉฑเจ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ (เจ เจธเฉเจ เจเจธ เจฌเจพเจฐเฉ เจฌเจพเจ เจฆ เจตเจฟเฉฑเจ เจเฉฑเจฒ เจเจฐเจพเจเจเฉ);
โ EFAULT โ เจชเจพเจธ เจเฉเจคเฉ เจเจฐเจเฉเจฎเฉเจเจเจพเจ (seccomp_data เจขเจพเจเจเฉ เจตเจฟเฉฑเจ args) เจฆเจพ เจเฉเจ เจตเฉเจง เจชเจคเจพ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ;
โ EINVAL โ เจเฉฑเจฅเฉ เจเจพเจฐ เจเจพเจฐเจจ เจนเฉ เจธเจเจฆเฉ เจนเจจ:
- เจฌเฉเจจเจคเฉ เจเฉเจคเฉ เจเจพเจฐเจตเจพเจ เจ เจฃเจเจพเจฃ เจนเฉ เจเจพเจ เจฎเฉเจเฉเจฆเจพ เจธเฉฐเจฐเจเจจเจพ เจตเจฟเฉฑเจ เจเจฐเจจเจฒ เจฆเฉเจเจฐเจพ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉเจ เจนเฉ;
-เจจเจฟเจธเจผเจเจฟเจค เจซเจฒเฉเจ เจฌเฉเจจเจคเฉ เจเฉเจคเฉ เจเจพเจฐเจตเจพเจ เจฒเจ เจตเฉเจง เจจเจนเฉเจ เจนเจจ;
-เจเจชเจฐเฉเจธเจผเจจ เจตเจฟเฉฑเจ BPF_ABS เจธเจผเจพเจฎเจฒ เจนเฉ, เจชเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเจซเจธเฉเฉฑเจ เจตเจฟเฉฑเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจนเจจ, เจเฉ เจเจฟ seccomp_data เจขเจพเจเจเฉ เจฆเฉ เจเจเจพเจฐ เจคเฉเจ เจตเฉฑเจง เจนเฉ เจธเจเจฆเฉเจเจ เจนเจจ;
-เจซเจฟเจฒเจเจฐ เจจเฉเฉฐ เจญเฉเจเฉเจเจ เจเจเจเจ เจนเจฆเจพเจเจคเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจ เจงเจฟเจเจคเจฎ เจคเฉเจ เจตเฉฑเจง เจเจ เจนเฉ;
โ ENOMEM โ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจฎเฉเจฎเฉเจฐเฉ เจจเจนเฉเจ เจนเฉ;
- EOPNOTSUPP - เจเจชเจฐเฉเจธเจผเจจ เจจเฉ เจธเฉฐเจเฉเจค เจฆเจฟเฉฑเจคเจพ เจนเฉ เจเจฟ SECOMP_GET_ACTION_AVAIL เจจเจพเจฒ เจเจพเจฐเจตเจพเจ เจเจชเจฒเจฌเจง เจธเฉ, เจชเจฐ เจเจฐเจจเจฒ เจเจฐเจเฉเจฎเฉเจเจเจพเจ เจตเจฟเฉฑเจ เจตเจพเจชเจธเฉ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉ;
โ ESRCH โ เจเฉฑเจ เจนเฉเจฐ เจธเจเฉเจฐเฉเจฎ เจจเฉเฉฐ เจธเจฎเจเจพเจฒเฉ เจเจฐเจจ เจตเฉเจฒเฉ เจเฉฑเจ เจธเจฎเฉฑเจธเจฟเจ เจเจ เจนเฉ;
- ENOSYS - SECOMP_RET_TRACE เจเจเจธเจผเจจ เจจเจพเจฒ เจเฉเฉเจฟเจ เจเฉเจ เจเจฐเฉเจธเจฐ เจจเจนเฉเจ เจนเฉเฅค
prctl เจเฉฑเจ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจนเฉ เจเฉ เจเฉฑเจ เจเจชเจญเฉเจเจคเจพ-เจธเจชเฉเจธ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉ เจเจพเจธ เจชเจนเจฟเจฒเฉเจเจ เจจเฉเฉฐ เจนเฉเจฐเจพเจซเฉเจฐเฉ (เจธเฉเฉฑเจ เจ เจคเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ) เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ เจฌเจพเจเจ เจเจเจกเฉเจ เจจเจธ, เจฅเจฐเจฟเฉฑเจก เจจเจพเจฎ, เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฃเจจเจพ เจฎเฉเจก (Seccomp), เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐ, เจชเจฐเจซ เจเจตเฉเจเจเจธ, เจเจฆเจฟเฅค
Seccomp เจคเฉเจนเจพเจกเฉ เจฒเจ เจเฉฑเจ เจธเฉเจเจกเจฌเฉเจเจธ เจคเจเจจเจพเจฒเฉเจเฉ เจตเจพเจเจ เจฒเฉฑเจ เจธเจเจฆเจพ เจนเฉ, เจชเจฐ เจ เจเจฟเจนเจพ เจจเจนเฉเจ เจนเฉเฅค Seccomp เจเฉฑเจ เจเจชเจฏเฉเจเจคเจพ เจนเฉ เจเฉ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจธเฉเจเจกเจฌเฉเจเจธ เจตเจฟเจงเฉ เจตเจฟเจเจธเจฟเจค เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉเฅค เจนเฉเจฃ เจเจ เจฆเฉเจเฉเจ เจเจฟ เจเจฟเจตเฉเจ เจเจชเจญเฉเจเจคเจพ เจเฉฐเจเจฐเจเจเจธเจผเจจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเฉฑเจ เจซเจฟเจฒเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฌเจฃเจพเจ เจเจพเจเจฆเฉ เจนเจจ เจเจฟเจธเจจเฉเฉฐ เจธเฉเจเจเฉเจฎ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจฆเฉเจเจฐเจพ เจธเจฟเฉฑเจงเจพ เจฌเฉเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค
BPF Seccomp เจซเจฟเจฒเจเจฐ เจเจฆเจพเจนเจฐเจจ
เจเฉฑเจฅเฉ เจ เจธเฉเจ เจฆเจฟเจเจพเจตเจพเจเจเฉ เจเจฟ เจชเจนเจฟเจฒเจพเจ เจตเจฟเจเจพเจฐเฉเจเจ เจเจเจเจ เจฆเฉ เจเจพเจฐเจตเจพเจเจเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจเฉเฉเจจเจพ เจนเฉ, เจ เจฐเจฅเจพเจค:
- เจ เจธเฉเจ เจเฉฑเจ Seccomp BPF เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฒเจฟเจเจพเจเจเฉ, เจเฉ เจฒเจ เจเจ เจซเฉเจธเจฒเจฟเจเจ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจตเฉฑเจ-เจตเฉฑเจ เจฐเจฟเจเจฐเจจ เจเฉเจกเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจซเจฟเจฒเจเจฐ เจตเจเฉเจ เจตเจฐเจคเจฟเจ เจเจพเจตเฉเจเจพ;
โ prctl เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจซเจฟเจฒเจเจฐ เจฒเฉเจก เจเจฐเฉเฅค
เจชเจนเจฟเจฒเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจธเจเฉเจเจกเจฐเจก เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจ เจคเฉ เจฒเฉเจจเจเจธ เจเจฐเจจเจฒ เจคเฉเจ เจธเจฟเจฐเจฒเฉเจเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉ:
#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 (offsetof(structure seccomp_data, arch))) - เจธเจฟเจธเจเจฎ BPF_LD เจคเฉเจ BPF_W เจธเจผเจฌเจฆ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฒเฉเจก เจนเฉเฉฐเจฆเจพ เจนเฉ เจ เจคเฉ เจเจเฉฑเจ เจพ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจชเฉเจเฉเจ เจกเฉเจเจพ เจเฉฑเจ เจจเจฟเจธเจผเจเจฟเจค เจเจซเจธเฉเฉฑเจ BPF_ABS 'เจคเฉ เจธเจฅเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉเฅค
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, arch, 0, 3) - BPF_JEQ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจพเจเจ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจเฉ BPF_K เจธเฉฐเจเจพเจ เจธเจฅเจฟเจฐเจพเจเจ เจตเจฟเฉฑเจ เจเจฐเจเฉเจเฉเจเจเจฐ เจฎเฉเฉฑเจฒ arch เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจนเฉเฅค เจเฉเจเจฐ เจ เจเจฟเจนเจพ เจนเฉ, เจคเจพเจ เจ เจเจฒเฉ เจนเจฆเจพเจเจค 'เจคเฉ เจเจซเจธเฉเฉฑเจ 0 'เจคเฉ เจเฉฐเจช เจเจฐเฉ, เจจเจนเฉเจ เจคเจพเจ เจเจซเจธเฉเฉฑเจ 3 (เจเจธ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ) 'เจคเฉ เจเจพเจฒ เจฎเจพเจฐเฉ เจเจฟเจเจเจเจฟ arch เจฎเฉเจฒ เจจเจนเฉเจ เจเจพเจเจฆเจพ เจนเฉเฅค
- BPF_STMT(BPF_LD + BPF_W + BPF_ABS (offsetof(struct seccomp_data, nr))) - BPF_LD เจคเฉเจ BPF_W เจธเจผเจฌเจฆ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฒเฉเจก เจ เจคเฉ เจเจเฉฑเจ เจพ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจเฉ เจเจฟ BPF_ABS เจฆเฉ เจซเจฟเจเจธเจก เจเจซเจธเฉเฉฑเจ เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฆ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉฐเจฌเจฐ เจนเฉเฅค
โ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, nr, 0, 1) โ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉฐเจฌเจฐ เจฆเฉ nr เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจฎเฉเฉฑเจฒ เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจเจฐเจฆเจพ เจนเฉเฅค เจเฉเจเจฐ เจเจน เจฌเจฐเจพเจฌเจฐ เจนเจจ, เจคเจพเจ เจ เจเจฒเฉ เจนเจฆเจพเจเจค 'เจคเฉ เจ เฉฑเจเฉ เจตเจงเจฆเจพ เจนเฉ เจ เจคเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉเฉฐ เจ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ, เจจเจนเฉเจ เจคเจพเจ SECOMP_RET_ALLOW เจจเจพเจฒ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
- BPF_STMT(BPF_RET + BPF_K, SECOMP_RET_ERRNO | (เจเจฒเจคเฉ & SECCOMP_RET_DATA)) - เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ BPF_RET เจจเจพเจฒ เจธเจฎเจพเจชเจค เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจจเจคเฉเจเฉ เจตเจเฉเจ เจเจฒเจคเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจคเฉเจ เจจเฉฐเจฌเจฐ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเจฒเจคเฉ SECOMP_RET_ERRNO เจชเฉเจฆเจพ เจเจฐเจฆเจพ เจนเฉเฅค
- BPF_STMT(BPF_RET + BPF_K, SECOMP_RET_ALLOW) - เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ BPF_RET เจจเจพเจฒ เจเจคเจฎ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ SECCOMP_RET_ALLOW เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
SECOMP CBPF เจนเฉ
เจคเฉเจธเฉเจ เจธเฉเจ เจฐเจนเฉ เจนเฉเจตเฉเจเฉ เจเจฟ เจเฉฐเจชเจพเจเจฒ เจเฉเจคเฉ ELF เจเจฌเจเฉเจเจ เจเจพเจ JIT เจเฉฐเจชเจพเจเจฒ เจเฉเจคเฉ C เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเฉ เจฌเจเจพเจ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจธเฉเจเฉ เจเจฟเจเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅคเจเจธ เจฆเฉ เจฆเฉ เจเจพเจฐเจจ เจนเจจเฅค
โข เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, Seccomp cBPF (เจเจฒเจพเจธเจฟเจ BPF) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ เจจเจพ เจเจฟ eBPF, เจเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ: เจเจธเจฆเจพ เจเฉเจ เจฐเจเจฟเจธเจเจฐ เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจเจเจฐเฉ เจเจฃเจจเจพ เจจเจคเฉเจเฉ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจธเจฟเจฐเจซ เจเฉฑเจ เจธเฉฐเจเจตเจ, เจเจฟเจตเฉเจ เจเจฟ เจเจฆเจพเจนเจฐเจฃ เจตเจฟเฉฑเจ เจฆเฉเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
โข เจฆเฉเจเจพ, Seccomp เจธเจฟเฉฑเจงเฉ BPF เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจเฉฑเจ เจเจฐเฉ เจฒเจ เจชเฉเจเจเฉฐเจเจฐ เจธเจตเฉเจเจพเจฐ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจนเฉเจฐ เจเฉเจ เจจเจนเฉเจเฅค เจธเจพเจกเฉ เจฆเฉเจเจฐเจพ เจตเจฐเจคเฉ เจเจ เจฎเฉเจเจฐเฉ เจเจนเจจเจพเจ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจจเฉเฉฐ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฐ-เจ เจจเฉเจเฉเจฒ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเจฆเฉ เจนเจจเฅค
เจเฉเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจเจธ เจ เจธเฉเจเจฌเจฒเฉ เจจเฉเฉฐ เจธเจฎเจเจฃ เจฒเจ เจนเฉเจฐ เจฎเจฆเจฆ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจคเจพเจ เจธเฉเจกเฉเจเฉเจก 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉ เจเฉ เจเจนเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ:
if (arch != AUDIT_ARCH_X86_64) {
return SECCOMP_RET_ALLOW;
}
if (nr == __NR_write) {
return SECCOMP_RET_ERRNO;
}
return SECCOMP_RET_ALLOW;
เจธเจพเจเจ_เจซเจฟเจฒเจเจฐ เจฌเจฃเจคเจฐ เจตเจฟเฉฑเจ เจซเจฟเจฒเจเจฐ เจเฉเจก เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจก เจ เจคเฉ เจซเจฟเจฒเจเจฐ เจฆเฉ เจเจฃเจจเจพ เจเฉเจคเฉ เจฒเฉฐเจฌเจพเจ เจตเจพเจฒเจพ เจเฉฑเจ sock_fprog เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฌเจพเจ เจฆ เจตเจฟเฉฑเจ เจเจฒเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฃเจพ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจฆเจฒเฉเจฒ เจตเจเฉเจ เจเจธ เจกเฉเจเจพ เจขเจพเจเจเฉ เจฆเฉ เจฒเฉเฉ เจนเฉ:
struct sock_fprog prog = {
.len = (unsigned short)(sizeof(filter) / sizeof(filter[0])),
.filter = filter,
};
install_filter เจซเฉฐเจเจธเจผเจจ เจตเจฟเฉฑเจ เจเจฐเจจ เจฒเจ เจธเจฟเจฐเจซ เจเฉฑเจ เจเฉเจเจผ เจฌเจเฉ เจนเฉ - เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจเจชเจฃเฉ เจเจช เจฒเฉเจก เจเจฐเฉ! เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจ เจธเฉเจ prctl เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจพเจ, PR_SET_SECCOMP เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเฉฐเจชเจฟเจเจเจฟเฉฐเจ เจฎเฉเจก เจตเจฟเฉฑเจ เจฆเจพเจเจฒ เจนเฉเจฃ เจฒเจ เจเฉฑเจ เจตเจฟเจเจฒเจช เจตเจเฉเจ เจฒเฉเจเจฆเฉ เจนเจพเจเฅค เจซเจฟเจฐ เจ เจธเฉเจ เจฎเฉเจก เจจเฉเฉฐ SECOMP_MODE_FILTER เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจซเจฟเจฒเจเจฐ เจฒเฉเจก เจเจฐเจจ เจฒเจ เจเจนเจฟเฉฐเจฆเฉ เจนเจพเจ, เจเฉ เจเจฟ sock_fprog เจเจฟเจธเจฎ เจฆเฉ เจชเฉเจฐเฉเจ เจตเฉเจฐเฉเจเจฌเจฒ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจนเฉ:
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 เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจ เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจเจธ เจธเจฅเจฟเจคเฉ เจคเฉเจ เจฌเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเจฟเฉฑเจฅเฉ เจฌเจพเจฒ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจจเฉเฉฐ เจเจนเจจเจพเจ เจฆเฉ เจฎเจพเจชเจฟเจเจ เจจเจพเจฒเฉเจ เจตเจงเฉเจฐเฉ เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจเจธเจฆเฉ เจจเจพเจฒ, เจ เจธเฉเจ เจฌเจฟเจจเจพเจ เจฐเฉเจ เจ เจงเจฟเจเจพเจฐเจพเจ เจฆเฉ install_filter เจซเฉฐเจเจธเจผเจจ เจตเจฟเฉฑเจ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉเจเจ 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 เจตเจธเจคเฉเจเจ เจฆเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจฒเจ เจตเจฟเจงเฉเจเจ เจฆเจพ เจเฉฑเจ เจธเฉเฉฑเจ เจฒเจพเจเฉ เจเจฐเจฆเจพ เจนเฉเฅค เจเจนเจจเจพเจ เจตเจฟเจงเฉเจเจ เจจเฉเฉฐ BPF LSM เจเฉเจฐเฉเจช เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
BPF LSM เจเจพเจฒ
เจธเจฟเจธเจเจฎ เจเจตเฉเจเจเจธ เจฆเฉ เจเจฐเจเฉเจเฉเจเจเจฐ-เจธเฉเจคเฉฐเจคเจฐ เจจเจฟเจเจฐเจพเจจเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ, LSM เจซเจพเจนเจพเจ เจฆเฉ เจงเจพเจฐเจจเจพ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจฆเจพ เจนเฉเฅค เจเฉฑเจ เจนเฉเฉฑเจ เจเจพเจฒ เจคเจเจจเฉเจเฉ เจคเฉเจฐ 'เจคเฉ เจเฉฑเจ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจฆเฉ เจธเจฎเจพเจจ เจนเฉ, เจชเจฐ เจธเจฟเจธเจเจฎ เจธเฉเจคเฉฐเจคเจฐ เจนเฉ เจ เจคเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจขเจพเจเจเฉ เจจเจพเจฒ เจเจเฉเจเฉเจฐเจฟเจค เจนเฉเฅค LSM เจเฉฑเจ เจจเจตเจพเจ เจธเฉฐเจเจฒเจช เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฌเจธเจเจฐเฉเจเจธเจผเจจ เจฒเฉเจ เจฐ เจตเฉฑเจ-เจตเฉฑเจ เจเจฐเจเฉเจเฉเจเจเจฐ 'เจคเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒเจพเจ เจจเจพเจฒ เจจเจเจฟเฉฑเจ เจฃ เจตเฉเจฒเฉ เจเจเจฃ เจตเจพเจฒเฉเจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจคเฉเจ เจฌเจเจฃ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, เจเจฐเจจเจฒ เจตเจฟเฉฑเจ เจฌเฉเจชเฉเจเจซ เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจจเจพเจฒ เจเฉเฉเฉ เจธเฉฑเจค เจนเฉเฉฑเจ เจนเฉเฉฐเจฆเฉ เจนเจจ, เจ เจคเฉ SELinux เจเฉฑเจเฉ เจเฉฑเจ เจฌเจฟเจฒเจ-เจเจจ LSM เจนเฉ เจเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจฆเจพ เจนเฉเฅค
เจเฉเจฐเฉเจชเจธ เจฒเจ เจธเจฐเฉเจค เจเฉเจก เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจเจฐเจจเจฒ เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจธเจฅเจฟเจค เจนเฉ 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 เจเฉเจฒเจธ เจฆเฉ เจจเจพเจฒ-เจจเจพเจฒ เจนเฉเจฐ เจเจชเจจ เจธเฉเจฐเจธ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจฆเฉ เจตเจฟเจเจพเจธ เจตเจฟเฉฑเจ เจฏเฉเจเจฆเจพเจจ เจชเจพเจเจเฅค เจกเฉเจเจฐ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจ เจคเฉ เจกเฉเจเจฐ เจชเจฒเฉฑเจเจเจจ เจเจเฉเจธเจฟเจธเจเจฎ เจฆเฉ เจตเจฟเจเจพเจธ เจฒเจ เจเจธเจฆเฉ เจเฉฐเจฎ เจฒเจ เจเจพเจฃเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจกเฉเจตเจฟเจก เจซเจฒเฉเจฎ เจเฉเจฐเจพเจซเจพเจ เจฌเจพเจฐเฉ เจฌเจนเฉเจค เจญเจพเจตเฉเจ เจนเฉ เจ เจคเฉ เจนเจฎเฉเจธเจผเจพเจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉเฉฐ เจ เจจเฉเจเฉเจฒ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉเฅค
เจฒเฉเจฐเฉเจเจเจผเฉ เจซเฉเจเจเจพเจจเจพ Sysdig 'เจคเฉ เจเจชเจจ เจธเฉเจฐเจธ เจเฉเจฎ 'เจคเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ, เจเจฟเฉฑเจฅเฉ เจเจน เจฎเฉเฉฑเจ เจคเฉเจฐ 'เจคเฉ Falco 'เจคเฉ เจเฉเจเจฆเฉเจฐเจฟเจค เจนเฉ, เจเฉฑเจ เจเจฒเจพเจเจก เจจเฉเจเจฟเจต เจเฉฐเจชเจฟเจเจเจฟเฉฐเจ เจซเจพเจเจเจกเฉเจธเจผเจจ เจชเฉเจฐเฉเจเฉเจเจ เจเฉ เจเจฟ เจเจฐเจจเจฒ เจฎเฉเจกเฉเจเจฒ เจ เจคเฉ eBPF เจฐเจพเจนเฉเจ เจเฉฐเจเฉเจจเจฐ เจฐเจจเจเจพเจเจฎ เจธเฉเจฐเฉฑเจเจฟเจ เจ เจคเฉ เจ เจธเฉฐเจเจคเจคเจพ เจเฉเจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจน เจกเจฟเจธเจเจฐเฉเจฌเจฟเจเจเจก เจธเจฟเจธเจเจฎ, เจธเจพเจซเจเจตเฉเจ เจฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจจเฉเฉฑเจเจตเจฐเจเจฟเฉฐเจ, เจฒเฉเจจเจเจธ เจเจฐเจจเจฒ, เจ เจคเฉ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฌเจพเจฐเฉ เจญเจพเจตเฉเจ เจนเฉเฅค
ยปเจเจฟเจคเจพเจฌ เจฌเจพเจฐเฉ เจนเฉเจฐ เจตเฉเจฐเจตเฉ เจเจธ 'เจคเฉ เจฎเจฟเจฒ เจธเจเจฆเฉ เจนเจจ
ยป
ยป
Khabrozhiteley เจฒเจ เจเฉเจชเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ 25% เจฆเฉ เจเฉเจ - เจฒเฉเจจเจเจธ
เจเจฟเจคเจพเจฌ เจฆเฉ เจเจพเจเจเจผเฉ เจธเฉฐเจธเจเจฐเจฃ เจฆเฉ เจญเฉเจเจคเจพเจจ 'เจคเฉ, เจเฉฑเจ เจเจฒเฉเจเจเฉเจฐเจพเจจเจฟเจ เจเจฟเจคเจพเจฌ เจ-เจฎเฉเจฒ เจฆเฉเจเจฐเจพ เจญเฉเจเฉ เจเจพเจตเฉเจเฉเฅค
เจธเจฐเฉเจค: www.habr.com