آسیبپذیری 15 ساله در لینوکس به نام Netfilter
Andy Nguyen، مهندس امنیت اطلاعات، اخیراً یک آسیب پذیری 15 ساله در لینوکس به نام Netfilter را کشف کرده است که به هر مهاجمی اجازه میدهد تا تمام اقدامات امنیتی مدرن را دور بزند. کارشناسان امنیت سایبری این آسیب پذیری 15 ساله لینوکس را با شناسه آسیبپذیری "CVE-2021-22555" ردیابی کرده اند و جدا از دور زدن فیلترهای امنیتی، ادعا کردهاند که با بهره برداری این نقص، عوامل تهدید همچنین می توانند به اجرای کد دست پیدا کنند. آسیب پذیری Netfilter به منظور ترکیب شدن با توابع محلی، فرایندها باید از سطح دسترسی کاربر به هسته و همچنین از 32 بیت به 64 بیت تبدیل شوند، وقتی در مد IPT_SO_SET_REPLACE یا IP6T_SO_SET_REPLACE فراخوانی می شود. در اینجا، Andy تأیید کرد که نقص امنیتی در "()xt_compat_target_from_user" است که در آن با یک offset target->targetsize “memset()” فراخوانی شده است. با نام هایی مانند TCPMSS ، TTL یا NFQUEUE، کاربر می تواند اهداف مختلفی را با اندازه های مختلف ساختار انتخاب کند. اما، در اینجا کاربر قادر به کنترل اندازه هدف نیست. زنجیره بهره برداری با بایت 0x4C ابتدایی اهداف معمول عبارتند از: - • شمارنده مرجع • اشاره گر لیست آزاد • اشاره گر در یک ساختار Andy، کارشناس امنیت اظهار داشت که در حالی که مشغول کار بر روی برخی از اشیاء قربانی است، قادر نخواهد بود هیچ شیء قربانی را در اطراف ساختار xt_table_info در هسته 5.4 اختصاص دهد. اما طبق گفته های Jann Horn برای اجرای تحلیل دقیق درخصوص سگمنتهای جداگانه قبل از 5.9 استفاده شده است. به همین دلیل است که در زنجیره بهره برداری، در ابتدا توسط Andy استفاده شده، همچنین باید از "GFP_KERNEL_ACCOUNT" استفاده کند. در اینجا، کارشناس ادعا کرده است که ()syscall msgsnd قبلاً برای چندین بهره برداری عمومی مورد استفاده قرار گرفته است، زیرا برای ساختار هرم ()syscall msgsnd یک اصل شناخته شده است، و نه تنها حتی از "GFP_KERNEL_ACCOUNT" نیز استفاده می کند. جدا از این، Andy همچنین اشاره كرد كه به موازات تحقیقات خود در مارس 2021، یكی از محققان امنیتی، Alexander Popov همچنین ساختاری مشابه در چهار بایت از آن ساختار را که آسیب پذیری را با شناسه "CVE-2021-26708" در هسته لینوكس مورد بهره برداری قرار داده، بررسی کردند. با استفاده از ()msgget یک مهاجم می تواند به راحتی صف های پیام زیادی را شروع کند، و بعد یک مهاجم می تواند یک پیام به اندازه کل صف پیام ایجاد کند و آن ها را با استفاده از ()msgget برای هر یک از صف های پیام که به عنوان پیام اصلی شناخته می شود، ارسال کند. اکنون یک مهاجم می تواند هدر ساختار msg_msg را دنبال کند و پیام های زیادی را با کمک سوکت های یونیکس ارسال کند. یک مهاجم پس از دانستن آدرس پیام اصلی، به راحتی می تواند ساختار جعلی msg_msg را دوباره طراحی کند. در حالی که با خواندن بیش از بایت های DATALEN_MSG، محتوای پیام اصلی می تواند نشت کند، و در اینجا، از پیام اصلی، اشاره گر mlist.next پیام ثانویه را افشا می کند. این محقق امنیتی طی بررسیهایی که انجام داده است نشان میدهد که نهتنها از این طریق میتوان فیلترهای امنیتی مدرن را دور زد، همچنین میتوان کد را در سطح کرنل نیز اجرا کرد. تهیه و تدوین: تینا احمدی