เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบเปˆเบญเบ Linux kernel เบ‚เบญเบ‡ USB Gadget, เบญเบฒเบ”เบˆเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”

USB Gadget, เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ‚เบญเบ‡ Linux kernel เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบฅเบนเบเบ„เป‰เบฒ USB เปเบฅเบฐเบŠเบญเบšเปเบงเบˆเปเบฒเบฅเบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™ USB, เบกเบตเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡ (CVE-2021-39685) เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ kernel, crash, เบซเบผเบทเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เบฅเบฐเบซเบฑเบ” arbitrary เบขเบนเปˆ kernels เบฅเบฐเบ”เบฑเบš. เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบซเป‰เบญเบ‡เบฎเบฝเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ USB Gadget API, เป€เบŠเบฑเปˆเบ™: rndis, hid, uac1, uac1_legacy เปเบฅเบฐ uac2.

เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ Linux kernel 5.15.8, 5.10.85, 5.4.165, 4.19.221, 4.14.258, 4.9.293 เปเบฅเบฐ 4.4.295. เบšเบฑเบ™เบซเบฒเบเบฑเบ‡เบšเปเปˆเบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch). เบ•เบปเป‰เบ™เปเบšเบšเบเบฒเบ™เบ‚เบนเบ”เบฎเบตเบ”เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญ.

เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เป€เบเบตเบ”เบกเบฒเบˆเบฒเบ buffer overflow เปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ gadget drivers rndis, hid, uac1, uac1_legacy เปเบฅเบฐ uac2. เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ‚เบนเบ”เบฎเบตเบ”เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ, เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบชเบดเบ”เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบซเบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เปเบเปˆเบ™เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบžเบดเป€เบชเบ”เบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก wLength เบ—เบตเปˆเป€เบเบตเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ static buffer, เป€เบŠเบดเปˆเบ‡ 4096 เป„เบšเบ•เปŒเบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบชเบฐเป€เบซเบกเบต (USB_COMP_EP0_BUFSIZ). เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป‚เบˆเบกเบ•เบต, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบดเบ”เบ—เบดเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบซเบผเบทเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เป€เบ–เบดเบ‡ 65 KB เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ kernel.

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

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