داستان امنيت لينوکس

16 جولاي، يک برنامهنويس امنيتي بهنام براد اسپنگلر که برنامهاي منبعباز براي امنيت تحت شبکه مينوشت و نامش را grsecurity گذارده بود. طي نامهاي اعلام کرد که در هسته لينوکس 30/6/2 (آخرين هسته) يک حفره امنيتي يافته است.
نگارش کوچکي از اين آسيبپذيري منتشر شد و بر اساس مرکز تهاجمهاي اينترنتي SANS، کد مخرب در بخش net/tun پيادهسازي شده بود. اتفاقي که افتاد بسيار ساده بود، توسعهدهنده متغيري را با مقداري خاص که ميتوانست NULL هم باشد، ايجاد کرد، تا بعدا اگر مقدار آن 0 بود، پيغام خطايي برگرداند.
اما در همين نقطه موضوع جالب ميشود. کد برنامهنويس بهنظر معصوم ميرسد. اما درست بعد از اينکه به دستان کامپايلر gcc سپرده ميشود و در زمان بهينهسازي کد، کامپايلر متوجه ميشود که متغير قبلا تعريف شده است و عملا تکه کد if را (که در آن بررسي ميشود که آيا tun مساوي NULL هست يا نه) حذف ميکند. بهعبارت ديگر، کامپايلر اين ايراد را به کد باينري هم منتقل ميکند. بههمين دليل، هسته بهسادگي ممکن است از آدرس صفرم حافظه، داده بخواند يا در آنجا بنويسد. مهاجم بههمين سادگي ميتواند کل سيستم را در اختيار بگيرد.
ترسناک است، اينطور نيست؟! همانطور که ميبينيد، بهخاطر عملکرد در سطح بسيار پايين، حتي ميشود SELinux را هم از پا انداخت.
البته، براي شکستن ديوارهاي امنيتي يک کامپيوتر، نياز به سطوح دسترسي بالايي داريد تا بتوانيد از ابزارهاي توسعهدهنده استفاده کنيد. بعد از آن، بايد حتما برنامهاي را از کد منبع آن کامپايل کنيد و کد منبع را هم خودتان بنويسيد. اينجا اصلا شبيه ويندوز نيست که تنها يک اشتباه، يک کليک اشتباهي روي آدرس اشتباهي يا باز کردن پيوست يک ايميل، کار سيستم عاملتان را بسازد.
اما، اين تنها راه آسيبپذيريتان نيست، استفاده از حفرهامنيتي PulseAudio در سيستمهاي لينوکس و ويندوزي براي هر دو سيستم عامل خطرناک است. تنها راه چاره اين است که هسته جديد لينوکس را نصب کنيد تا خيالتان از بابت اينها راحت باشد.
هدف از نوشتن اين مطلب، بررسي بحث فني و جزئيات حفرههاي امنيتي نيست. مساله اين است که در منبعباز، يک مشکل امنيتي براي عام مطرح ميشود و در همان ملاعام هم رفع مشکل ميشود. بهعنووان مثال، فايرفاکس 5/3 يک حفره امنيتي بسيار آشکار داشت که تنها سه روز بعد از عرضه، رفع عيب شد.
اما از طرف ديگر، مايکروسافت دوشنبه گذشته باز با يک حفره امنيتي جديد روبهرو شده است، اما هنوز براي رفع آن اقدامي صورت نگرفته است. اين در مقابل ويندوز و ديگربرنامههاي ويندوزي که ماهها و سالها حاوي حفرههاي امنيتي هستند، واقعا هيچ است. اواخر سال گذشته، مايکروسافت يک حفره امنيتي را رفع کرد که بدون اغراق، هفت سال در مرورگرش جا خوش کرده بود. يادمان نرود که کرم MyDoom که در سال 2004 راهاندازي شده بود، هفته گذشته دوباره در سيستمهاي ويندوزي براي حملههاي DDoS به کار گرفته شد.
حقيقت اين است که تمام نرمافزارهاي منبعباز، که بسيار امنتر از برادران تجاري خود هسنتد، تمام اينها را مديون منبعباز بودناند. چرا که تنها از اين طريق ميتوان به سادگي ايرادات را يافت و به سرعت ان را برطرف کرد. اگر مايکروسافت واقعا نگران وضعيت امنيتي است، نبايد با ارائه وصلههاي امنيتي آن را رفع کند، بايد کد را باز کند تا هر کس که ميتواند نگاهي به داخل آن بياندازد. هر چند که اين اتفاق هرگز نخواهد افتاد و نرمافزارهاي آزاد و منبعباز همچنان دلاور دنياي امنيت نرمافزاري باقي خواهند ماند.
محمدرضا قرباني