د لینکس کرنل کې د ریښې زیانمنتیا او په سیسټمډ کې د خدماتو انکار

د Qualys امنیتي څیړونکو د دوه زیانونو توضیحات په ګوته کړي چې د لینکس کرنل او د سیسټمډ سیسټم مدیر اغیزه کوي. په کرنل کې زیانمنتیا (CVE-2021-33909) یو ځایی کارونکي ته اجازه ورکوي چې د ریښو حقونو سره د خورا نیست شوي لارښودونو د مینځلو له لارې د کوډ اجرا ترلاسه کړي.

د زیان مننې خطر د دې حقیقت له امله ډیر شوی چې څیړونکي وکولی شول کاري کارونې چمتو کړي چې په ډیفالټ ترتیب کې په اوبنټو 20.04/20.10/21.04، Debian 11 او Fedora 34 کې کار کوي. د یادونې وړ ده چې نور توزیع نه دي ازمویل شوي، مګر په نظري توګه هم د ستونزې سره مخ دي او برید کیدی شي. د استحصال بشپړ کوډ ژمنه شوې چې وروسته له دې چې ستونزه هرچیرې له مینځه یوسي خپره شي ، مګر د اوس لپاره یوازې د محدود فعالیت پروټوټایپ شتون لري ، چې د سیسټم د خرابیدو لامل کیږي. ستونزه د جولای 2014 راهیسې شتون لري او د 3.16 څخه پیل شوي کرنل ریلیز اغیزه کوي. د زیان مننې حل د ټولنې سره همغږي شوی و او د جولای په 19 نیټه په دانا کې ومنل شو. اصلي توزیع لا دمخه د دوی د کرنل کڅوړو (Debian، Ubuntu، Fedora، RHEL، SUSE، Arch) ته تازه معلومات چمتو کړي دي.

زیانمنتیا د seq_file کوډ کې د عملیاتو ترسره کولو دمخه د اندازې_t څخه د int تبادلې پایله چیک کولو کې د ناکامۍ له امله رامینځته کیږي ، کوم چې د ریکارډونو له لړۍ څخه فایلونه رامینځته کوي. په چک کولو کې پاتې راتلل ممکن بفر ته د حد څخه بهر لیکونه رامینځته کړي کله چې د خورا نیست شوي لارښود جوړښت رامینځته کول ، نصب کول او حذف کول (د لارې اندازه له 1 GB څخه زیاته). د پایلې په توګه، یو برید کوونکی کولی شي د 10-بایټ تار "// حذف شوی" ترلاسه کړي چې د "-2 GB - 10 بایټس" په آفسیټ کې لیکل شوي سمدلاسه د تخصیص شوي بفر څخه دمخه ساحې ته اشاره کوي.

چمتو شوی استحصال د کار کولو لپاره 5 GB حافظې او 1 ملیون وړیا انډونو ته اړتیا لري. ګټه اخیستنه د mkdir() په زنګ وهلو سره کار کوي ترڅو د شاوخوا یو ملیون فرعي لارښودونو درجه بندي رامینځته کړي ترڅو د فایل لارې اندازه له 1 GB څخه زیاته وي. دا ډایرکټر د bind-mount له لارې په جلا کارن نوم ځای کې نصب شوی، وروسته له دې چې د rmdir() فعالیت د لرې کولو لپاره پرمخ ځي. په موازي توګه ، یو تار رامینځته شوی چې د eBPF یو کوچنی برنامه باروي ، کوم چې د eBPF سیډوکوډ چیک کولو وروسته په مرحله کې بلاک شوی ، مګر د دې JIT تالیف څخه دمخه.

په غیر مراعات شوي یوزرایډ نوم ځای کې، فایل /proc/self/mountinfo پرانستل کیږي او د بانډ ماونټ شوي لارښود اوږده لاره نوم لوستل کیږي، په پایله کې د بفر له پیل څخه مخکې ساحې ته "// حذف شوی" تار لیکل کیږي. د لاین لیکلو لپاره موقعیت غوره شوی ترڅو دا لارښوونې مخکې له مخکې ازمول شوي مګر لا تر اوسه د eBPF برنامه ترتیب شوي ندي.

بیا، د eBPF پروګرام په کچه، د بفر څخه بهر غیر کنټرول شوي لیکنه د Btf او map_push_elem جوړښتونو د مینځلو له لارې د نورو کرنل جوړښتونو ته د لوستلو او لیکلو کنټرول وړتیا ته بدلیږي. د پایلې په توګه، استحصال د کرنل په حافظه کې د modprobe_path[] بفر موقعیت ټاکي او په دې کې د "/sbin/modprobe" لاره بیا لیکي، کوم چې تاسو ته اجازه درکوي چې د روټ حقونو سره د اجرا وړ دوتنې پیل پیل کړئ که چیرې request_module() زنګ، کوم چې اجرا کیږي، د بیلګې په توګه، کله چې د netlink ساکټ رامینځته کول.

څیړونکي ډیری کاري حلونه وړاندې کوي چې یوازې د یوې ځانګړې ګټې اخیستنې لپاره اغیزمن دي، مګر پخپله ستونزه له منځه نه ځي. دا سپارښتنه کیږي چې "/proc/sys/kernel/unprivileged_userns_clone" 0 ته وټاکئ ترڅو په جلا کارن ID نوم ځای کې د ماونټینګ لارښودونو غیر فعالولو لپاره ، او "/proc/sys/kernel/unprivileged_bpf_disabled" په 1 کې د eBPF برنامو بارولو غیر فعالولو لپاره په کرنل کې تنظیم کړئ.

دا د یادونې وړ ده چې د بدیل برید تحلیل کولو په وخت کې چې د لوی ډایرکټر نصبولو لپاره د bind-mound پرځای د FUSE میکانیزم کارول شامل دي ، څیړونکي د یو بل زیان سره مخ شول (CVE-2021-33910) چې د سیسټمډ سیسټم مدیر اغیزه کوي. دا معلومه شوه چې کله د FUSE له لارې د 8 MB څخه ډیر د لارې اندازې سره لارښود نصبولو هڅه کول ، د کنټرول پیل کولو پروسه (PID1) د سټیک حافظې او کریشونو څخه تیریږي ، کوم چې سیسټم په "ویرې" حالت کې اچوي.

ستونزه دا ده چې سیسټم شوی د /proc/self/mountinfo منځپانګې تعقیب او پارس کوي، او د unit_name_path_escape() فنکشن کې هر ماونټ نقطه پروسس کوي، کوم چې د strdupa() عملیات ترسره کوي چې ډیټا په ډینامیک ډول تخصیص شوي حافظې کې ځای پرځای کوي. . څرنګه چې د سټیک اعظمي اندازه د RLIMIT_STACK له لارې محدوده ده، د ماونټ پوائنټ ته د ډیرې لویې لارې پروسس کول د PID1 پروسې د خرابیدو او سیسټم د بندیدو لامل کیږي. د برید لپاره ، تاسو کولی شئ د ماونټ پوائنټ په توګه د خورا نیست شوي لارښود کارولو سره په ترکیب کې ترټولو ساده FUSE ماډل وکاروئ ، د لارې اندازه چې له 8 MB څخه زیاته وي.

ستونزه د سیسټمډ 220 (اپریل 2015) راهیسې څرګندیږي ، دمخه د سیسټم اصلي ذخیره کې تنظیم شوې او په توزیع کې ټاکل شوې (Debian، Ubuntu، Fedora، RHEL، SUSE، Arch). د پام وړ، په سیسټمډ ریلیز 248 کې استحصال د سیسټمډ کوډ کې د بګ له امله کار نه کوي چې د /proc/self/mountinfo پروسس ناکامیدو لامل کیږي. دا هم په زړه پورې ده چې په 2018 کې ورته وضعیت رامینځته شو او کله چې د لینکس کرنل کې د CVE-2018-14634 زیان مننې لپاره د استثمار لیکلو هڅه کوله، د Qualys څیړونکي په سیسټمډ کې د دریو جدي زیانونو سره مخ شول.

سرچینه: opennet.ru

Add a comment