เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™ VFS เบ‚เบญเบ‡ Linux kernel เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰.

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ (CVE-2022-0185) เป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ Filesystem Context API เบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบ Linux kernel, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบดเบ”เบ—เบดเบ‚เบญเบ‡เบฎเบฒเบเปƒเบ™เบฅเบฐเบšเบปเบš. เบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบชเบฒเบ—เบดเบ”เบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เป€เบ›เบฑเบ™เบฎเบฒเบเปƒเบ™ Ubuntu 20.04 เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เปเบกเปˆเบ™เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเป€เบœเบตเบเปเบœเปˆเปƒเบ™ GitHub เบžเบฒเบเปƒเบ™เบซเบ™เบถเปˆเบ‡เบญเบฒเบ—เบดเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เปเบˆเบเบขเบฒเบเบญเบญเบเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเปเบเป‰เป„เบ‚เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ.

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™ legacy_parse_param() เปƒเบ™ VFS เปเบฅเบฐเป€เบเบตเบ”เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบฐเบซเบ™เบฒเบ”เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบš Filesystem Context API. เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบกเบตเบ‚เบฐเปœเบฒเบ”เปƒเบซเบเปˆเป€เบเบตเบ™เป„เบ›เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบฅเบปเป‰เบ™เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ„เบณเบ™เบงเบ™เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เป„เบ”เป‰ - เบฅเบฐเบซเบฑเบ”เบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฅเบปเป‰เบ™เบšเบฑเบšเป€เบŸเบต "เบ–เป‰เบฒ (len> PAGE_SIZE - 2 - เบ‚เบฐเปœเบฒเบ”)", เป€เบŠเบดเปˆเบ‡เบšเปเปˆ เป€เบฎเบฑเบ”เบงเบฝเบเบ–เป‰เบฒเบ„เปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปเบกเปˆเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒ 4094. เบชเปเบฒเบฅเบฑเบš integer overflow เบœเปˆเบฒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ•เปˆเปเบฒ (integer underflow, เป€เบกเบทเปˆเบญเป‚เบเบ™ 4096 - 2 - 4095 เป„เบ› unsigned int, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™ 2147483648).

เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰, เป€เบกเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฎเบนเบšเบžเบฒเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบญเบญเบเปเบšเบšเบžเบดเป€เบชเบ”, เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบฅเบปเป‰เบ™เบšเบฑเบšเป€เบŸเบตเปเบฅเบฐเบ‚เบฝเบ™เบ—เบฑเบšเบ‚เปเป‰เบกเบนเบ™ kernel เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™. เป€เบžเบทเปˆเบญเบ‚เบนเบ”เบฎเบตเบ”เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบกเบตเบชเบดเบ” CAP_SYS_ADMIN, i.e. เบญเบณเบ™เบฒเบ”เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบดเบ”เบ—เบดเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบงเบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš namespaces เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเป€เบ›เบตเบ”เปƒเบŠเป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, namespaces เบœเบนเป‰เปƒเบŠเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ Ubuntu เปเบฅเบฐ Fedora, เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™ Debian เปเบฅเบฐ RHEL (เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเป€เบงเบ—เบตเบเบฒเบ™เปเบเบเบ•เบปเบงเบšเบฑเบ™เบˆเบธเบ–เบทเบเปƒเบŠเป‰).

เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™เบ•เบฑเป‰เบ‡เปเบ•เปˆ Linux kernel 5.1 เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบกเบทเป‰เบงเบฒเบ™เบ™เบตเป‰ 5.16.2, 5.15.16, 5.10.93, 5.4.173. เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เปเบžเบฑเบเป€เบเบ”เบ—เบตเปˆเปเบเป‰เป„เบ‚เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบฅเป‰เบงเบชเปเบฒเบฅเบฑเบš RHEL, Debian, Fedora, เปเบฅเบฐ Ubuntu. เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบกเบตเบขเบนเปˆเปƒเบ™ Arch Linux, Gentoo, SUSE เปเบฅเบฐ openSUSE. เป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบšเปเปˆเปƒเบŠเป‰เบเบฒเบ™เปเบเบเบ•เบปเบงเบšเบฑเบ™เบˆเบธ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ sysctl "user.max_user_namespaces" เป€เบ›เบฑเบ™ 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

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