آخرین اخبار و مقالات و مطالب پیرامون کامپایلر در ایران آی سی تی نیوز ، پایگاه فناوری اطلاعات و ارتباطات ایران
بر روی این دامنه اینترنتی سیستم مدیریت محتوا
پارس سی ام اس
نصب شده است که نرم افزاری قوی جهت طراحی سایت
می باشد. طراحی وب
با استفاده از پرتال
( پورتال
) پارس منجر به طراحی وب سایت
شما می شود. طراحی وب سایت
کپی رایت پورتال
پارس
بررسی های گوناگونی در مورد توزیع های مختلف لینوکسی انجام شده است و معمولا از این سو و آن سو شنیده می شود که فلان توزیع از نظر امنیتی بهتر از توزیع دیگر است. از این رو بهتر است امنیت سیستم عامل لینوکس را از جنبه های مختلف بررسی کنیم. شاید نخستین و اصلی ترین بحث امنیت در سیستم، بحث تامین امنیت فضای کاربر است.
حملاتی که به سیستم های عامل انجام می شود، به طور کلی حافظه و مشکلات مدیریت آن را هدف می گیرند و در واقع، تخریب حافظه یکی از راه های معمول برای نفوذ به سیستم های کامپیوتری مدرن است. ماجرا از این قرار است که یک سرریزی بافر می تواند کار را به حملات پیچیده تخریب حافظه بکشاند و نظام یکپارچه پروسه ها و حافظه سیستم را به هم بزند.
امنیت سیستم ها هر چند که در طول سالیان مختلف و از هر نگارش به نگارش بعدی بهبود یافته است، اما تکنیک های هجوم به این بخش از سیستم در طول زمان پیچیده تر شده و در توزیع های مختلف لینوکس برای آزمون امنیت به کار می رود. بسیاری از کارشناسان معتقدند برخی از مکانیزم های امنیت در مقایسه با دیگر روش ها، مقاوم تر هستند. علاوه بر این، تعدادی از این روش ها تاثیر زیادی روی بازدهی سیستم می گذارند و حتی می توانند هنگام کامپایل نرم افزاری خاص، از نظر تطبیق با سیستم مشکل ساز شوند.
می توان اشاره کرد که این دو فاکتور، یعنی تاثیر در بازدهی سیستم و امکان از دست رفتن کنترل روی نگهداری سیستم، بزرگ ترین دغدغه هایی است که تمام مکانیزم ها و روش های مقاومت در برابر حفره های امنیتی در توزیع های لینوکس با آن مواجهند. در هر نرم افزار و توسعه نرم افزاری آن می توان بدون هیچ تعجبی مشاهده کرد که این مساله حتی می تواند بحث های شدیدتری بین چندین پروژه به وجود بیاورد (همان طور که بحث های زیادی میان اعضای پروژه grsecurity و تیم توسعه هسته لینوکس به وجود آمد).
با این وجود، در این مقاله تلاش شده است تا بین 5توزیع محبوب لینوکس، دبیان، فدورا، اوبونتو، اوپن سوسه و جنتوهاردند مقایسه ای از نظر پیاده سازی مکانیزم های محافظت انجام شود. 4 توزیع نخست بسیار پرکاربرد هستند و جنتو به عنوان توزیع میزان برای به دست آوردن دیدگاهی از یک توزیع امن انتخاب شده است.
مکانیزم های امنیتی که در این مقایسه انجام شده، به صورت زیر است:
- نگاشت حافظه غیر اجرایی (استفاده از بیت سخت افزاری nx)
- کد یا برنامه مستقل از محل (pic/pie)
- پیاده سازی قابلیت fortify_source از glibc
- محافظت از نابودی پشته (ssp)
- relro یا محکم کردن برنامه های elf با مرتب سازی بخش هایی از فایل و تبدیل آنها به حالت فقط خواندنی.
همچنین ابزارهای زیر برای مقایسه استفاده شد:
- checksec.sh – با اصلاح کوچکی که وضعیت fortify_source را نشان دهد.
- اسکریپت پایتونی که قابلیت های checksec.sh را افزایش می دهد.
داده های آزمایش نیز از طریق کاربری که وارد سیستم x شده و یک دمون sshd و مرورگر فایرفاکس را اجرا کرده، گرد آوری شده است. از آنجا که برخی از توزیع ها نسبت به دیگران هنگام اجرا تعداد پروسه های مختلفی دارند (مثلا اوبونتو 96 و جنتو تنها 34 پروسه دارد)، این اقدام باعث می شود که نتایج یکسان دربیاید.
در ویکی پدیا آمده است که هسته لینوکس بیت nx را از زمان توزیع 8/6/2 پشتیبانی کرده است. از این رو برای سخت افزارهای 32 و 64بیتی که این بیت را در مدار خود دارند، فعال است. برای بهره بردن از نگاشت حافظه غیراجرایی در سخت افزارهایی که از این قابلیت استفاده نمی کنند، لازم است که وصله grsecurity یا بسته exec shield را از رد هت دریافت کنید. همچنین باید اشاره شود که بدون محافظت اضافه، مهاجم به سادگی می تواند بیت nx را دور بزند و دسترسی ها را به صورت دستی تنظیم کند. از آنجا که این مساله به هسته لینوکس برمی گردد در شماره های آینده در مورد آن صحبت خواهد شد.
همچنین باید اشاره شود که به جز بیت nx، تمام مکانیزم های امنیتی که در این مقاله به آن اشاره شده است در بخش فضای کاربری حافظه پیاده سازی شده اند و در سطح هسته نیستند. همچنین مهم است بدانیم حفره ای که در هسته لینوکس وجود دارد، صرف نظر از مکانیزم های امنیتی که برای پروسس های فضای کاربر فعال شده است، می تواند مورد تهاجم قرار بگیرد. از این رو می توان هسته های سیستم عامل امروزی را با پشتیبانی نابودی پشته کامپایل کرد، هرچند بهبود امنیت هسته اغلب به نصب وصله های زیادی از جمله وصله grsecurity منجر می شود. برخی از توزیع ها برای خود وصله های خاص امنیتی منتشر می کنند.
relro
حفاظت ساختمان داده داخلی یک فایل elf بر عهده relro است تا نگذارد اطلاعات آن را مهاجم ببیند یا جریان اجرای آن را کنترل کند. این امنیت را با اصلاح جدول اتصال روندها (plt) یا جدول عمومی آفست ها (got) که بخشی از فایل elf است، تضمین می کنند.
وقتی relro استفاده می شود، کل بخش got به حالت فقط خواندنی تغییر پیدا می کند و از این رو وقتی پروسس اجرا می شود نمی تواند توسط هیچ مهاجمی قابل تغییر باشد. اگر relro به صورت جزیی پیاده سازی شود، فقط plt و got به عنوان فقط خواندنی علامت زده می شوند. هر دوی این گزینه ها البته ساختمان داده elf را از نو مرتب می کنند تا مهاجم نتواند این بخش ها را با بخش های دیگر elf روی هم بیندازد.
همچنین لازم به ذکر است که relro کاملا نیازمند آن است که تمامی سمبل ها هنگام اجرای برنامه شناسایی شود تا بتوان کل got را به صورت فقط خواندنی در آورد. از این رو برنامه های بزرگ تر با کندی بیشتری هنگام بازشدن روبه رو می شوند و تعداد زیادی از سمبل ها از کتابخانه های اشتراک یافته باید بارگذاری شوند.
همان طور که در شکل نیز اشاره شده است، دبیان و فدورا هنوز به طور کامل این مکانیزم را پیاده نکرده اند و برای درصد اندکی از باینری های خود، به صورت جزیی آن را فعال کرده اند. در مثال ما فدورا و دبیان برای هیچ کدام از برنامه هایی که به صورت پیش فرض اجرا می شوند، آن را فعال نکرده بودند. از سوی دیگر، اوبونتو و اوپن سوسه relro را به صورت جزیی برای تمام پروسس ها فعال و relro کامل را برای بخشی از آنها فعال کرده اند. جنتو relro را به طور کامل برای تمام برنامه ها به جز یکی فعال کرده است که آن هم به صورت جزیی relro دارد.
از سوی دیگر تنها باینری ای که در اوپن سوسه قابلیت relro کامل را داشت، pulseaudio بود.
محافظ خرابی پشته
محافظ خرابی پشته سوء استفاده از سرریزی بافر را با پیاده سازی بررسی های امنیتی بیشتر در پروسس پشته دشوارتر می کند. افزونه ssp در کامپایلر gcc از زمان نگارش 1/4 به این برنامه اضافه شد.
همان طور که در نمودار بالا می توان مشاهده کرد، فدورا، اوپن سوسه و اوبونتو نتیجه ای به نسبت مساوی دارند و تقریبا 80 درصد از این توزیع ها، این قابلیت را برای پروسس های خود فعال کرده اند. تفاوت های قابل مشاهده در دبیان و جنتو وجود دارد و 10درصد از پروسس ها این مکانیزم را فعال کرده اند. در مورد جنتو باید گفت که این مساله یک مشکل داخلی بود که اول باید آن را برطرف می کردند و بعد این قابلیت را به صورت کلی در سیستم پیاده می کردند. گفتنی است که در نگارش بعدی جنتو و کامپایلر gcc، این قابلیت آزموده و فعال شده است و احتمالا در به روز رسانی بعدی gcc به سیستم اضافه شود.
محمدرضا قربانیمنبع: mwrinfosecurity
... h» این دستور به کامپایلر می فهماند که برنامه ما از این کتابخانه استفاده کرده و برای کامپایل نیاز است این کتابخانه نیز بارگذاری شود ...
... هم اکنون نیز نرم افزارهایی که با زبان جاوا نوشته می شوند، با وجود کامپایلر خود می توانند روی هر سیستمی اجرا شوند و به نوعی میان افزار هستند ...
... درست چند روز پیش از معرفی محصولات جدید ادوبی توسط این کمپانی، کمپانی اپل تغییراتی را در مجوز استفاده از کیت توسعه نرم افزار (sdk) مربوط به سیستم عامل آیفون اعمال نمود که استفاده از ابزارهایی مشابه کامپایلر برنامه flash professional cs5 را برای تولید کد بومی برنامه های نسخه چهارم سیستم عامل آیفون ممنوع می کند ...
... * مسیر (/usr/include): فایل های سرآیند (header) که برای کامپایلر c استفاده می شود ...
... 6- سازگاری با انواع زبان های اسمبلی- سازگاری کامل با انواع میکروکنترولر ها- شناسایی و به روز رسانی آخرین قطعات و مدارات روز دنیا- هماهنگی کامل نرم افزار برای آزمایش کدهای نوشته شده در زبان اسمبلی - وجود بیش از 8000 قطعه الکترونیکی در نرم افزار- استفاده آسان از نرم افزار - امکان پرینت مدارات- قابلیت ذخیره سازی به صورت عکس- خطایاب بسیار کامل نرم افزار- سازگار با بیشتر کامپایلر ها و اسمبلرها ...
... کامپیوترها به معنای واقعی کلمه نادان هستند و نمی توانید سه چهارم برنامه را بنویسید و بعد به آن بگویید: «خودت که می دانی منظورم چیست؟» و انتظار داشته باشید کامپایلر بقیه کارها را بکند ... اما باید قوانین کامپایلر را بدانید و از دستورهای خودکار آن باخبر شوید ...
... ولی در حالت بدون اشکال زدا یا عرضه (release) فایل شامل سیمبل ها فعال نخواهد شد و گزینه های بهینه سازی کامپایلر فعال می شوند و از نظر حجم فایل ایجاد شده کوچک تر از فایل اصلی خواهد بود و سرعت اجرا شدن در این دو حالت در بعضی از الگوریتم ها تفاوت زیادی خواهند داشت ...
... علاوه بر موارد بالا، گوگل همچنین اعلام کرده است که یک کامپایلر به نام closure compiler نیز عرضه شده است، این کامپایلر که یک ابزار فشرده سازی و بهینه سازی جاوا اسکریپت است، ویژگی های پیشرفته ای دارد ... علاوه بر بهینه سازی و فشرده سازی، این کامپایلر می تواند کد پایه را نیز تحلیل کند و خطاهای خاصی از برنامه را به طور خودکار تشخیص دهد ... این کامپایلر همانند کتابخانه نیز تحت مجوز آپاچی منتشر شده است ... این کامپایلر که به زبان جاوا پیاده شده است، می تواند از طریق خط فرمان مورد استفاده قرار بگیرد و یا این که از طریق رابط کاربری تحت وبی که گوگل ایجاد کرده است، کنترل شود ... همچنین برای استفاده دینامیک و برنامه نویسی شده از یک کامپایلر سروری، یک api به طریق rest موجود است ... کامپایلر کلوژر نیز به سرعت جای پای خودش را به عنوان یک ابزار فشرده ساز برتر محکم خواهد کرد ...
... به طور مثال، در زبان c بزرگ ترین حافظه ای که برای ذخیره سازی داده ها استفاده می شود، برابر با 8 بایت است که این مقدار در کامپایلر anci c به 10 بایت افزایش پیدا کرده است ...
|
صفحه 1
|
2 | 3 | 4 |
|