เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบเปˆเบญเบ eBPF เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปƒเบ™เบฅเบฐเบ”เบฑเบš Linux kernel

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ (CVE-2021-4204) เป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเบเปˆเบญเบ eBPF, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบžเบฒเบเปƒเบ™ Linux kernel เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบžเบดเป€เบชเบ”เบ—เบตเปˆเบกเบต JIT, เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบดเบ”เบ—เบดเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเบ—เบตเปˆ. เบฅเบฐเบ”เบฑเบš Linux kernel. เบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™เบ•เบฑเป‰เบ‡เปเบ•เปˆ Linux kernel 5.8 เปเบฅเบฐเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚ (เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ›เปˆเบญเบ 5.16). เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ•เบดเบ”เบ•เบฒเบกเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”เบงเปˆเบฒเบเบฒเบ™เบ‚เบนเบ”เบฎเบตเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เป€เบŠเบดเปˆเบ‡เบกเบตเปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบœเบตเบเปเบœเปˆเปƒเบ™เบงเบฑเบ™เบ—เบต 18 เบกเบฑเบ‡เบเบญเบ™ (เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบฎเบฑเบšเป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡เบญเบฒเบ—เบดเบ”เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบˆเบธเบ”เบญเปˆเบญเบ™).

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปเบกเปˆเบ™เป€เบเบตเบ”เบกเบฒเบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เป‚เบ›เบฅเปเบเบฅเบก eBPF เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”. เบฅเบฐเบšเบปเบšเบเปˆเบญเบ eBPF เบชเบฐเบซเบ™เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบŠเปˆเบงเบ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ—เบตเปˆเบ–เบทเบเบเบงเบ”เบชเบญเบšเป‚เบ”เบเบœเบนเป‰เบเบงเบ”เบชเบญเบšเบžเบดเป€เบชเบ”. เบšเบฒเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ„เปˆเบฒ PTR_TO_MEM เป€เบ›เบฑเบ™ argument, เปเบฅเบฐเป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™ overflows buffer เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, verifier เบ•เป‰เบญเบ‡เบฎเบนเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš argument. เบชเปเบฒเบฅเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™ bpf_ringbuf_submit เปเบฅเบฐ bpf_ringbuf_discard, เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบ–เบทเบเป‚เบญเบ™เบšเปเปˆเป„เบ”เป‰เบฅเบฒเบเบ‡เบฒเบ™เปƒเบซเป‰เบœเบนเป‰เบเบงเบ”เบชเบญเบš, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบ—เบฑเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ” buffer เป€เบกเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ” eBPF เบ—เบตเปˆเบ–เบทเบเบญเบญเบเปเบšเบšเบžเบดเป€เบชเบ”.

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบˆเบกเบ•เบต, เบœเบนเป‰เปƒเบŠเป‰เบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ”เป‚เบ›เปเบเบก BPF เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเบเบฒเบ™เปเบˆเบเบขเบฒเบ Linux เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ•เบฑเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ™เบตเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ eBPF เบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ–เบทเบเบซเป‰เบฒเบกเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ kernel เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เปˆเบญเบ 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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™