پچ کردن نرم افزار های وب !!

پچ کردن نرم افزار های وب !!

روش عیب یابی جدیدی که در بین 50 عدد از نرم افزار های محبوب Web مورد استفاده قرار گرفت مشخص کرد که تعداد 23 مورد خرابکاری اساسی در این نرم افزار ها بوجود آمده است .

با بررسی های موشکافانه جدیدی که بر روی تعدادی از نرم افزار های محبوب Web دارای فریمورک Ruby on Rail صورت گرفته است ، کارشناسان IT در نهایت توانستند که سیستمی را بوجود آورند که می تواند به سرعت ده ها هزار خط از کد های نرم افزار های مختلف را با همدیگر ادغام نموده و به راه های نفوذ آنها پی ببرد .
در این تست ها که بر روی 50 برنامه Web نوشته شده با Ruby on Rails انجام گرفته ، سیستم تعداد 23 عیب امنیتی را ناشناس باقی گذاشته و این در حالی است که زمان مورد نیاز برای آنالیز هر نرم افزاری حدود 64 ثانیه می باشد .
این محققان نتایج بررسی های خود را در International Conference on Software Engineering در ماه می منتشر کرده اند .
بر اساس اظهارات Daniel Jackson ، استاد Department of Electrical Engineering and Computer Science این سیستم جدید از تکنیکی استفاده می کند که به " static analysis " مشهور است . این تکنیک (static analysis ) به دنبال این است که به طور عمومی از وجود عیب ها و شکاف های موجود برای رخنه ی داده ها در نرم افزار ها گزارش جامعی ارائه بدهد .
Daniel Jackson می گوید : " اگر بخوهیم مثالی بزنیم که این مورد برای همگان آشکار بشود و از ابهامات قضیه بکاهیم آنگاه می گوییم شما باید شرایطی را در نظر بگیرید که می خواهید یک آنالیز انتزاعی بر روی برنامه ای که با اعداد صحیح درگیر است را  انجام بدهید و در این هنگام شما به عنوان یک آنالیز کننده باید اعداد صحیح مثبت و اعدا صحیح منفی را از هم جدا بکنید و همچنین صفر را نیز به صورت جداگانه بنویسید . " درست همانند این مطب یک تحلیل اماری باید تمامی جوانب کار را در نظر داشته باشید و از کوچکترین مولفه که می تواند در آمار نهایی تاثیر داشته باشد نیز چشم پوشی ننماید . به این معنی که همه ی مولفه ها باید وارد کار بشوند برای مثال در همان موردی که اعدا صحیح مثال زده شد ، دو عدد مثبت با یکدیگر جمع بشوند حاصل مثبت خواهد بود و اگر مجموع آنها با دو عدد منفی جمع شود حاصل منفی است و دوباره دو عدد صحیح منفی  با همدیگر عدد مثبتی را تشکیل می دهند و الی آخر .
Daniel Jackson در ادامه اضافه می کند : " مشکلی که در این نمونه ها وجود دارد این است که پاسخ هیچوقت کاملا صحیح نیست ، زیرا همواره خطا هایی رخ می دهد و قسمتی از اطلاعات از دست می رود . " وی می گوید : " اگر شما یک عدد منفی و یک عدد مثبت را اضافه بکنید ، هیچوقت به طور کامل نمی دانید که پاسخ شما یک عدد مثبت خواهد بود یا منفی و یا اینکه نتیجه آن صفر خواهد شد . اغلب فعالیت های انجام گرفته در تحلیل آماری بر این اساس است که تا آنجایی که امکان دارد سع بر این باشد که نتایج به واقعیت نزدیک تر باشند و صحت و اعتبار بیشتری داشته باشند ولی در هر حال برخی مشکلات هم وجود دارند که اجتناب ناپذیر هستند . "
با این وجود Daniel Jackson معتقد است که در صد درستی نتایج در نرم افزار های Web به طور قابل ملاحظه ای بالا است . Daniel Jackson اشاره می کند که : " برنامه ای که آنالیز شده ومورد تحلیل قرار می گیرد به خودی خود پروژه ی عظیمی است . حتی اگر بخواهید برنامه ای خیلی کوچک هم بنویسید باید به منابع زیادی مراجعه نمایید و از فریمورک معینی بهره ببرید . خب حالا بیایید همین بحث را ربط بدهیم به یک برنامه ی مهمی مثل نرم افزار های وب و آنگاه از بزرگی کار و وسعت داده ها بیشتر آگاه خواهیم شد . زمانی که شما یک برنامه ی Web را مورد تحلیل قرار داده اید که با زبان برنامه نویسی عظیمی مانند Ruby on Rails نوشته و ساخته شده است ، باید حواس خود را بیش از پیش جمع بکنید . اگر در پروژه های اینچنین بزرگی بخواهید از تحلیل آماری سنتی استفاده بکنید مثل این است که کاری را شروع کرده اید که صد در صد از بی نتیجه بودن آن آگاه هستید . "
همه ی این قضایا باعث شده است تا استاد Daniel Jackson و شاگردان برجسته ی او در این پروژه به سیستمی دست پیدا بکنند که با استفاده از آن بتوان به تحلیل آماری عملی برنامه های مهم پرداخت ( مانند برنامه هایی که توسط زبان برنامه نویسی Ruby on Rails نوشته شده اند ) .
یک منبع برنامه نویسی همان چیزی است که برنامه نویسان سراسر جهان بار ها و بار ها به آن مراجعه می نمایند و دوست دارند تا با استفاده از برنامه های معتبری را ایجاد نمایند . آنها به جای نوشتن دوباره ی این کد ها از برنامه های مشابه می توانند آنها را به راحتی از این منابع برداشته و وارد سیستم برنامه نویسی خود بکنند .
Ruby on Rails یا به اختصار همان Rails هم مانند بسیاری دیگر ازز همنوعان خود ویژگی های منحصر به فردی در این منابع برنامه نویسی دارد . هر افزودن وکاستن ، هر تقسیم بندی یک ارزش خاص به اجزای مختلف دارای کد هایی است که می توان از منابع مورد اشاره در بالا استخراج نمود .
Near با نوشتن و دوباره نوشتن این کد ها سبب می شود تا سیستم های اجرایی نیز آنها را همانند یک زبان رسمی و قانونی شناسایی بکنند . این امر باعث می شود که ترجمان Rails ( که برنامه های سطح بالای Rails را به کد قابل خواندن با ماشین تبدیل می کند ) به ابزار تحلیل آماری تبدیل بشود . با در اختیار داشتن منبع Near ، اجرای یک نرم افزار Rails در یک ترجمان سبب ایجاد نوشته های خط به خط و رسمی از نحوه ی کنترل داده ها توسط نرم افزار خواهد شد .
در این تحقیق که Near برای ایجاد سه عیب یاب مختلف برای نرم افزار های Ruby on Rails از ساز و کار های عمومی بهره می برد ، هر یک از سیستم های عیب یابی از مقادیر معین و متفاوت دخالت برنامه نویسان بهره می برد . یکی از این سیستم ها گزارشاتی ارائه داده بود که در یک مقاله ی جداگانه نوشته شد و در رابطه با رویه دسترسی نرم افزار به داده بود . این مقاله با نام Space چاپ شده است .
همچنین Near از راه های جدیدی که نرم افزار های وب با استفاده از آنها می توانند به داده ها دسترسی پیدا بکنند نیز پرده برداشته است . برخی از این داده ها به صورت عمومی در دسترس همگان قرار دارند ، برخی از آنها به محض ورود کاربر به پروفایل خود در دسترس این سیستم ها قرار می گیرند ، برخی از این داده ها به نحوی هستند که فقط برخی کاربران خاص می توانند به آنها دسترسی داشته باشند ( مدیران کاربران ) و قادر به دسترسی به قسمت های از پیش تعیین شده می باشند و دسترسی های دیگری هم وجود دارد که در این متن نمی توان به همه ی آنها اشاره کرد .
Near برای هر یک از انواع این دسترسی ها ( الگو های مختلف دسترسی که در پاراگراف قبل آمده اند ) یک مدل منطقی ساده ای را ایجاد کرده است که نشان می دهد که یک کاربر سیستم عامل خاص در چه شرایطی می تواند به چه اطلاعات و داده هایی دسترسی داشته باشد . Space می تواند در نوشته هایی که از منابع هک شده استخراج شده است به صورت اتوماتیک مشخص نماید که آیا برنامه می تواند به این مدل ها ملحق بشود یا خیر .  حال اگر این اجازه داده نشود می توان به وجود یک رخنه امنیتی در سیستم پی برد .
استفاده از Space نیاز مند این است که یک کاربری به کد برنامه دسترسی داشته باشد تا بتواند مشخص بکند که کدام برنامه قابل اعتماد است و نیز عملکرد ها با کدام یک از مدل های Near هم خوانی دارند . اما با این وجود راه دیری هم وجود دارد : Near قادر است تا تمامی این 50 نرم افزار مورد آزمایش را طرح ریزی نماید . و این طرح ریزی و نقشه کشی برای یک برنامه نویسی که از ابتدا با این موارد درگیر است به مراتب می تواند راحت تر از بررسی آنها از بیرون و به صورت جزئی می باشد .

 

منبع خبر: news.mit.


0 نظر درباره‌ی این پست نوشته شده است.

ثبت نظر