خدمات وب آمازون، یک ابزار فازی با پشتوانه KVM منبع باز جدید منتشر کرد
این خبر منتشر شد کهe Amazon یک ابزار فازی جدید به نام Snapchange منتشر کرده استکه به شما امکان می دهد فایل های اجرایی را بدون تغییر و بدون وجود کد منبع برنامه بررسی کنید. این حرکتی است که تا حدی برای رفع نگرانیها در مورد امنیت زنجیره تامین نرمافزار طراحی شده است.
در پست آمازون ذکر شده است که Snapchange به عنوان یک آزمایش شروع شد از تیم تحقیقاتی امنیت منبع باز AWS Find and Fix (F2) برای بررسی پتانسیل استفاده از KVM برای فعال کردن fuzzing عکس فوری.
امروز ما بسیار هیجانزده هستیم که Snapchange را معرفی کنیم، یک پروژه منبع باز جدید برای آسانتر کردن فازبندی مبتنی بر عکس فوری. Snapchange اجازه می دهد تا یک باینری هدف را با حداقل تغییرات فازی کنید، و بینش مفیدی را ارائه می دهد که به fuzzing کمک می کند.
Snapchange یک چارچوب Rust برای ایجاد fuzzer هایی است که عکس های فوری از حافظه فیزیکی را برای افزایش کارایی و کاهش پیچیدگی در فازی کردن بسیاری از انواع اهداف پخش می کند. Snapchange از ویژگی های مدیر ماشین مجازی داخلی هسته لینوکس که به عنوان ماشین مجازی هسته یا KVM شناخته می شود، استفاده می کند.
درباره Snapchange
ذکر شده است که، Snapchange اجازه می دهد تا یک حافظه فیزیکی خالی با کد اجرایی مشتق شده بارگیری شود و سازماندهی با استفاده از هایپروایزر KVM، یک اجرای چرخه ای کد حاضر در زباله دان، تکرار بر روی ترکیب های مختلف داده های ورودی، ردیابی خرابی ها یا ناهنجاری های در حال ظهور و راه اندازی مجدد بررسی پس از تکرار بعدی، هر بار که بخش حافظه و رجیسترهای CPU به حالت اولیه باز می گردند.
یک تکرار پس از پایان غیرعادی تنظیم مجدد و راه اندازی مجدد می شود، زمان انتظار یا وقوع یک رویداد خاص. داده های ورودی مستقیماً در حافظه جایگزین می شوند و برای ذخیره منابع در هنگام مقداردهی اولیه به حالت اولیه حافظه، پس از انجام تکرار بعدی مشخص می شود که چه داده هایی در حافظه هستند و تغییر کرده اند.
تخلیه اولیه حافظه با ذخیره یک عکس فوری از ماشین مجازی ایجاد می شود که در آن محیط با برنامه تحت آزمایش اجرا می شود، در حال اجرا تحت VirtualBox یا QEMU منطق جایگزینی داده های ورودی با ایجاد اسکریپت های خاص تعیین می شود و موقعیت شروع اجرای چرخه ای با تنظیم از یک نقطه شکست در اشکال زدا تنظیم می شود.
به عنوان مثال، اگر لازم باشد پردازش چند حالته یک درخواست شبکه بررسی شود، محقق برنامه را روی سیستم مهمان در VirtualBox یا QEMU شروع می کند، در دیباگر شروع اجرای رویه پردازش درخواست را پیدا می کند (به عنوان مثال ، پس از فراخوانی تابع recv)، یک نقطه شکست روی آن قرار داده و ناحیه حافظه ای را که بسته شبکه دریافتی در آن بارگذاری می شود، تعیین می کند. پس از آن، یک عکس فوری از سیستم مهمان ایجاد و در اسنپ چنج آپلود می شود.
برای تأیید، یک اسکریپت نوشته شده است که داده ها را در حین شمارش مستقیماً در بافر می نویسد. از بسته شبکه، که به شما امکان می دهد پردازش بسته های واقعی شبکه را شبیه سازی کنید. Snapchange از جایی که کار را متوقف کرده است، هر بار محتوای داده ها را در بافر تغییر می دهد و حالت حافظه را به حالت اولیه خود بازنشانی می کند.
استراتژی های مختلفی برای تولید داده های ورودی پشتیبانی می شود. محیط های متعدد متصل به هسته های CPU مختلف را می توان با اجرای موازی برشمرد. علاوه بر شناسایی خرابی ها در حین اجرای کد، از مجموعه معیارهای عملکرد، جمع آوری آمار پوشش برای ارزیابی پوشش کد اجرایی و ردیابی گام به گام کد اجرایی نیز پشتیبانی می کند.
برای علاقه مند به پروژه، باید بدانید که کد پروژه به زبان Rust نوشته شده و تحت مجوز آپاچی 2.0 از طریق توزیع می شود. GitHub.
Snapchange در لینوکس کار می کند، اما نیاز به دسترسی مستقیم به KVM اولیه دارد. بنابراین، از انواع نمونه فلزی برهنه EC2 پشتیبانی می کند، که بدون هایپروایزر اجرا می شوند، اما نمونه های مجازی سازی شده EC2 نیستند.
در نهایت، اگر علاقه مند به کسب اطلاعات بیشتر در مورد آن هستید، می توانید به اطلاعیه اصلی مراجعه کنید در لینک زیر.
اولین کسی باشید که نظر