"āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻŽāĻ¨āĻŋāĻŸāĻ°āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ BPF" āĻŦā§āĻ• āĻ•āĻ°ā§āĻ¨

"āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻŽāĻ¨āĻŋāĻŸāĻ°āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ BPF" āĻŦā§āĻ• āĻ•āĻ°ā§āĻ¨āĻšā§āĻ¯āĻžāĻ˛ā§‹, āĻ–āĻŦāĻ°ā§‡āĻ° āĻŦāĻžāĻ¸āĻŋāĻ¨ā§āĻĻāĻžāĻ°āĻž! BPF āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ…āĻ¨ā§āĻ¯āĻ¤āĻŽ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĨ¤ āĻāĻŸāĻŋāĻ° āĻ¸āĻ āĻŋāĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ‡āĻžā§āĻœāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻĻā§‡āĻ° āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻœāĻŸāĻŋāĻ˛ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻļāĻŋāĻ–āĻŦā§‡āĻ¨ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¯āĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ†āĻšāĻ°āĻŖ āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°ā§‡, āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§‡ āĻ•ā§‹āĻĄ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§āĨ¤ David Calavera āĻāĻŦāĻ‚ Lorenzo Fontana āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ BPF āĻāĻ° āĻļāĻ•ā§āĻ¤āĻŋ āĻ†āĻ¨āĻ˛āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻŦā§‡āĨ¤ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨, āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚, āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻœā§āĻžāĻžāĻ¨ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨. - Linux āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ†āĻšāĻ°āĻŖ āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ BPF āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤ - āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻŦāĻž āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ°āĻŋāĻŦā§āĻŸ āĻ¨āĻž āĻ•āĻ°ā§‡āĻ‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§‡ āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ•ā§‹āĻĄ āĻ‡āĻ¨āĻœā§‡āĻ•ā§āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤ — āĻ¸āĻŋ, āĻ—ā§‹ āĻŦāĻž āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ•ā§‹āĻĄ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤ - BPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ˛āĻžāĻ‡āĻĢāĻ¸āĻžāĻ‡āĻ•ā§‡āĻ˛ā§‡āĻ° āĻŽāĻžāĻ˛āĻŋāĻ• āĻšāĻ¯āĻŧā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¨āĻŋāĻ¨āĨ¤

āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž, āĻāĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ•āĻŽāĻĒ

BPF āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§€āĻ˛āĻ¤āĻž, āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž, āĻŦāĻž āĻ—āĻ¤āĻŋ āĻŦāĻ˛āĻŋāĻĻāĻžāĻ¨ āĻ›āĻžāĻĄāĻŧāĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ•āĻžāĻ°āĻŖā§‡, āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻ°āĻž āĻ­ā§‡āĻŦā§‡āĻ›āĻŋāĻ˛ āĻ¯ā§‡ BPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ Seccomp āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡ Seccomp-āĻ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨āĻ¤āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻāĻ° āĻŦāĻšā§āĻŽā§āĻ–ā§€āĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž āĻšāĻŦā§‡, āĻ¯āĻž Seccomp BPF āĻ¨āĻžāĻŽā§‡āĻ“ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĨ¤ āĻāĻ‡ āĻ…āĻ§ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ†āĻŽāĻ°āĻž Seccomp āĻ•āĻŋ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻž āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻŦāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻĒāĻ¨āĻŋ āĻļāĻŋāĻ–āĻŦā§‡āĻ¨ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ BPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Seccomp āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻž āĻŽāĻĄāĻŋāĻ‰āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻŦāĻŋāĻ˛ā§āĻŸ-āĻ‡āĻ¨ āĻŦāĻŋāĻĒāĻŋāĻāĻĢ āĻšā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻŦāĨ¤

āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻ°āĻŋāĻŸāĻŋ āĻŽāĻĄāĻŋāĻ‰āĻ˛ (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 --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 āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡ āĻĨā§‡āĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ†āĻ‡āĻĄāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻŦ root to nobody, āĻ¯āĻĨāĻž cap_setuid āĻāĻŦāĻ‚ cap_setgidāĨ¤
  • —keep=1 — āĻ°ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤
  • —āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€=“āĻ•ā§‹āĻ¨āĻ“ āĻ¨āĻ¯āĻŧ” — āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻļā§‡āĻˇ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ•ā§‡āĻ‰ āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤
  • —addamb=cap_net_bind_service — āĻ°ā§āĻŸ āĻŽā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ•ā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻ‚ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤
  • - -c "./capabilities" - āĻļā§āĻ§ā§ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻšāĻžāĻ˛āĻžāĻ¨āĨ¤

āĻ˛āĻŋāĻ‚āĻ•āĻĄ āĻ•ā§āĻ¯āĻžāĻĒāĻžāĻŦāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¯āĻž āĻšāĻžāĻ‡āĻ˛ā§āĻĄ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ‰āĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ°āĻ¸ā§‚āĻ¤ā§āĻ°ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻ–āĻ¨ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ execve() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸ āĻ•āĻ°ā§‡āĨ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯ā§‡ āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĻ—āĻ¤ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ‰āĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ¸ā§‚āĻ¤ā§āĻ°ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ­āĻžāĻŦāĻ›ā§‡āĻ¨ --caps āĻŦāĻŋāĻ•āĻ˛ā§āĻĒā§‡ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ +eip āĻāĻ° āĻ…āĻ°ā§āĻĨ āĻ•ā§€āĨ¤ āĻāĻ‡ āĻĒāĻ¤āĻžāĻ•āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ:

- āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ• (p);

- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ (āĻ‡);

- āĻļāĻŋāĻļā§ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ‰āĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ°āĻ¸ā§‚āĻ¤ā§āĻ°ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (i)āĨ¤

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻ°āĻž cap_net_bind_service āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ‡ āĻĢā§āĻ˛ā§āĻ¯āĻžāĻ— āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻ°āĻž āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡ āĻļā§‡āĻ˛ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŦāĨ¤ āĻāĻŸāĻŋ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻšāĻžāĻ˛āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻŸāĻŋāĻ•ā§‡ i āĻĒāĻ¤āĻžāĻ•āĻž āĻĻāĻŋāĻ¯āĻŧā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ…āĻŦāĻļā§‡āĻˇā§‡, āĻ†āĻŽāĻ°āĻž p āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻŸāĻŋ āĻ¸āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ (āĻ†āĻŽāĻ°āĻž UID āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻāĻŸāĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ)āĨ¤ āĻāĻŸāĻž 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

āĻāĻ‡ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ āĻ†āĻŽāĻ°āĻž capsh āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ 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, āĻāĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ§ā§āĻ°ā§āĻŦāĻ• āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ Include/uapi/linux/ability.h āĻ†āĻ‡āĻĄā§‡āĻ¨ā§āĻŸāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° 10 āĻ¸āĻš:

/* 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 āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ 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 āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻ–āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ āĻ¤āĻ–āĻ¨ āĻŦāĻžāĻ§āĻž āĻĻāĻŋāĻ¤ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ°ā§‡āĻ¸āĻžāĻ° āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻŸāĻŋ -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 āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŦāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻ–āĻ¨ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ• 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(struct seccomp_data, arch))) - āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ BPF_LD āĻĨā§‡āĻ•ā§‡ BPF_W āĻļāĻŦā§āĻĻā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡ āĻ˛ā§‹āĻĄ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻœāĻŽāĻž āĻšāĻ¯āĻŧ, āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĄā§‡āĻŸāĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ…āĻĢāĻ¸ā§‡āĻŸā§‡ BPF_ABS āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤

- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, arch, 0, 3) - BPF_JEQ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡ āĻ¯ā§‡ BPF_K āĻ¸āĻžā§āĻšāĻ¯āĻŧāĻ•āĻžāĻ°ā§€ āĻ§ā§āĻ°ā§āĻŦāĻ•ā§‡āĻ° āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ° āĻŽāĻžāĻ¨ āĻ–āĻŋāĻ˛āĻžāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻžāĻ¨ āĻ•āĻŋāĻ¨āĻžāĨ¤ āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ‡ āĻšāĻ¯āĻŧ, āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļā§‡ āĻ…āĻĢāĻ¸ā§‡āĻŸ 0 āĻ āĻ˛āĻžāĻĢ āĻĻā§‡āĻ¯āĻŧ, āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ–āĻŋāĻ˛āĻžāĻ¨ āĻŽā§‡āĻ˛ā§‡ āĻ¨āĻž āĻŦāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ›ā§āĻāĻĄāĻŧāĻ¤ā§‡ (āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡) āĻ…āĻĢāĻ¸ā§‡āĻŸ 3 āĻ āĻ˛āĻžāĻĢ āĻĻā§‡āĻ¯āĻŧāĨ¤

- 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 āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ§āĻžāĻ°āĻŖāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŽā§‚āĻ°ā§āĻ¤ āĻ¸ā§āĻ¤āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ“āĻ¯āĻŧāĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻāĻĄāĻŧāĻžāĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻ¤āĻŸāĻŋ āĻšā§āĻ• BPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§āĻ•ā§āĻ¤, āĻāĻŦāĻ‚ SELinux āĻšāĻ˛ āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ LSM āĻ¯ā§‡āĻŸāĻŋ āĻ¤āĻžāĻĻā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻĢāĻžāĻāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤/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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨