آژانس امنیت ملی ایالات متحده توصیه می کند در صورت امکان از زبان های برنامه نویسی ایمن به جای C/C++ استفاده کنید، زیرا هکرها اغلب از مشکلات حافظه سوء استفاده می کنند.
خالق C++، Bjarne Stroustrup، پس از اینکه آژانس امنیت ملی ایالات متحده (NSA) اخیراً از استفاده از آن توصیه کرد، از زبان برنامه نویسی محترم دفاع می کند. NSA به سازمان ها توصیه می کند که به جای آن از زبان های ایمن حافظه استفاده کنند.
در حال پاسخ به آژانس نوامبر ۲۰۲۲ بولتن در مورد ایمنی حافظه نرم افزار، Stroustrup، که C++ را در سال ۱۹۷۹ طراحی کرد، بر دههها تلاش برای فعال کردن C++ بهتر، ایمنتر و کارآمدتر. استروستروپ گفت: «به ویژه، کار بر روی دستورالعملهای اصلی C++ به طور خاص با هدف ارائه C++ ایمن از نوع ایستا و ایمن از نظر منابع برای افرادی که به آن نیاز دارند، بدون ایجاد اختلال در پایههای کد که میتوانند بدون چنین تضمینهای قوی یا معرفی زنجیرههای ابزار اضافی مدیریت کنند، ارائه میکند. در پاسخ منتشر شده. p>
بولتن NSA استفاده از C/C++ را توصیه نمیکند، زیرا علیرغم اینکه برنامهنویسان اغلب آزمایشهای دقیقی را برای اطمینان از ایمن بودن کد انجام میدهند، مشکلات حافظه در نرمافزار همچنان بخش بزرگی از آسیبپذیریهای مورد سوء استفاده را شامل میشوند. آژانس میگوید: «NSA به سازمانها توصیه میکند در صورت امکان، تغییر استراتژیک را از زبانهای برنامهنویسی که حفاظت کمی از حافظه را ارائه میکنند یا اصلاً محافظت نمیکنند، مانند C/C++، به یک زبان ایمن برای حافظه در نظر بگیرند.
این آژانس از زبانهای ایمن حافظه مانند C#، Go، Java، Ruby، Rust و Swift.” NSA گفت زبانهای رایج مانند C و C++ آزادی و انعطافپذیری را در مدیریت حافظه فراهم میکنند و در عین حال به شدت به برنامهنویس برای بررسی مراجع حافظه متکی هستند.
اما Stroustrup بر بهبود ایمنی تاکید کرد. اکنون، اگر من هر یک از آن زبانهای «ایمن» را برای طیف استفادههایی که برایم مهم است، برتر از C++ بدانم، محو شدن C/C++ را چیز بدی نمیدانم، اما اینطور نیست. همچنین، همانطور که توضیح داده شد، “ایمن” به ایمنی حافظه محدود می شود، و به ترتیب از ده ها روش دیگر که یک زبان می تواند (و خواهد شد) برای نقض برخی از اشکال ایمنی و امنیت استفاده شود، صرف نظر می کند.”
او همچنین از یادداشت NSA که C++ را با زبان C قدیمیتر جفت میکند ابراز تاسف کرد. C++، که در اصل C با کلاسها نامیده میشود، توسعهای از C است. «همانطور که بسیار رایج است، C و C++ را به یک دسته C/C++ تبدیل میکند، بدون توجه به ۳۰ سال پیشرفت.» استروستروپ در ایمیلی به InfoWorld در اواخر هفته گذشته اضافه کرد: «بله، افراد زیادی در مورد زبان افسانهای C/C++ صحبت میکنند و سپس اغلب بر روی نقاط ضعف بخش C تمرکز میکنند. بسیاری از این نقاط ضعف را می توان در C++ اجتناب کرد. به طور معمول، با نوشتن کدهای کارآمدتر که مستقیمتر هدف برنامهنویس را بیان میکند.»
Stroustrup در ایمیل نیز تعریف خود را از ایمنی به اشتراک گذاشت: هدف او ایمنی نوع و منبع است، که در آن هر شیء بر اساس نوع خود استفاده می شود و هیچ منبعی لو نمی رود. برای C++، این امر مستلزم بررسی محدوده زمان اجرا، حذف دسترسی از طریق نشانگرهای آویزان، و اجتناب از سوء استفاده از Casts و Union است. C++ امکانات سطح بالایی مانند کانتینرها، دهانه، حلقههای محدوده و انواعی را ارائه میکند که میتوانند تضمینهایی را بدون آسیب رساندن به بهرهوری یا کارایی ارائه دهند. استروستروپ در رابطه با به اصطلاح زبانهای امنی که NSA به آنها اشاره کرده است، گفت که همه این زبانها از طریق کدهایی آسیبپذیر هستند که بهصورت ایستا تأیید نشدهاند. او گفت: علاوه بر این، هر سیستمی باید از سخت افزار استفاده کند و دسترسی سخت افزاری موثر به ندرت ایمن است.
Stroustrup استراتژی خود را برای استفاده ایمن از C++ بیان کرد:
- تجزیه و تحلیل استاتیک برای تأیید اینکه هیچ کد ناامنی اجرا نشده است.
- قوانین کدگذاری برای ساده کردن کد برای امکان پذیر ساختن تحلیل استاتیکی در مقیاس صنعتی.
- کتابخانهها میتوانند نوشتن چنین کدهای سادهشده را تا حد معقولی آسان کنند و از بررسی زمان اجرا در صورت لزوم اطمینان حاصل کنند.
استراستروپ گفت میلیون ها برنامه نویس ++C و میلیاردها خط کد C++ وجود دارد. کاربردهای فعلی اصلی این زبان عبارتند از: هوافضا، ابزار پزشکی، هوش مصنوعی/ML، گرافیک، پزشکی زیستی، فیزیک با انرژی بالا، و موارد دیگر.
NSA اذعان کرد که مدیریت حافظه حتی در یک زبان “ایمن برای حافظه” کاملاً ایمن نیست و مکانیسم هایی مانند تست امنیت برنامه های کاربردی استاتیک و پویا (SAST و DAST) را می توان برای بهبود ایمنی حافظه در به اصطلاح غیرممکن استفاده کرد. زبان های ایمن برای حافظه NSA گفت، اما نه SAST و نه DAST نمی توانند کدهای غیر ایمن برای حافظه را کاملاً ایمن کنند.
پست های مرتبط
Bjarne Stroustrup خالق C++ از ایمنی آن دفاع می کند
Bjarne Stroustrup خالق C++ از ایمنی آن دفاع می کند
Bjarne Stroustrup خالق C++ از ایمنی آن دفاع می کند