. .

شما اینجا هستید

مطالب تصادفی در سایت علمی نخبگان جوان | com.نخبگان

تشخیص سرریز صف

PDF version
کل آرا: 732
دسته بندی: 
در واقع سرریز بافر و سرریز صف از یک خانواده ی آسیب پذیری بحساب می آیند اما در فرآیند تشخیص دارای تفاوت های بنیادی هستند . هنگامی که شما بخشی از حافظه را به یک صف اختصاص می دهید؛اختصاص دهنده ی حافظه، هدری را قبل یا بعد ( یا هر دو مورد ) بخش محاسباتی حافظه ی شما قرار می دهد. این هدر می تواند برخی از اطلاعات مانند : اندازه ، استفاده شده یا نشده و موارد دیگر را (بسته به نوع تخصیص و نسخه ی آن) را شامل شود.

در واقع سرریز بافر و سرریز صف از یک خانواده ی آسیب پذیری بحساب می آیند اما در فرآیند تشخیص دارای تفاوت های بنیادی هستند .

هنگامی که شما بخشی از حافظه را به یک صف اختصاص می دهید؛اختصاص دهنده ی حافظه، هدری را قبل یا بعد ( یا هر دو مورد ) بخش محاسباتی حافظه ی شما قرار می دهد.
این هدر می تواند برخی از اطلاعات مانند : اندازه ، استفاده شده یا نشده و موارد دیگر را (بسته به نوع تخصیص و نسخه ی آن) را شامل شود.

 

در واقع، اگر شما تخصیص خود را مانیتور کنید، شما می توانید آدرس پایه و اندازه ی مناطق مورد تخصیص خود را معین کنید. سپس، اگر شما تمام دسترسی های STORE و LOAD در حافظه را بررسی کنید، متوجه خواهید شد که یکی در خارج از ناحیه ی تعیین شده اتفاق افتاده است . نمودار زیر، نشان دهنده حافظه و دسترسی STORE ‎/ LOAD به آن است ، رنگ قرمز یک دسترسی نامعتبر است که به آسانی از طریق تجزیه و تحلیل STORE ‎/ LOAD قابل شناسایی است.

در این کد c دو بافر به اندازه ی یکسان اختصاص داده شده اند و با مقداردهی بیش از یک بایت پر خواهد شد.

 

#define BUFF_MAX 128

int main(int ac, const char *av[]‎)
{
  char *buff1, *buff2;‎
  int i;‎

  buff1 = malloc(BUFF_MAX);‎
  buff2 = malloc(BUFF_MAX);‎
  if (!buff1 || !buff2)
    return -1;‎

  for (i = 0;‎ i <= BUFF_MAX;‎ i++) ‎/* off-by-one *‎/
    buff1[i] = 'A';‎

  for (i = 0;‎ i <= BUFF_MAX;‎ i++) ‎/* off-by-one *‎/
    buff2[i] = 'B';‎

  return 0;‎
}

در اینجا ما با فراخوانی تابع malloc نظارت و بررسی را از طریق ذخیره ی آدرس های پایه و اندازه ی بافر برروی کد انجام میدهیم .
زمانیکه یک STORE یا LOAD رخ می دهد ، ما فقط نیاز داریم تا چک کنیم آیا آدرس مقصد در لیست ما هست یا نه . در صورتیکه این آدرس خارج از محدوده ی تعیین شده باشد ؛ احتمال وقوع سرریز زیاد است .

 

$ ../../.‎./pin -t ‎.‎/obj-intel64/OverflowDetection.so -- ‎.‎/test
[INFO] malloc(128)‎ = 1270010
[INFO] malloc(128)‎ = 12700a0
400636: mov byte ptr [rax], 0x41 -- Overflow in 1270090
400658: mov byte ptr [rax], 0x42 -- Overflow in 1270120
$

 

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

نویسنده: علی یزدانی

کلمات کلیدی: 

افزودن دیدگاه جدید

ویژه های سایت

جذب سرمایه گذار ارزی جهت ایده های برتر ارسالی

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

دعوت از متخصصین حوزه نرم افزار ( جذب برنامه نویس )

شرکت تسهیلگران رشد نوابغ جوان از تمامی متخصصین حوزه نرم افزار که آشنایی با زبان های برنامه نویسی...

جذب سرمایه گذار ارزی جهت ایده های برتر ارسالی
دعوت از متخصصین حوزه نرم افزار ( جذب برنامه نویس )

نظر سنجی

  • با چه روشی می توان سریعتر اقتصاد مقاومتی را محقق نمود و کشور را از وابستگی به دیگران رهانید ؟

  • تعداد مقالات: 3,052
  • بازدید امروز : 5680
  • بازدید دیروز: 14415

افراد آنلاین:

144

اکنون ساعت   10:16 am به وقت تهران میباشد.

امروز: پنجشنبه 3 خرداد 1397

بارکد نخبگان جوان کانال تلگرامی
 
 

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

تهیه و تنظیم مطالب: com.نخبگان