• شماره ركورد
    14200
  • شماره راهنما(اين فيلد مربوط به كارشناس ميباشد لطفا آن را خالي بگذاريد)
    14200
  • پديد آورنده

    زهرا فاتحي مرج

  • عنوان
    متنوع سازي نرم افزار با هدف تحمل‌پذيري نفوذ با استفاده از فنون تبديل برنامه
  • مقطع تحصيلي
    كارشناسي ارشد
  • رشته تحصيلي
    نرم‌افزار
  • سال تحصيل
    اسفند ماه 1393
  • تاريخ دفاع
    اسفند ماه 1393
  • استاد راهنما
    دكتر عبداللهي ازگمي
  • دانشكده
    كامپيوتر
  • چكيده
    چكيده تعداد زياد سيستم كامپيوتري با آسيب‌پذيري يكسان، مي‌تواند به تهديدي مهم تبديل شود. متنوع‌سازي نرم‌افزار با ايجاد انواع مختلف از يك نرم‌افزار، به عنوان راه‌حلي براي تحمل‌پذيري نفوذ در برابر آسيب‌پذيري‌هاي مشترك ارائه مي‌شود. انواع ايجاد‌شده، از نظر رفتاري معادل ولي از لحاظ ساختاري متفاوت هستند. در اين ميان متنوع‌سازي نرم‌افزار با استفاده از فنون تبديل برنامه، به دليل خودكار بودن و عدم نياز به چندين تيم برنامه‌نويسي مورد توجه ويژه قرار گرفته است. پژوهش‌ها، متنوع‌سازي را در مراحل مختلف سير كد نرم‌افزار، از كامپايل تا به‌روزرساني، و با بهره‌گيري از ابزارهايي چون انواع كامپايلرها انجام داده‌اند. با اين وجود، مراحل و ابزارهايي وجود دارند كه تاكنون بررسي نشده است. به‌علاوه هيچ يك از پژوهش‌ها، اثبات حفظ رفتار برنامه‌هاي حاصل از متنوع‌سازي را مدنظر قرار نداده‌اند. در اين پژوهش، يك طرح متنوع‌سازي نرم‌افزار با استفاده از فنون تبديل برنامه به‌طور خودكار و با هدف حفظ رفتار برنامه ارائه مي‌شود. متنوع‌سازي، در زمان كامپايل و در سطوح مختلف برنامه انجام مي‌شود. تبديل مرتب‌سازي مجدد تابع در سطح فايل، سه تبديل تزريق بلوك پايه، شكافت بلوك پايه، و مرتب‌سازي مجدد بلوك پايه در سطح بلوك پايه، و تبديل‌هاي مرتب‌سازي مجدد دستورالعمل و لايه‌گذاري تصادفي در سطح دستورالعمل به كار مي‌روند. طرح پيشنهادي با توسعه گذرهاي جديد بر پايه كامپايلر LLVM و روي نمايش مياني آن، پياده‌سازي شده است. براي اثبات حفظ رفتار برنامه‌هاي متنوع‌شده توسط طرح پيشنهادي، از اثبات صوري بر پايه چارچوب Vellvm استفاده مي‌شود. اثبات حفظ رفتار متنوع‌ساز، مستلزم اثبات مجزاي تبديل‌هاي آن است. تبديل‌هاي مرتب‌سازي مجدد تابع، و مرتب‌سازي مجدد بلوك پايه به دليل عدم تغيير كد، نيازي به اثبات ندارند. براي اثبات تبديل‌هاي مرتب‌سازي مجدد دستورالعمل، و لايه‌گذاري تصادفي از تعاريف و لم‌هاي Vellvm استفاده شده است. اثبات فنون تبديل تزريق بلوك پايه، و شكافت بلوك پايه با ارائه يك تعريف و يك لم براي هر كدام انجام شده است. در نهايت كارآمدي طرح پيشنهادي با توجه به تأثير آن بر آسيب‌پذيري‌ها و حمله‌هاي رايج، مورد بررسي قرار گرفته است. طرح پيشنهادي با كاهش احتمال آسيب‌پذيري‌هاي رايج سرريز مبتني بر پشته، آزادسازي مجدد، اشاره‌گرهاي معلق، و قالب‌رشته، احتمال وقوع حمله‌هاي خرابي پشته، برنامه‌نويسي بازگشت‌گرا، و رونويسي اشاره‌گر تابع را كاهش داده است. واژه‌هاي كليدي: متنوع‌سازي نرم‌افزار، تبديل برنامه، كامپايلر LLVM، حفظ رفتار، اثبات صوري.