سيستم عامل، يکي از عناصر چهار گانه در يک سيستم کامپيوتري است که داراي نقشي بسيار مهم و حياتي در نحوه مديريت منابع سخت افزاري و نرم افزاري است . پرداختن به مقوله امنيت سيستم هاي عامل ، همواره از بحث هاي مهم در رابطه با ايمن سازي اطلاعات در يک سيستم کامپيوتري بوده که امروزه با گسترش اينترنت ، اهميت آن مضاعف شده است . بررسي و آناليز امنيت در سيستم هاي عامل مي بايست با ظرافت و در چارچوبي کاملا" علمي و با در نظر گرفتن تمامي واقعيت هاي موجود ، انجام تا از يک طرف تصميم گيرندگان مسائل استراتژيک در يک سازمان قادر به انتخاب مستند و منطقي يک سيستم عامل باشند و از طرف ديگر امکان نگهداري و پشتيباني آن با در نظر گرفتن مجموعه تهديدات موجود و آتي ، بسرعت و بسادگي ميسر گردد .
اکثر کرم ها و ساير حملات موفقيت آميز در اينترنت ، بدليل وجود نقاط آسيب پذير در تعدادي اندک از سرويس هاي سيستم هاي عامل متداول است . مهاجمان ، با فرصت طلبي خاص خود از روش هاي متعددي بمنظور سوء استفاده از نقاط ضعف امنيتي شناخته شده ، استفاده نموده و در اين راستا ابزارهاي متنوع ، موثر و گسترده اي را بمنظور نيل به اهداف خود ، بخدمت مي گيرند . مهاجمان ، در اين رهگذر متمرکز بر سازمان ها و موسساتي مي گردند که هنوز مسائل موجود امنيتي ( حفره ها و نقاط آسيب پذير ) خود را برطرف نکرده و بدون هيچگونه تبعيضي آنان را بعنوان هدف ، انتخاب مي نمايند . مهاجمان بسادگي و بصورت مخرب ، کرم هائي نظير : بلستر ، اسلامر و Code Red را در شبکه منتشر مي نمايند. آگاهي از مهمترين نقاط آسيب پذير در سيستم هاي عامل ، امري ضروري است . با شناسائي و آناليز اينگونه نقاط آسيب پذير توسط کارشناسان امنيت اطلاعات ، سازمان ها و موسسات قادر به استفاده از مستندات علمي تدوين شده بمنظور برخورد منطقي با مشکلات موجود و ايجاد يک لايه حفاظتي مناسب مي باشند.
در مجموعه مقالاتي که ارائه خواهد شد ، به بررسي مهمترين نقاط آسيب پذير يونيکس و لينوکس خواهيم پرداخت . در اين راستا ، پس از معرفي هر يک از نقاط آسيب پذير ، علت وجود ضعف امنيتي ، سيستم هاي عامل در معرض تهديد ، روش هاي تشخيص آسيب پذيري سيستم و نحوه مقابله و يا پيشگيري در مقابل هر يک از نقاط آسيب پذير ، بررسي مي گردد .همزمان با ارائه مجموعه مقالات مرتبط با يونيکس ( پنج مقاله ) ، به بررسي مهمترين نقاط آسيب پذير در ويندوز ، طي مقالات جداگانه اي خواهيم پرداخت .
همانگونه که اشاره گرديد ، اغلب تهديدات و حملات ، متاثر از وجود نقاط آسيب پذير در سيستم هاي عامل بوده که زمينه تهاجم را براي مهاجمان فراهم مي آورد . شناسائي و آناليز نقاط آسيب پذير در هر يک از سيستم هاي عامل ، ماحصل تلاش و پردازش دهها کارشناس امنيتي ورزيده در سطح جهان است و مي بايست مديران سيستم و شبکه در يک سازمان بسرعت با آنان آشنا و اقدامات لازم را انجام دهند.
نقاط آسيب پذير موجود در هر سيستم عامل که در ادامه به آنان اشاره مي گردد ، سندي پويا و شامل دستورالعمل هاي لازم بمنظور برخورد مناسب با هر يک از نقاط آسيب پذير و لينک هائي به ساير اطلاعات مفيد و تکميلي مرتبط با ضعف امنيتي است .
مهمترين نقاط آسيب پذير يونيکس:
يونيکس ، يکي از سيستم هاي عامل رايج در جهان بوده که امروزه در سطح بسيار وسيعي استفاده مي گردد . تا کنون حملات متعددي توسط مهاجمين متوجه سيستم هائي بوده است که از يونيکس ( نسخه هاي متفاوت ) بعنوان سيستم عامل استفاده مي نمايند . با توجه به حملات متنوع و گسترده انجام شده ، مي توان مهمترين نقاط آسيب پذير يونيکس را به ده گروه عمده تقسيم نمود :
BIND Domain Name System
( Remote Procedure Calls (RPC
Apache Web Server
General UNIX Authentication Accounts with No Passwords or Weak Passwords
Clear Text Services
Sendmail
( Simple Network Management Protocol (SNMP
( Secure Shell (SSH
Misconfiguration of Enterprise Services NIS/NFS
( Open Secure Sockets Layer (SSL
در بخش اول اين مقاله ، به بررسي BIND Domain Name System وRemote Procedure Calls (موارد يک و دو) ، خواهيم پرداخت .
اولين نقطه آسيب پذير : BIND Domain Name System
نرم افزار BIND ) Berkeley Internet Name Domain) ، در مقياس گسترده اي و بمنظور پياده سازي DNS)Domain Name Service) ، استفاده مي گردد. BIND ، سيستمي حياتي است که از آن بمنظور تبديل اسامي ميزبان ( نظير : www.srco.ir ) به آدرس IP ريجستر شده ،استفاده مي گردد .با توجه به استفاده وسيع از BIND و جايگاه حياتي آن در يک شبکه کامپيوتري ، مهاجمان آن را بعنوان يک هدف مناسب بمنظور انجام حملات ، خصوصا" از نوع DoS)Denila Of Service) انتخاب و حملات متنوعي را در ارتباط با آن انجام داده اند. حملات فوق،از کارافتادن سرويس DNS و عدم دستيابي به اينترنت براي سرويس هاي مربوطه و ميزبانان را مي تواند بدنبال داشته باشد. با اينکه پياده کنندگان BIND ، تلاشي مستمر را از گذشته تا کنون بمنظور برطرف نمودن نقاط آسيب پذير انجام داده اند ، ولي هنوز تعداد زيادي از نقاط آسيب پذير قديمي ، بدرستي پيکربندي نشده و سرويس دهندگان آسيب پذير در آن باقي مانده است .
عوامل متعددي در بروز اينگونه حملات نقش دارد: عدم آگاهي لازم مديران سيستم در خصوص ارتقاء امنيتي سيستم هائي که بر روي آنان Bind deamon بصورت غير ضروري اجراء مي گردد و پيکربندي نامناسب فايل ها ، نمونه هائي از عوامل فوق بوده و مي تواند زمينه يک تهاجم از نوع DoS ، يک Buffer Overflow و يا بروز اشکال در DNS Cache را بدنبال داشته باشد.از جمله موارديکه اخيرا" در رابطه با ضعف امنيتي BIND کشف شده است مربوط به يک تهاجم از نوع DoS است . مقاله CERT Advisory CA-2002-15 جزئيات بيشتري را در اين رابطه ارائه مي نمايد. از ديگر حملات اخير ، تهاجمي از نوع Buffer Overflow است . مقاله CERT Advisory CA-2002-19 جزئيات بيشتري را در اين رابطه در اختيار قرار مي دهد. درتهاجم فوق ، يک مهاجم از نسخه آسيب پذير پياده سازي توابع Resolver مربوط به DNS استفاده و با ارسال پاسخ هاي مخرب به DNS و اجراي کد دلخواه ، امکان سوء استفاده از نقطه آسيب پذير فوق را فراهم و حتي دربرخي موارد مي تواند زمينه بروز يک تهاجم از نوع DoS را باعث گردد .
تهديدي ديگر که مي تواند در اين رابطه وجود داشته باشد ، حضور يک سرويس دهنده BIND آسيب پذير در شبکه است . در چنين مواردي ، مهاجمان از وضعيت فوق استفاده و از آن بمنزله مکاني جهت استقرار داده هاي غير معتبر خود و بدون آگاهي مديرسيستم استفاده مي نمايند. بدين ترتيب ، مهاجمان از سرويس دهنده بعنوان پلات فرمي بمنظور فعاليت هاي آتي مخرب خود بهره برداري خواهند کرد .
سيستم هاي عامل در معرض تهديد :
تقريبا" تمامي سيستم هاي عامل يونيکس و لينوکس بهمراه يک نسخه از BIND ارائه شده اند .در صورت پيکربندي ميزبان بعنوان سرويس دهنده ، نسخه اي از BIND بر روي آن نصب خواهد شد.
نحوه تشخيص آسيب پذيري سيستم
در صورت دارا بودن نسخه خاصي از BIND که بهمراه سيستم عامل ارائه و بر روي سيستم نصب شده است ، مي بايست عمليات بهنگام سازي آن را با استفاده از آخرين Patch هاي ارائه شده توسط توليد کننده ( عرضه کننده ) انجام داد. در صورت استفاده از نسخه BIND مربوط به ISC: Internet Software Consortium ، مي بايست از نصب آخرين نسخه BIND ، اطمينان حاصل نمود . در صورتيکه BIND نصب شده بر روي سيستم ، نسخه اي قديمي بوده و يا بطور کامل Patch نشده باشد ، احتمال آسيب پذيري سيستم وجود خواهد داشت . در اکثر سيستم ها ، دستور : "named - v " ، اطلاعات لازم در خصوص نسخه BIND نصب شده بر روي سيستم را بصورت X.Y.Z نمايش خواهد داد . X ، نشاندهنده نسخه اصلي ، Y ،نشاندهنده جزئيات نسخه و Z نشاندهنده يک Patch Level است . پيشنهاد مي گردد ، آخرين نسخه BIND ارائه شده توسط ISC را دريافت و آن را بر روي سيستم نصب نمود. آخرين نسخه موجود Version 9.2.2 بوده و مي توان آن را از سايت ISC دريافت نمود. يکي ديگر از رويکردهاي کنشگرايانه مرتبط با نگهداري امنيت BIND ، عضويت در گروه هاي خبري نظير Symantec براي آگاهي از آخرين هشدارهاي امنيتي است . در اين راستا مي توان از يک برنامه پويشگر بهنگام شده که قادر به بررسي دقيق سيستم هاي DNS بمنظور تشخيص نقاط آسيب پذيراست ، نيز استفاده گردد .
نحوه حفاظت در مقابل نقطه آسيب پذير
بمنظور حفاظت در مقابل نقاط آسيب پذير مرتبط با BIND موارد زير پيشنهاد مي گردد :
• غير فعال نمودن BIND deamon ( به آن named نيز اطلاق مي گردد ) بر روي سيستم هائي که بعنوان يک سرويس دهنده DNS در نظر گرفته نشده اند . بمنظور پيشگيري ازاعمال برخي تغييرات خاص ( نظير فعال نمودن مجدد آن ) ، مي توان نرم افزار BIND را از روي اينگونه سيستم ها حذف نمود.
• بمنظور بهنگام سازي سرويس دهنده DNS ، از تمامي Patch هاي ارائه شده توسط توليد کنندگان استفاده و در صورت امکان آن را به آخرين نسخه موجود ارتقاء دهيد . براي دريافت اطلاعات تکميلي در رابطه با نصب مطمئن تر BIND ، از مقالات ارائه شده درسايت CERT و بخش UNIX Security Checklist ، استفاده نمائيد .
• بمنظور پيچيده تر نمودن حملات اتوماتيک و يا پويش سيستم مورد نظر ، Banner مربوط به " Version String " را از BIND حذف و نسخه واقعي BIND را با يک شماره نسخه غيرواقعي در فايل named.conf ، جايگزين نمائيد .
• امکان ارسال انتقالات Zone را صرفا" براي سرويس دهندگان ثانويه DNS در Domain فراهم نمائيد ( secondary DNS servers) . امکان انتقالات Zone در ارتباط با Domain هاي Parent و Child را غير فعال و در مقابل از امکان Delegation ( واگذاري مسئوليت ) و فورواردينگ ( Forwarding ) استفاده نمائيد .
• امکان Recursion و glue fetching را بمنظور حفاظت در مقابل عماکرد ناصحيح DNS Cache ، غير فعال نمائيد .
• بمنظور حفاظت در رابطه با استفاده از "named" و تحت تاثير قرار دادن تمامي سيستم ، BIND را محدود نمائيد . بنابراين BIND بعنوان يک کاربر non-privilage در دايرکتوري Chroot اجراء مي گردد. براي نسخه شمازه نه BIND از آدرس http://www.losurs.org/docs/howto/Chroot-BIND.html استفاده نمائيد .
بمنظور حفاظت در مقابل حملات اخير و مرتبط با نقاط آسيب پذير کشف شده BIND مي توان از منابع زير استفاده نمود:
• براي نقطه آسيب پذير DoS در رابطه با ISC BIND 9 از آدرس http//www.cert.org/advisories/CA-2002-15.html استفاده گردد.
• چندين نقطه آسيب پذير DoS در رابطه با ISC BIND 8 از آدرس http://www.isc.org/products/BIND/bind-security.html استفاده گردد .
براي آگاهي و استفاده از پيشنهادات لازم بمنظور نصب ايمن تر BIND بر روي سيستم هاي سولاريس ، مي توان از آدرس : Running the BIND9 DNS Server Securely و آرشيو مقالات ارائه شده در آدرس Afentis استفاده نمود.
دومين نقطه آسيب پذير : ( Remote Procedure Calls (RPC
با استفاده از RPC برنامه هاي موجود بر روي يک کامپيوتر قادر به اجراي روتين هائي در کامپيوتر دوم از طريق ارسال داده و بازيابي نتايج مي باشند . با توجه به جايگاه عملياتي RPC ، استفاده از آن بسيار متداول بوده و درموارد متعددي از آن بمنظور ارائه سرويس هاي توزيع شده شبکه نظير مديريت از راه دور ، اشتراک فايل NFS و NIS استفاده مي گردد.وجود ضعف هاي امنيتي متعدد در RPC باعث بهره برداري مهاجمان بمنظور انجام حملات مختلفي شده است .دراکثر موارد ، سرويس هاي RPC با مجوزهاي بيش از حد معمول ، اجراء مي گردند . بدين ترتيب يک مهاجم غير مجاز قادر به استفاده از سيستم هاي آسيب پذير در جهت اهداف خود خواهد بود.اکثر حملات از نوع DoS در سال 1999 و اوايل سال 2000 در ارتباط با سيستم هائي بود که داراي ضعف امنيـتي و نقظه آسيب پذير RPC بودند. مثلا" حملات گشترده و موفقيت آميز در رابطه با سيستم هاي نظامي امريکا ، بدليل نقطه آسيب پذير RPC کشف شده در صدها دستگاه کامپيوتر مربوط به وزارت دفاع امريکا بوده است . اخيرا" نيز وجود يک ضعف امنيتي DCOM RPC در ويندوز ، باعث انتشار گسترده يک کرم در سطح اينترنت گرديد .
سيستم هاي عامل در معرض تهديد :
تمامي نسخه هاي يونيکس و لينوکس که بر روي آنان سرويس هاي RPC نصب شده است در معرض اين آسيب مي باشند .
نحوه تشخيص آسيب پذيري سيستم
با استفاده از يک پويشگر نقاط آسيب پذير و يا دستور " rpcinfo" ، مي توان از اجراء يکي از سرويس هاي متداول RPC بر روي سيستم آگاه گريد :
RPC Service | RPC Program Number |
rpc.ttdbserverd | 100083 |
rpc.cmsd | 100068 |
rpc.statd | 100024 |
rpc.mountd | 100005 |
sadmind | 100232 |
cachefsd | 100235 |
snmpXdmid | 100249 |
سرويس هاي RPC ، عموما" از طريق حملات buffer Overflow ، مورد سوء استفاده قرار مي گيرند .علت اين امر ، عدم انجام بررسي لازم و کافي در خصوص خطاها و يا اعتبار داده هاي ورودي توسط برنامه هاي RPC است . نقاط آسيب پذير Buffer overflow ، اين امکان را براي يک مهاجم فراهم مي نمايد که داده غير قابل پيش بيني را ( اغلب بصورت کد مخرب ) به درون حافظه برنامه ، ارسال نمايد . با توجه به ضعف موجود در رابطه با بررسي خطاء و صحت داده ، داده ارسالي مکان هائي حساس و کليدي که مورد استفاده پردازنده مي باشند را بازنويسي مي نمايد.در يک تهاجم موفقيت آميز Overflow ، کد مخرب ارسالي ،در ادامه توسط سيستم عامل اجراء مي گردد . با توجه به اينکه تعداد زيادي از سرويس هاي RPC ، با مجوزهاي بيش از حد معمول ، اجراء مي گردند ، استفاده موفقيت آميز از نقاط آسيب پذير فوق مي تواند امکان دسـيابي غير مجاز و از راه دور را به سيستم فراهم مي نمايد.
نحوه حفاظت در مقابل نقطه آسيب پذير
بمنظور حفاظت سيستم در مقابل حملات مبتني بر RPC ، موارد زير پيشنهاد مي گردد :
• غير فعال نمودن و يا حذف هر يک از سرويس هاي RPC که ضرورتي به استفاده از آن بر روي شبکه نمي باشد .
• نصب آخرين Patch ارائه شده در رابطه با سرويس هائي که امکان حذف آنان وجود ندارد:
- براي نرم افزار سولاريس از آدرس ( http://sunsolve.sun.com ) استفاده گردد.
- براي IBM AIX از آدرس : http://www.ibm.com/support/us و http://techsupport.services.ibm.com/server/fixes استفاده گردد.
- براي نرم افزار SGI از آدرس : http://support.sgi.com استفاده گردد .
- براي کامپک ( Digital Unix ) از آدرس http://www.compaq.com/support
- براي لينوکس از آدرس : http://www.redhat.com/apps/support/errata و http://www.debian.org./security استفاده گردد .
• عمليات جستجو بمنظور آگاهي و نصب آخرين Patch مربوطه مي بايست بصورت مستمر انجام شود.
• پورت 111 ( TCP و UDP ) مربوط به RPC portmapper و پورت 135 ( TCP و UDP ) مربوط به Windows RPC را در سطح روتر و يا فايروال بلاک نمائيد .
• پورت هاي Loopback 32770 ، 32789 مربوط بهTCP و UDP را بلاک نمائيد .
• فعال نمودن يک پشته غيراجرائي بر روي سيستم هاي عاملي که از ويژگي فوق ، حمايت مي نمايند. استفاده از يک پشته غيراجرائي ، لايه اي حفاظتي در مقابل تمامي حملات Buffer overflows نبوده ولي مي تواند عاملي موثر در جهت مقابله با برخي از حملات استاندارد گردد.
• در ارتباط با سيستم هاي فايل NFS صادراتي ، مراحل زير مي بايست دنبال گردد :
- استفاده از ميزبان / IP مبتني بر ليست هاي صادراتي
- پيکربندي سيستم هاي فايل صادراتي بصورت فقط خواندني
- استفاده از "nfsbug" براي پويش نقاط آسيب پذير
در بخش دو م اين مقاله به بررسي ساير نقاط آسيب پذير يونيکيس و لينوکس خواهيم پرداخت .