En
دبیرخانه شورای اجرایی فناوری اطلاعات
اطمینان از صحت و امنیت نرم‌افزارها :
دستورالعمل‌های صحت‌سنجی حداقل استانداردهای نرم‌افزار توسط توسعه‌دهنده
دستورالعمل‌های صحت‌سنجی حداقل استانداردهای نرم‌افزار توسط توسعه‌دهنده
۱۱ شهریور ۱۴۰۳

در دنیای امروز، اطمینان از صحت و امنیت نرم‌افزارها امری حیاتی است. برای اینکه نرم‌افزارها مطابق با اهداف توسعه‌دهندگان عمل کرده و از آسیب‌پذیری‌ها به دور باشند، نیازمند استفاده از فنون و روش‌های مختلف برای ارزیابی و آزمون است.

در دنیای امروز، اطمینان از صحت و امنیت نرم‌افزارها امری حیاتی است. برای اینکه نرم‌افزارها مطابق با اهداف توسعه‌دهندگان عمل کرده و از آسیب‌پذیری‌ها به دور باشند، نیازمند استفاده از فنون و روش‌های مختلف برای ارزیابی و آزمون است. استانداردها و دستورالعمل‌های مختلفی برای اطمینان از کیفیت و امنیت نرم‌افزارها تدوین شده‌اند. این یادداشت به بررسی دستورالعمل‌های صحت‌سنجی حداقل استانداردهای نرم‌افزار توسط توسعه‌دهندگان می‌پردازد و شامل ارزیابی‌ها، تحلیل‌ها و روش‌های مختلف برای تضمین امنیت و کارایی نرم‌افزار است.
یکی از اصول مهم در این زمینه، مدلسازی تهدید است. مدل‌سازی تهدید به توسعه‌دهندگان کمک می‌کند تا انواع تهدیدهای احتمالی را که نرم‌افزار ممکن است با آن‌ها مواجه شود، شناسایی و ارزیابی کنند. این فرآیند شامل تحلیل و تعیین نقاط ضعف و راه‌های حمله است که می‌تواند به بهبود امنیت نرم‌افزار کمک کند. استفاده از آزمایش‌های خودکار برای تحلیل ایستا و پویا نیز به توسعه‌دهندگان امکان می‌دهد تا مشکلات بالقوه را به سرعت شناسایی و برطرف کنند. این آزمایش‌ها شامل بررسی کد و اجرای برنامه به صورت خودکار است تا نقاط ضعف امنیتی و کارایی نرم‌افزار مشخص شود.
تحلیل ایستا، که مبتنی بر کد است، از اسکنرهای کد برای شناسایی مهم‌ترین اشکالات و نقص‌ها در کد استفاده می‌کند. ابزارهای اکتشافی نیز برای یافتن رمزهای «hardcode» شده و بخش‌هایی از نرم‌افزار که ممکن است نیاز به بازبینی دستی داشته باشند، به کار می‌روند. این ابزارها به توسعه‌دهندگان کمک می‌کنند تا نقاط ضعف کد را شناسایی و برطرف کنند.
تحلیل پویا، که به معنای اجرای برنامه است، شامل بررسی و حفاظت‌های داخلی هنگام اجرای برنامه می‌شود. موارد آزمون "جعبه سیاه" نیز بر اساس مشخصات و تحلیل مرزهای ورودی و مدلسازی تهدید ایجاد می‌شوند. علاوه بر این، موارد آزمون مبتنی بر کد باید به اندازه کافی ایجاد شوند تا پوشش 80 درصدی کد حاصل شود. این موارد آزمون به توسعه‌دهندگان کمک می‌کنند تا اطمینان حاصل کنند که نرم‌افزار بدون مشکل و با کارایی بالا عمل می‌کند.
یکی از ابزارهای مهم در تحلیل پویا، «fuzzer» است. «fuzzer» ابزاری است که برای شناسایی نقص‌های امنیتی به کار می‌رود. در صورتی که نرم‌افزار یک سرویس وب را اجرا می‌کند، استفاده از اسکنرهای برنامه وب نیز توصیه می‌شود. در این فرایند اشکالات شناسایی شده باید اصلاح شوند و فرآیند بهبود یابد تا از بروز اشکالات مشابه در آینده جلوگیری شود. این شامل اطمینان از امنیت کتابخانه‌ها، بسته‌ها و خدمات نیز می‌شود.
بخش دیگری از این استاندارد به زمینه و اطلاعات تکمیلی در مورد فنون و رویکردهای ارزیابی نرم‌افزار می‌پردازد. این اطلاعات شامل تغییرات، احتیاطات، ملاحظات بیشتر، نمونه ابزارها و جداول استانداردهای مرتبط است. این بخش به توسعه‌دهندگان کمک می‌کند تا با رویکردهای جدید و به‌روز در ارزیابی و امنیت نرم‌افزار آشنا شوند و آن‌ها را به کار گیرند.
ارزیابی نرم‌افزار تنها یکی از عناصر تحویل نرم‌افزاری است که الزامات امنیتی عملیاتی را برآورده می‌کند. برای دستیابی به نرم‌افزار ایمن، باید اصول و روش‌های توسعه نرم‌افزار به درستی اعمال شوند. این کار شامل آماده‌سازی سازمان، محافظت از نرم‌افزار، تولید نرم‌افزار ایمن و پاسخ به آسیب‌پذیری‌ها است. آماده‌سازی سازمان به معنای اطمینان از آمادگی منابع انسانی، فرآیندها و فناوری‌های سازمان برای تولید نرم‌افزار ایمن است. محافظت از نرم‌افزار نیز حفاظت از تمامی اجزای نرم‌افزار در برابر دستکاری و دسترسی غیر مجاز را شامل می‌شود. تولید نرم‌افزار ایمن به معنای تولید نرم‌افزاری با حداقل آسیب‌پذیری‌های امنیتی است. همچنین، پاسخ به آسیب‌پذیری‌ها شامل شناسایی و رفع آسیب‌پذیری‌های موجود و جلوگیری از بروز آسیب‌پذیری‌های مشابه در آینده است.
از سوی دیگر در زمینه نصب و راه‌اندازی نرم‌افزار نیز باید به اصول امنیتی توجه شود. حتی نرم‌افزاری که هیچ آسیب‌پذیری شناسایی شده‌ای ندارد، می‌تواند در صورت نصب، کارکرد یا نگهداری نادرست، آسیب‌پذیری‌هایی ایجاد کند. مسائل مرتبط با پیکربندی نادرست، نقض قوانین دسترسی به فایل و شبکه و پذیرش نرم‌افزار جعلی یا تغییر یافته از جمله این موارد هستند. برخی اقدامات امنیتی مهم شامل مدیریت وصله، مدیریت پیکربندی و نظارت مداوم است.
یکی از بخش‌های مهم در فرآیند نصب و راه‌اندازی نرم‌افزار، فایل‌های پیکربندی است. این فایل‌ها شامل پارامترها و تنظیمات اولیه نرم‌افزارها، فرایندهای سرور و سیستم‌عامل‌ها هستند که به دلیل تفاوت‌های موجود در نرم‌افزارهای کاربردی و محیط‌های شبکه قابل پیکربندی‌اند. اغلب، تأیید امنیتی نمی‌تواند تنظیمات غیرمنتظره را پیش‌بینی کند. سیستم‌ها و اپراتورهای شبکه معمولاً تنظیمات را تغییر می‌دهند تا کارهایی را که با استفاده از تنظیمات محدود دشوارتر یا غیرممکن هستند، تسهیل کنند. به ویژه در موارد مجوز دسترسی و رابط‌های شبکه، تغییر تنظیمات پیکربندی می‌تواند آسیب‌پذیری‌های مهمی را ایجاد کند.
نسخه‌های منتشر شده نرم‌افزار باید شامل تنظیمات پیش‌فرض ایمن و هشدارهایی در مورد انحراف از آن تنظیمات باشند. تأیید امنیتی باید شامل تمام تنظیمات معتبر بوده و اطمینان حاصل شود که تنظیمات نامعتبر توسط بررسی‌های زمان اجرا شناسایی خواهند شد. به خریدار باید هشدار داده شود یا مطلع شود که تنظیمات، غیر از آن‌هایی که صریحاً مجاز هستند، ادعاهای امنیتی توسعه‌دهنده را باطل می‌کند.
مجوزهای فایل نیز نقش مهمی در حفظ امنیت دارند. مالکیت فایل و مجوزهای خواندن، نوشتن، اجرا و حذف فایل‌ها باید با استفاده از اصل حداقل دسترسی ایجاد شوند. مهم نیست که نرم‌افزار چقدر دقیقاً تأیید شده باشد، اگر نرم‌افزار قابل تغییر باشد یا اگر فایل‌ها توسط اشخاص غیرمجاز قابل دسترسی باشند، امنیت ممکن است از بین برود. توانایی تغییر مجوزهای فایل باید به اشخاص صریحاً مجاز محدود شود که با اثر به خطر افتادن نرم‌افزار متناسب باشد. نقش مجوزهای فایل در حفظ ادعاهای امنیتی باید واضح باشد.
پیکربندی شبکه نیز بخش حیاتی دیگری از امنیت نرم‌افزار است. پیکربندی امن به اقدامات امنیتی اشاره دارد که هنگام ساختن و نصب رایانه‌ها و دستگاه‌های شبکه برای کاهش آسیب‌پذیری‌های سایبری پیاده‌سازی می‌شوند. درست مانند مجوزهای فایل که برای حفظ یکپارچگی مداوم نرم‌افزار حیاتی هستند، پیکربندی شبکه دسترسی غیرمجاز به نرم‌افزار را محدود می‌کند. ارزیابی باید تمام تنظیمات معتبر شبکه را پوشش دهد و اطمینان حاصل کند که تنظیمات نامعتبر توسط بررسی‌های زمان اجرا شناسایی خواهند شد. نقش پیکربندی شبکه در محدوده کاربردی بودن ادعاهای امنیتی باید واضح باشد.
پیکربندی عملیاتی نیز از اهمیت بالایی برخوردار است. نرم‌افزار در زمینه استفاده به کار می‌رود. افزودن یا حذف اجزای وابسته به یک محصول نرم‌افزار یا محصولی که به آن وابسته است، می‌تواند فرضیاتی را که امنیت نرم‌افزار و عملکرد سیستم به آن‌ها بستگی دارد، تأیید یا رد کند. به ویژه در مورد کد منبع؛ کد اجرایی خود به اجزایی مانند کامپایلرها و مفسرها وابسته است. در چنین مواردی، امنیت نرم‌افزار می‌تواند توسط محصولات دیگر باطل شود. ارزیابی باید در محیطی انجام شود که با پیکربندی‌های عملیاتی مورد انتظار مطابقت داشته باشد. هر گونه وابستگی ادعاهای امنیتی به نرم‌افزار پیاده‌سازی شده یا سایر جنبه‌های پیکربندی عملیاتی باید توسط توسعه‌دهنده صریحاً مشخص شود. یکپارچگی زنجیره تامین باید حفظ شود.

جمع‌بندی

دستورالعمل‌های صحت‌سنجی حداقل استانداردهای نرم‌افزار توسط توسعه‌دهنده شامل یک مجموعه جامع از فنون و روش‌ها برای اطمینان از امنیت و کارایی نرم‌افزار است. از مدلسازی تهدید و تحلیل‌های ایستا و پویا گرفته تا اصلاح اشکالات و بهبود فرآیند، این دستورالعمل‌ها به توسعه‌دهندگان کمک می‌کند تا نرم‌افزارهایی با کیفیت بالا و امنیتی را توسعه دهند که بتوانند نیازهای سازمانی و کاربران را به بهترین نحو ممکن برآورده کنند. بهبود مداوم روش‌ها و استفاده از فناوری‌های جدید نیز بخشی از این فرآیند است که به توسعه‌دهندگان کمک می‌کند تا با چالش‌های جدید روبرو شوند و نرم‌افزارهایی با امنیت و کارایی بالا تولید کنند. این رویکرد جامع به توسعه و ارزیابی نرم‌افزار، نه تنها به بهبود امنیت و کارایی کمک می‌کند، بلکه اعتماد کاربران به محصولات نرم‌افزاری را نیز افزایش می‌دهد و باعث می‌شود تا سازمان‌ها بتوانند به اهداف خود در زمینه امنیت و کارایی دست یابند.