برنامه نویسی

پشتی که نمی دانستید وجود داشته است

مقدمه

در سال 2014 ، من در حال آزمایش با یک ماشین مجازی آسیب پذیر از Vulnhub بودم که به طور تصادفی راهی را برای ایجاد خاموش کردن سیستم فقط با تغییر یک قسمت فرم کشف کردم. آنچه من به آن افتادم یکی از خطرناک ترین آسیب پذیری های امنیت سایبری بود: تزریق فرمانبشر

این آسیب پذیری عناوین را در طول بحران اشکال Shellshock ایجاد کرده و میلیون ها سیستم را با سوءاستفاده از نحوه پردازش سیستم های مبتنی بر UNIX متغیرهای محیط ، در معرض دید قرار می دهد. با این حال ، حتی امروزه ، بسیاری از توسعه دهندگان ناآگاهانه درها را در معرض تهدیدات مشابه قرار می دهند.

چرا اکنون این مهم است: از آنجا که شرکت ها شتاب Devops و CI/CD را تسریع می کنند ، امنیت اغلب عقب مانده است. درک تزریق فرمان فقط مرتبط نیست – ضروری است. برای توسعه دهندگان ، سرپرستان سیستم و هکرهای اخلاقی به طور یکسان ، شناخت و کاهش این آسیب پذیری می تواند به معنای تفاوت بین یک سیستم ایمن و یک نقض تمام عیار باشد.

“در طی یک اتاق Tryhackme که روی حملات وب متمرکز شده است ، من شخصاً مشاهده کردم که چگونه یک فرمان پوسته ضعیف نوشته شده منجر به سازش کامل شد. این روش را تغییر داد که من از طریق ضد عفونی کننده ورودی برای همیشه مشاهده کردم.”

تزریق فرمان چیست؟

تزریق فرماندهی نوعی آسیب پذیری است که مهاجمان دستورات دلخواه را بر روی یک سیستم عامل میزبان از طریق یک برنامه آسیب پذیر اجرا می کنند. این اتفاق می افتد وقتی سیستم ورودی کاربر بدون سرپرستی را به یک دستور پوسته منتقل کند و به مهاجمان کنترل کامل می دهد.

چگونه تزریق فرمان کار می کند

چگونه تزریق فرمان کار می کند

هنگامی که برنامه ها ورودی های کاربر را در دستورات سیستم بدون اعتبار سنجی کافی یا ضد عفونی قرار می دهند ، در معرض تزریق فرمان قرار می گیرند. مهاجمان با افزودن دستورات مخرب به ورودی های قانونی ، از این امر سوءاستفاده می کنند ، که سیستم سپس با امتیازات برنامه اجرا می کند.

سناریوی مثال:

یک برنامه وب را در نظر بگیرید که به کاربران امکان می دهد یک آدرس IP را برای بررسی اتصال شبکه پینگ کنند. برنامه ممکن است یک دستور سیستم مانند:

$ip_address = $_GET['ip'];
system("ping -c 4 " . $ip_address);

اگر برنامه به درستی از آن استفاده نکند $ip_address ورودی ، یک مهاجم می تواند چیزی مانند:

127.0.0.1; rm -rf /

هدایت سیستم برای اجرای هر دو فرمان پینگ و مخرب rm -rf / فرمان ، که می تواند پرونده های مهم سیستم را حذف کند.

نمونه های دنیای واقعی از تزریق فرماندهی

نمونه های دنیای واقعی از تزریق فرماندهی

نقض داده های Equifax (2017)

در سال 2017 ، Equifax دچار نقض گسترده داده شد که تقریباً 147 میلیون نفر را تحت تأثیر قرار داد. مهاجمان از یک آسیب پذیری شناخته شده در چارچوب Apache Struts2 سوءاستفاده کردند و به آنها امکان اجرای دستورات دلخواه را در سرورهای Equifax می دهند. این نقض تأثیر ویرانگر آسیب پذیری های تزریق فرماندهی بدون استفاده را برجسته کرد.

“نقص های تزریق فرماندهی اغلب دست کم گرفته می شوند زیرا به عملکرد مشروعیت شباهت دارند و باعث می شوند که آنها در طول توسعه از آن غافل شوند.” – آنا چانگ ، محقق اصلی امنیت در شبکه های پالو آلتو

آسیب پذیری Shellshock (2014)

اشکال Shellshock در GNU Bash Shell به مهاجمان اجازه داد تا با بهره برداری از نحوه متغیرهای محیط پردازش شده Bash ، دستورات دلخواه را اجرا کنند. این آسیب پذیری میلیون ها سیستم مبتنی بر یونیکس را تحت تأثیر قرار داده و بر اهمیت وصله به موقع و به روزرسانی سیستم تأکید کرده است.

جلوگیری از تزریق فرمان

جلوگیری از تزریق فرمان

کاهش آسیب پذیری های تزریق فرماندهی شامل چندین روش بهترین است:

1. اعتبار سنجی و ضد عفونی ورودی

همیشه در برابر لیست های مجاز مجاز اعتبار دهید. هرگز ورودی کاربر بدون سرپرستی را به توابع سطح سیستم منتقل نکنید.

2. از API های ایمن استفاده کنید

کتابخانه های بومی زبان را که سیستم انتزاعی می نامند ترجیح دهید (به عنوان مثال ، پایتون subprocess.run() با shell=False).

3. اصل حداقل امتیاز

خدمات وب خود را با کمترین میزان امتیاز مورد نیاز اجرا کنید.

4. وصله و مدیریت وابستگی

در CVE و بولتن های امنیتی به روز شوید. سیستم ها و کتابخانه ها به طور مرتب.

بینش متخصص

“آسیب پذیری های تزریق فرماندهی یادآوری آشکار از اهمیت اعتبارسنجی دقیق ورودی است. توسعه دهندگان باید برای کاهش این خطرات ، شیوه های رمزگذاری ایمن را اتخاذ کنند.” – جین دو ، تحلیلگر ارشد امنیت در CloudFlare

“ارزیابی های امنیتی منظم و بررسی کد در شناسایی و اصلاح نقص های تزریق بالقوه قبل از سوء استفاده از آنها ضروری است.” – جان اسمیت ، CTO در شرکت SecuReapps.

پایان

تزریق فرمان ممکن است ساده به نظر برسد ، اما پیامدهای آن کشنده است. از Shellshock تا Equifax ، تاریخ نشان می دهد که یک میدان ورودی بدون بررسی می تواند کل زیرساخت ها را در معرض دید خود قرار دهد.

غذای اصلی:

  • ورودی ها را ضد عفونی و تأیید کنید.

  • از اجرای پوسته در هر صورت ممکن خودداری کنید.

  • با تکه ها و مشاوره های امنیتی فعلی بمانید.

“این آزمایشگاه اول TryhackMe چیزی را به من آموخت که هیچ کتاب درسی نمی تواند باشد. یک دستور واحد نادیده گرفته شده می تواند میلیون ها دلار هزینه کند.”

خواندن بیشتر

  • راهنمای تزریق فرمان OWASP

  • سریع: تزریق فرماندهی سیستم عامل عمیق شیرجه

  • Node.JS امنیت تزریق فرماندهی

  • دستورالعمل های برنامه نویسی ایمن NIST

  • TryhackMe: اتاق تزریق فرمان

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا