Dirty Pipe, isa sa mga pinakamalubhang kahinaan sa mga taon sa Linux

Kamakailan ay pumutok ang balita online tungkol sa pagkakatuklas ng isang bagong kahinaan sa Linux na ikinategorya bilang "High Severity" at nakakaapekto sa lahat ng kernel mula bersyon 5.8 pataas, pati na rin sa mga derivatives, kabilang ang Android.

Kilala bilang Dirty Pipe, pinapayagan nito ang pag-overwriting ng data sa mga read-only na file at maaaring humantong sa pagtaas ng pribilehiyo sa pamamagitan ng pag-inject ng code sa mga prosesong "root".

Bagama't na-patch na ito sa pangunahing linya ng Linux kernel, ang bug ay maaaring gawing armas sa anyo ng isang pagsasamantala sa pagtaas ng pribilehiyo sa lahat ng mga device na nagpapatakbo ng Linux kernel na bersyon 5.8 o mas bago.

Nangangahulugan din ito na ang isang grupo ng mga bagong inilabas na Android smartphone, tulad ng Samsung Galaxy S22 at Google Pixel 6, ay mahina din, hanggang sa matanggap ng bawat device ang naaangkop na kernel patch mula sa kani-kanilang OEM.

Tungkol sa Dirty Pipe

Ang kahinaan ay isiniwalat ng mananaliksik sa seguridad na si Max Kellerman at nakalista bilang (CVE-2022-0847); inabot ng ilang buwan bago nakahanap ng isang proof-of-concept exploit.

Ang kahinaan ay nagpapahintulot sa isang walang pribilehiyong user na magpasok at mag-overwrite ng data sa mga read-only na file, kabilang ang mga proseso ng SUID na tumatakbo bilang root. Ang kolokyal na palayaw ay tila isang paglalaro sa kilalang-kilalang Dirty Cow bug at isang mekanismo ng Linux na tinatawag na pipelining para sa pagpasa ng mga mensahe sa pagitan ng mga proseso, dahil ang huli ay ginagamit sa panahon ng exploit routine.

Nagsimula ang lahat isang taon na ang nakalipas sa isang tiket ng suporta na nauugnay sa mga sirang file. Nagreklamo ang isang customer na hindi ma-unpack ang mga na-download na log ng access. At sa katunayan, may sira na log file sa isa sa mga log server; maaari itong hindi ma-compress, ngunit nag-ulat ang gzip ng isang error sa CRC. Hindi ko maipaliwanag kung bakit ito sira, ngunit ipinapalagay ko na ang proseso ng hating gabi-gabi ay nag-crash at gumawa ng isang sira na file. Ako ay manu-manong itinama ang CRC ng file, isinara ang tiket at sa lalong madaling panahon nakalimutan ang tungkol sa problema.

Pagkatapos ng ilang buwan ng pagsusuri, sa wakas ay natuklasan ng mananaliksik na ang mga sirang client file ay resulta ng isang bug sa Linux kernel. Nakahanap siya ng paraan upang gamitin ang Dirty Pipe upang payagan ang sinumang may account, kabilang ang mga "nobody" account na hindi gaanong kilala, na magdagdag ng SSH key sa account ng root user.

Upang ma-trigger ang kahinaan, ibinahagi ni Kellerman ang kanyang patunay ng konsepto, dapat ay may mga pahintulot na basahin ang umaatake. Gayundin, ang pag-scroll ay hindi dapat nasa isang hangganan ng pahina, ang pagsusulat ay hindi maaaring tumawid sa isang hangganan ng pahina, at ang file ay hindi maaaring baguhin ang laki.

Upang samantalahin ang kahinaan na ito, dapat kang: lumikha ng pipe, punan ang pipe ng arbitrary na data (sa pamamagitan ng pagtatakda ng PIPE_BUF_FLAG_CAN_MERGE na flag sa lahat ng mga entry sa ring), alisan ng laman ang pipe (iiwan ang flag na nakatakda sa lahat ng pagkakataon ng pipe_buffer structure sa istraktura ng pipe_inode_info ring), pagsamahin ang data mula sa target na file (binuksan gamit ang O_RDONLY) sa pipe bago ang target na offset, at isulat ang arbitrary na data sa pipe.

Naaapektuhan din ng Dirty Pipe ang anumang bersyon ng Android batay sa isa sa mga vulnerable na bersyon ng Linux kernel. Dahil napakapira-piraso ng Android, hindi masusubaybayan nang pantay-pantay ang mga apektadong modelo ng device.

Ayon kay Kellermann, pinagsama ng Google ang pag-aayos ng bug nito sa Android kernel noong nakaraang buwan, matapos itong maayos sa paglabas ng mga bersyon ng Linux kernel na 5.16.11, 5.15.25, at 5.10.102.

Dahil sa sinabi nito, malamang na kailangan nating maghintay ng kaunti bago magsimula ang mga OEM na ilunsad ang mga update sa Android na naglalaman ng pag-aayos. Ang Pixel 6 ng Google, halimbawa, ay mahina pa rin, ngunit maaaring pagaanin ng mga advanced na user ang kapintasan sa pamamagitan ng pag-install ng custom na patched aftermarket kernel bilang alternatibong opsyon.

Naglabas ang mga developer ng Linux kernel ng mga pag-aayos (5.16.11, 5.15.25, 5.10.102) noong Pebrero 23, habang inayos naman ng Google ang Android kernel noong Pebrero 24. Inihambing nina Kellermann at iba pang mga eksperto ang kahinaan sa CVE-2016-5195 “Dirty Cow” at sinabing mas madali pa itong gamitin.

Panghuli, kung interesado kang matuto nang higit pa, makikita mo ang mga detalye sa sumusunod na link.


Idagdag bilang ginustong mapagkukunan sa Google