اجرای کد دلخواه
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/VPN_%26_Internet_Security_on_Your_Computer_for_Online_Privacy.jpg/220px-VPN_%26_Internet_Security_on_Your_Computer_for_Online_Privacy.jpg)
در امنیت رایانه، اجرای کد دلخواه (ACE) عبارت است از توانایی مهاجم در اجرای دستورها یا کد دلخواه بر روی یک ماشین هدف یا در یک فرایند هدف است.
آسیبپذیری اجرای کد دلخواه یک نقص امنیتی در نرمافزار یا سختافزار است که اجازه اجرای دلخواه کد را میدهد. به برنامه ای که برای سوء استفاده از چنین آسیبپذیری طراحی شدهاست، بهرهبرداری کد دلخواه نامیده میشود. توانایی ایجاد کد دلخواه بر روی یک شبکه (به ویژه از طریق یک شبکه وسیع مانند اینترنت) اغلب به عنوان اجرای کد از راه دور (RCE) نامیده میشود.
انواع آسیبپذیری
[ویرایش]تعدادی کلاس آسیبپذیری وجود دارد که میتواند منجر به توانایی مهاجمان در اجرای دستورها یا کد دلخواه شود. مثلا:
- نقاط ضعف ایمنی حافظه مانند سرریز بافر یا بیش از حد خواندن بافر.
- آسیبپذیریهای ضدعفونی کردن دادههای غیرقابل اعتماد[۱]
- نوع آسیبپذیریهای گیجی[۲][۳]
- اجرای کد دلخواه GNU LDD[۴]
روشها
[ویرایش]اجرای کد دلخواه معمولاً از طریق کنترل نشانگر دستورالعمل (مانند جهش یا انشعاب) یک فرایند در حال اجرا حاصل میشود. اشاره گر دستور به دستور بعدی در فرایند اجرا شده اشاره میکند؛ بنابراین کنترل بر روی مقدار اشاره گر دستورالعمل ، کنترل دستورالعمل بعدی را کنترل میکند. به منظور اجرای کد دلخواه، بسیاری از سوء استفادهها کد را به فرایند تزریق میکنند (برای مثال با ارسال ورودی به آن که در یک بافر ورودی در RAM ذخیره میشود) و از یک آسیبپذیری برای تغییر اشاره گر دستور جهت اشاره به کد تزریق شده استفاده میکنند. سپس کد تزریق شده بهطور خودکار اجرا میشود. این نوع حمله از این واقعیت استفاده میکند که اکثر رایانهها (که از معماری فون نویمان استفاده میکنند) تمایزی کلی بین کد و دادهها قائل نمیشوند، تا کد مخرب به عنوان داده ورودی بیضرر استتار شود. بسیاری از CPUهای جدیدتر دارای مکانیزمی هستند که این کار را سختتر میکند، مانند بیت بدون اجرا.
ترکیب با افزایش امتیاز
[ویرایش]به تنهایی، یک سوء استفاده از اجرای کد دلخواه، امتیازاتی مشابه پروسه هدف به مهاجم خواهد داد که آسیبپذیر است. برای مثال، در صورت سوء استفاده از نقص در مرورگر وب، مهاجم میتواند به عنوان کاربر عمل کند و اقدامات را انجام دهد مانند تغییر پروندههای رایانه شخصی یا دسترسی به اطلاعات بانکی، اما قادر به انجام اقدامات در سطح سیستم نیست (مگر اینکه کاربر مورد نظر نیز این دسترسی را داشته باشد).
برای حل این مشکل، هنگامی که یک مهاجم میتواند کد دلخواه را بر روی یک هدف اجرا کند، اغلب سعی میشود از یک سوء استفاده از امتیازات برای افزایش کنترل بیشتر استفاده کند. این ممکن است شامل خود هسته یا حسابی مانند Administrator , SYSTEM یا root باشد. با یا بدون این کنترل پیشرفته، سوء استفادهها میتوانند صدمات زیادی وارد کنند یا کامپیوتر را به یک زامبی تبدیل کنند - اما افزایش امتیاز به پنهان کردن حمله از سرپرست قانونی سیستم کمک میکند.
مثالها
[ویرایش]علاقه مندان به بازیهای قدیمی موفق شدهاند آسیبپذیریهایی را در بازیهای ویدیویی کلاسیک پیدا کنند که به آنها اجازه میدهد کد دلخواه را اجرا کنند، معمولاً با استفاده از یک دنباله دقیق ورودیهای دکمه به منظور سرریز بافر، که به آنها امکان میدهد در حافظه محافظت شده بنویسند. در بازی Awesome Games Done Quick 2014، گروهی از علاقه مندان به سرعت توانستند با استفاده از یک سرریز بافر برای نوشتن کد دلخواه به حافظه، نسخه بازیهای Pong و Snake را در Super Mario World[۵] کپی و کدگذاری و اجرا کنند.
در ۱۲ ژوئن ۲۰۱۸، محقق امنیتی Jean-Yves Avenard از موزیلا یک آسیبپذیری ACE را در ویندوز ۱۰ کشف کرد.[۶]
در ۱ مه ۲۰۱۸، یک محقق امنیتی یک آسیبپذیری ACE را در بایگانی فایل 7-Zip کشف کرد.[۷]
PHP موضوع آسیبپذیریهای متعدد ACE بودهاست.[۸][۹]
در ۱۴ ژوئیه ۲۰۲۰ یک شرکت امنیتی برنامههای تلفن همراه Oversecured در مورد ACE در کتابخانه اصلی Google Play گزارش داد که منجر به اجرای کد دلخواه در چندین برنامه Android از جمله Google Chrome شد.[۱۰]
منابع
[ویرایش]- ↑ "Deserialization of untrusted data | OWASP". owasp.org (به انگلیسی). Retrieved 2021-08-15.
- ↑ «Understanding type confusion vulnerabilities: CVE-2015-0336». Microsoft Security Blog (به انگلیسی). ۲۰۱۵-۰۶-۱۸. دریافتشده در ۲۰۲۱-۰۸-۱۵.
- ↑ m-y-mo (2019-02-05). "Exploiting CVE-2018-19134: Ghostscript RCE through type confusion". GitHub Security Lab (به انگلیسی). Retrieved 2021-08-15.
- ↑ "ldd arbitrary code execution". catonmat.net (به انگلیسی). Retrieved 2021-08-15.
- ↑ Orland، Kyle (۲۰۱۴-۰۱-۱۴). «How an emulator-fueled robot reprogrammed Super Mario World on the fly». Ars Technica (به انگلیسی). دریافتشده در ۲۰۲۱-۰۸-۱۵.
- ↑ "Symantec Security Center". www.broadcom.com (به انگلیسی). Retrieved 2021-08-15.
- ↑ "A Vulnerability in 7-Zip Could Allow for Arbitrary Code Execution". New York State Office of Information Technology Services (به انگلیسی). 2018-05-02. Archived from the original on 15 August 2021. Retrieved 2021-08-15.
- ↑ «NVD - CVE-2017-12934». nvd.nist.gov. دریافتشده در ۲۰۲۱-۰۸-۱۵.
- ↑ «NVD - CVE-2017-12933». nvd.nist.gov. دریافتشده در ۲۰۲۱-۰۸-۱۵.
- ↑ «Android: arbitrary code execution via third-party package contexts». News, Techniques & Guides. دریافتشده در ۲۰۲۱-۰۸-۱۵.