Ang isang pamamaraan para sa pagsasamantala sa isang kahinaan sa tty subsystem ng Linux kernel ay naihayag

Ang mga mananaliksik mula sa Google Project Zero team ay nag-publish ng isang paraan para sa pagsasamantala sa isang kahinaan (CVE-2020-29661) sa pagpapatupad ng TIOCSPGRP ioctl handler mula sa tty subsystem ng Linux kernel, at sinuri din nang detalyado ang mga mekanismo ng proteksyon na maaaring harangan ang naturang mga kahinaan.

Ang bug na nagdudulot ng problema ay naayos sa Linux kernel noong Disyembre 3 noong nakaraang taon. Lumilitaw ang problema sa mga kernel hanggang sa bersyon 5.9.13, ngunit naayos ng karamihan sa mga distribusyon ang problema sa mga update sa mga pakete ng kernel na inaalok noong nakaraang taon (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Ang isang katulad na kahinaan (CVE-2020-29660) ay sabay-sabay na natagpuan sa pagpapatupad ng TIOCGSID ioctl na tawag, ngunit naayos na rin ito kahit saan.

Ang problema ay sanhi ng isang error kapag nagse-set ng mga lock, na humahantong sa isang kundisyon ng lahi sa drivers/tty/tty_jobctrl.c code, na ginamit upang lumikha ng use-after-free na mga kondisyon na pinagsamantalahan mula sa espasyo ng user sa pamamagitan ng mga pagmamanipula ng ioct. pagtawag sa TIOCSPGRP. Ang isang gumaganang pagsasamantala ay ipinakita para sa pagtaas ng pribilehiyo sa Debian 10 na may kernel 4.19.0-13-amd64.

Kasabay nito, ang nai-publish na artikulo ay hindi gaanong nakatuon sa pamamaraan ng paglikha ng isang gumaganang pagsasamantala, ngunit sa halip sa kung anong mga tool ang umiiral sa kernel upang maprotektahan laban sa mga naturang kahinaan. Ang konklusyon ay hindi nakakaaliw; ang mga pamamaraan tulad ng memory segmentation sa heap at kontrol ng memory access pagkatapos na ito ay mapalaya ay hindi ginagamit sa pagsasanay, dahil sila ay humantong sa pagbaba sa pagganap, at CFI (Control Flow Integrity)-based na proteksyon, na hinaharangan ang mga pagsasamantala sa mga huling yugto ng pag-atake, nangangailangan ng pagpapabuti.

Kung isasaalang-alang kung ano ang maaaring magdulot ng pagbabago sa pangmatagalang panahon, ang isa na namumukod-tangi ay ang paggamit ng mga advanced na static analyzer o ang paggamit ng memory-safe na mga wika tulad ng Rust at C dialect na may maraming anotasyon (gaya ng Checked C) upang suriin estado sa yugto ng pagbuo. mga kandado, mga bagay at mga pointer. Kasama rin sa mga paraan ng proteksyon ang pag-activate ng panic_on_oops mode, paglipat ng mga istruktura ng kernel sa read-only na mode, at paghihigpit sa pag-access sa mga system call gamit ang mga mekanismo gaya ng seccomp.

Pinagmulan: opennet.ru

Magdagdag ng komento