آسیبپذیری در زبانهای برنامهنویسی
به گزارش کارگروه امنیت سایبربان؛ دنیای تکنولوژی بدون نقصهای امنیتی معنا ندارد؛ از حفرههای سختافزاری مانند ملتداون و اسپکتر در پردازندههای اینتل گرفته تا ایرادات نرمافزاری در زبانهای برنامهنویسی؛ بهتازگی شرکت امنیتی «وایت سورس» آسیبپذیریهای موجود در 7 زبان برنامهنویسی پرکاربرد طی ده سال اخیر را بررسی کرده و نتایج جالبی را به دست آورده است.
طبق گزارش وایت سورس، زبانهای برنامهنویسی C، جاوا، جاوا اسکریپت، پایتون، روبی، پی اچ پی و ++C در فهرست بیشترین آسیبپذیری قرار میگیرند. زبان C حدود نیمی از گزارشهای امنیتی را به خود اختصاص داده و در صدر جدول قرارگرفته است.
البته به گفته وایت سورس، حتی باوجوداین همه آسیبپذیری هم نمیتوان گفت که زبان C امنیت کمتری نسبت به دیگر زبانها دارد. تعداد زیاد نقصهای امنیتی زبان C به چند عامل وابسته است، ازجمله اینکه قدمت بسیار بیشتری نسبت به بقیه دارد و کدهای فوقالعاده زیادی با آن نوشته شده است. زیرساختهای نرمافزاری متعددی مانند OpenSSL و کرنل لینوکس هم از زبان C بهره میبرند.
بااینحال اگر برنامهنویسی را با C آغاز کرده باشید، احتمالاً میدانید که بعضی از مشکلات هم ذاتی هستند. یکی از مسائل اساسی زبان C رفتار نامشخص و تعریفنشده در شرایط مختلف است که میتواند آسیبپذیریهای متعددی را ایجاد کند. از طرفی زبان ++C طی 5 سال گذشته با بحرانیترین آسیبپذیریها روبرو بوده است. خطاهای بافر که مدتها برنامه نویسان C را آزار میدادند، حالا در ++C خودنمایی میکنند.
جاوا اسکریپت که احتمالاً محبوبترین زبان برنامهنویسی عصر حاضر به شمار میرود، تنها موردی است که طی 10 سال اخیر با افزایش مداوم تعداد آسیبپذیریها روبرو بوده است. البته بیشتر معضلات امنیتی جاوا اسکریپت از نوع Path Traversal بوده یا مربوط به پکیجهای ثالث هستند و فقط توسط ابزارهای آنالیز کد منبع شناسایی میشوند.
همانطور که انتظار میرود، شاهد عملکرد بسیار خوب زبان برنامهنویسی قدیمی پایتون ازنظر امنیت هستیم. تقریباً تمامی زبانها از حفرههای امنیتی مشترک رنج میبرند. دو نقص امنیتی که در 70 درصد زبانها دیده میشوند، عبارتاند از CWE-79 یا «تزریق اسکریپت از طریق وبگاه» و CWE-20 که به اعتبارسنجی دادهها مربوط است.
اما آیا درنهایت، زبان C کمترین و زبان پایتون بیشترین امنیت را در بین زبانهای برنامهنویسی دارند؟ پاسخ به این سؤال بههیچوجه ساده نیست. وایت سورس میگوید این نتیجهگیری ساده فقط به درد بحثوجدل بین برنامه نویسان میخورد، اما درنهایت این شما هستید که باید خلاقانهترین و ایمنترین نرمافزار ممکن را با هر زبانی که دوست دارید، بنویسید.
بااینحال بهتر است که تمام برنامه نویسان، زمان کافی را به مطالعه آسیبپذیریهای زبان مورداستفاده خود اختصاص دهند و نقاط قوت و ضعف آن را بهخوبی بدانند، تا بتوانند در زمان طراحی و توسعه نرمافزار تصمیمات درستی را ازنظر امنیتی اتخاذ کنند. درواقع نقش برنامهنویس از زبان برنامهنویسی مهمتر است.