د لینوکس کرنل کې زیانمنتیا چې یوازې د لوستلو فایلونو ته اجازه ورکوي فاسد شي

په لینکس کرنل (CVE-2022-0847) کې یو زیانمنونکی پیژندل شوی چې د پاڼې کیچ مینځپانګې ته اجازه ورکوي چې د هر ډول فایلونو لپاره د بیا لیکلو اجازه ورکړي، په شمول هغه چې یوازې د لوستلو حالت کې دي، د O_RDONLY بیرغ سره پرانیستل شوي، یا د فایل سیسټمونو کې موقعیت لري. یوازې د لوستلو حالت کې نصب شوی. په عملي شرایطو کې، زیانمنونکي په خپل سري پروسو کې د کوډ داخلولو لپاره کارول کیدی شي یا په خلاص فایلونو کې فاسد ډاټا. د مثال په توګه، تاسو کولی شئ د sshd پروسې لپاره د مجاز_کیز فایل منځپانګې بدل کړئ. د استثمار یو پروټوټایپ د ازموینې لپاره شتون لري.

دې ستونزې ته د کوډنیم نوم د Dirty پایپ نوم ورکړل شوی، د جدي زیان سره ورته دی چې په 2016 کې پیژندل شوی Dirty COW. د یادولو وړ ده چې د خطر د کچې له مخې، ډرټي پایپ د Dirty COW په کچه دی، مګر کار کول خورا اسانه دي. زیانمنتیا په شبکه کې د فایلونو د دوراني فساد په اړه د شکایتونو تحلیل په جریان کې پیژندل شوي چې په سیسټم کې د لاګ سرور څخه کمپریس شوي آرشیف ډاونلوډ کوي (په بار شوي سیسټم کې په 37 میاشتو کې 3 فسادونه) ، کوم چې چمتووالی د سپلایس () عملیات کارولی و. او بې نومه پایپونه.

زیان منونکي ښکاري د لینکس کرنل 5.8 سره پیل کیږي ، د اګست په 2020 کې خپور شوی ، یعنی په ډیبیان 11 کې شتون لري ، مګر په اوبنټو 20.04 LTS کې د بیس کرنل اغیزه نه کوي. RHEL 8.x او OpenSUSE/SUSE 15 دانی په پیل کې د زړو څانګو پراساس دي، مګر دا ممکنه ده چې بدلون د ستونزې لامل په دوی کې بیرته پورټ شوی وي (تر اوسه دقیق معلومات شتون نلري). تاسو کولی شئ پدې پا pagesو کې توزیع کې د کڅوړې تازه معلوماتو خپرونه تعقیب کړئ: Debian ، SUSE ، Ubuntu ، RHEL ، Fedora ، Gentoo ، Arch Linux. په 5.16.11، 5.15.25 او 5.10.102 کې د زیان مننې لپاره یو حل وړاندیز شوی. فکس د انډرایډ پلیټ فارم کې کارول شوي کرنل کې هم شامل دی.

زیانمنتیا د کاپي_page_to_iter_pipe() او push_pipe() د فنکشنونو په کوډ کې د "بف-> بیرغ" ارزښت د پیل کولو نشتوالي له امله رامینځته کیږي ، سره له دې چې د جوړښت تخصیص کولو پرمهال او د ځانګړي تخصیص پرمهال حافظه پاکه شوې نه وي. بې نومه پایپونه، د بل عملیات څخه ارزښت. د دې خصوصیت په کارولو سره، یو غیرمستقیم ځایی کارونکی کولی شي په بیرغ کې د PIPE_BUF_FLAG_CAN_MERGE ارزښت بڼه ترلاسه کړي، کوم چې تاسو ته اجازه درکوي چې په ځانګړي ډول چمتو شوي بې نومه پایپ ته د نوي ډیټا لیکلو له لارې د پاڼې کیچ کې د ډیټا بیا لیکل تنظیم کړئ.

د برید لپاره، د هدف فایل باید د لوستلو وړ وي، او څنګه چې پایپ ته د لیکلو په وخت کې د لاسرسي حقونه نه چک کیږي، د پاڼې کیچ کې ځای پرځای کول د هغو فایلونو لپاره هم کیدی شي چې یوازې د لوستلو لپاره نصب شوي برخې کې موقعیت لري (د مثال په توګه، د فایلونو لپاره c CD- رام). د پاڼې کیچ کې د معلوماتو ځای په ځای کولو وروسته، کله چې د فایل څخه ډاټا لوستل کیږي، پروسه به ریښتینې ډاټا نه وي، مګر بدل شوي ډاټا ترلاسه کړي.

عملیات د بې نومه چینل رامینځته کولو او د خپل سري معلوماتو سره ډکولو لپاره راځي ترڅو ډاډ ترلاسه شي چې د PIPE_BUF_FLAG_CAN_MERGE بیرغ د دې سره تړلي ټولو حلقوي جوړښتونو کې تنظیم شوی. بیا، ډاټا د چینل څخه لوستل کیږي، مګر بیرغ د پایپ_بفر جوړښت په ټولو مواردو کې د پایپ_انوډ_ انفو حلقوي جوړښتونو کې ساتل کیږي. splice() ته زنګ بیا د هدف فایل څخه په نامعلوم پایپ کې د معلوماتو لوستلو لپاره رامینځته کیږي ، د مطلوب آفسیټ څخه پیل کیږي. کله چې دې بې نومه پایپ ته ډاټا لیکئ، د PIPE_BUF_FLAG_CAN_MERGE بیرغ له امله، د پاڼې کیچ کې ډاټا به د پایپ_بفر جوړښت نوي مثال رامینځته کولو پرځای له سره لیکل کیږي.

سرچینه: opennet.ru

Add a comment