ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ ื“ื™ eBPF ืกืึทื‘ืกื™ืกื˜ืขื ื•ื•ืึธืก ืึทืœืึทื•ื– ืงืึธื“ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืื•ื™ืฃ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืžื“ืจื’ื”

ื ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ (CVE-2021-4204) ืื™ื– ื™ื™ื“ืขื ืึทืคื™ื™ื“ ืื™ืŸ ื“ื™ eBPF ืกืึทื‘ืกื™ืกื˜ืขื, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื•ื™ืคืŸ ื”ืึทื ื“ืœืขืจืก ื™ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืขืœ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžื™ื˜ JIT, ืึทืœืึทื•ื™ื ื’ ืึท ื”ื™ื’ืข ืึทื ืคึผืจื™ื•ื•ื™ืœืึทื“ื–ืฉื“ ื‘ืึทื ื™ืฆืขืจ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ืคึผืจื™ื•ื•ื™ืœืขื’ื™ืข ืขืกืงืึทืœื™ืจื•ื ื’ ืื•ืŸ ื•ื™ืกืคื™ืจืŸ ื–ื™ื™ืขืจ ืงืึธื“ ืื™ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืžื“ืจื’ื”. ื“ืขืจ ืคึผืจืึธื‘ืœืขื ืื™ื– ืืจื•ื™ืก ื–ื™ื ื˜ ืœื™ื ื•ืงืก ืงืขืจืŸ 5.8 ืื•ืŸ ื‘ืœื™ื™ื‘ื˜ ืึทื ืคื™ืงืกื˜ (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืžืขืœื“ื•ื ื’ 5.16). ื“ืขืจ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื•ื ื’ืขืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื ืื™ืŸ ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื˜ืจืึทืงื˜ ืื•ื™ืฃ ื“ื™ ื‘ืœืขื˜ืขืจ: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืžื•ื“ื™ืข ืึทื– ืึท ืืจื‘ืขื˜ืŸ ืขืงืกืคึผืœื•ื™ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ, ื•ื•ืึธืก ืื™ื– ืคึผืœืึทื ื ืขื“ ืฆื• ื–ื™ื™ืŸ ืืจื•ื™ืก ืื•ื™ืฃ ื™ืื ื•ืืจ 18 (ื‘ืึทื ื™ืฆืขืจ ืื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื”ืึธื‘ืŸ ื‘ืืงื•ืžืขืŸ ืึท ื•ื•ืึธืš ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ื™ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™).

ื“ื™ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ื– ื’ืขืคึฟื™ืจื˜ ื“ื•ืจืš ืคืึทืœืฉ ื•ื•ืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ ืคื•ืŸ eBPF ืžื’ื™ืœื” ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ืคึฟืึทืจ ื“ื•ืจื›ืคื™ืจื•ื ื’. ื“ื™ eBPF ืกืึทื‘ืกื™ืกื˜ืขื ื’ื™ื˜ ืึทื’ื–ื™ืœื™ืขืจื™ ืคืึทื ื’ืงืฉืึทื ื–, ื“ื™ ืจื™ื›ื˜ื™ืง ื ื•ืฆืŸ ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ื•ื•ืขืจืึทืคื™ื™ื“ ื“ื•ืจืš ืึท ืกืคึผืขืฆื™ืขืœ ื•ื•ืขืจื™ื™ืคื™ื™ืขืจ. ืขื˜ืœืขื›ืข ืคืึทื ื’ืงืฉืึทื ื– ื“ืึทืจืคืŸ ื“ื•ืจื›ื’ื™ื™ืŸ ืึท PTR_TO_MEM ื•ื•ืขืจื˜ ื•ื•ื™ ืึทืŸ ืึทืจื’ื•ืžืขื ื˜, ืื•ืŸ ืฆื• ืคืึทืจืžื™ื™ึทื“ืŸ ืžืขื’ืœืขืš ื‘ืึทืคืขืจ ืึธื•ื•ื•ืขืจืคืœืึธื•ื–, ื“ืขืจ ื•ื•ืขืจืึทืคื™ื™ืขืจ ืžื•ื–ืŸ ื•ื•ื™ืกืŸ ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ืขื ื–ื›ึผืจื•ืŸ ืคืืจื‘ื•ื ื“ืŸ ืžื™ื˜ ื“ื™ ืึทืจื’ื•ืžืขื ื˜. ืคึฟืึทืจ ื“ื™ bpf_ringbuf_submit ืื•ืŸ bpf_ringbuf_discard ืคืึทื ื’ืงืฉืึทื ื–, ื“ืึทื˜ืŸ ื•ื•ืขื’ืŸ ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ื™ ื˜ืจืึทื ืกืคืขืจื“ ื–ื›ึผืจื•ืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืจืขืคึผืึธืจื˜ืขื“ ืฆื• ื“ื™ ื•ื•ืขืจืึทืคื™ื™ืขืจ, ื•ื•ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืึธื•ื•ื•ืขืจืจื™ื™ื˜ ื–ื™ืงืึธืจืŸ ื’ืขื‘ื™ื˜ืŸ ื•ื•ื™ื™ึทื˜ืขืจ ืคื•ืŸ ื“ื™ ื‘ืึทืคืขืจ ื’ืจืขื ืขืฅ ื•ื•ืขืŸ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ืกืคึผืขืฆื™ืขืœ ื“ื™ื–ื™ื™ื ื“ eBPF ืงืึธื“.

ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืึทืŸ ื‘ืึทืคืึทืœืŸ, ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืžื•ื–ืŸ ืงืขื ืขืŸ ืฆื• ืœืึธื“ืŸ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข BPF ืคึผืจืึธื’ืจืึทื, ืื•ืŸ ืคื™ืœืข ืœืขืฆื˜ืข ืœื™ื ื•ืงืก ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื– ืคืึทืจืฉืคึผืึทืจืŸ ื“ืขื ืคื™ื™ื™ืงื™ื™ื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืึทื ืคึผืจื™ื•ื•ื™ืœื™ื“ื–ืฉื“ ืึทืงืกืขืก ืฆื• eBPF ืื™ื– ืื™ืฆื˜ ืคึผืจืึธื•ื›ื™ื‘ืึทื˜ืึทื“ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืื™ืŸ ื“ื™ ืงืขืจืŸ ื–ื™ืš, ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ ืžืขืœื“ื•ื ื’ 5.16). ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืขืงืกืคึผืœื•ื™ื˜ืึทื“ ืื™ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ืŸ Ubuntu 20.04 LTS, ืึธื‘ืขืจ ืื™ืŸ ื“ื™ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 ืื•ืŸ Fedora 33 ืขืก ืื™ื– ื‘ืœื•ื™ื– ืื•ื™ื‘ ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜. ื“ื™ kernel.unprivileged_bpf_disabled ืคึผืึทืจืึทืžืขื˜ืขืจ ืฆื• 0. ื•ื•ื™ ืึท ื•ื•ืึธืจืงืึทืจืึธื•ื ื“ ืคึฟืึทืจ ื‘ืœืึทืงื™ื ื’ ื“ื™ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™, ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื”ื™ื˜ืŸ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ BPF ืžื’ื™ืœื” ื“ื•ืจืš ืึทื ืคึผืจื™ื•ื•ื™ืœื™ื“ื–ืฉื“ ื ื™ืฆืขืจืก ืžื™ื˜ ื“ื™ ื‘ืึทืคึฟืขืœ "sysctl -w kernel.unprivileged_bpf_disabled=1".

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’