آسیبپذیری روز صفر در واقع یک باگ در قطعهای از یک نرم افزار است که برای برنامه نویسان، فروشنده و مسئول برنامه ناشناخته است و از آنجایى که هیچ اطلاعاتى از این آسیبپذیری در دسترس نیست، در نتیجه وصله امنیتی نیز موجود نخواهد داشت. به عبارتی دیگر، این آسیبپذیری، توسط شخص یا اشخاصى که بطور مستقیم درگیر این نرم افزار نیستند، کشف میشود.
اصطلاح روز صفر به روزهای بین زمان کشف یک آسیبپذیری و اولین حمله از طریق آن اشاره دارد و پس از آنکه آسیبپذیری روز صفر کشف و اعلام شد، از آن به عنوان آسیبپذیری روز nام (n-day) یاد میشود.
در اینجا نحوه کار و جدول زمانی آسیبپذیری روز صفر آورده شده است:
1. یک شخص یا شرکت قطعهای از یک نرم افزار که شامل آسیبپذیری است را ایجاد میکند، اما این موضوع براى توسعهدهندگان و برنامهنویسان آن نرم افزار ناشناخته است.
2. معمولا قبل از اینکه مسئولان و توسعهدهنده نرم افزارمشکل آسیب پذیری را شناسایی و رفع کنند، این آسیب پذیری توسط افراد دیگرى شناسایی میشود.
3. کسی که آسیبپذیری را کشف میکند، برای این آسیب پذیری یک کد مخرب ایجاد می کند.
4. کد مخرب ساخته و منتشر میشود.
5. مسئولان و توسعهدهندگان نرم افزار از حفره امنیتی محصول خود مطلع میشوند.
6. این آسیبپذیری، دیگر به عنوان یک آسیب پذیری روز صفر محسوب نمیشود.
7. یک وصله امنیتى براى رفع آسیبپذیرى منتشر میشود.
هشدار: به همین دلیل نیاز است که حتما وصلههای امنیتى که براى محصولات نرم افزارى منتشر مىشوند را دریافت و نصب کنید تا از خطرات آسیبپذیریها در نسخه های قبلی آن نرم افزار مصون بمانید.
اغلب اوقات، آسیب پذیری روز صفر به سرعت کشف نمىشود و ممکن است روزها یا ماهها طول بکشد تا این نقص شناسایى شود و این همان چیزی است که این نوع از آسیب پذیریها را بسیار خطرناک میکند.
در مورد آسیبپذیری روز صفر چه کاری میتوانید انجام دهید؟
کارهای زیادی وجود ندارد که به عنوان یک مدیر و یا کاربر بخواهید انجام دهید. بهترین کاری که میتوانید به عنوان کاربرانجام دهید این است که هرگز از نسخه اولیه یا آزمایشى یک نرم افزار استفاده نکرده و سعى کنید از نسخه نهایى آن استفاده کنید.
در صورتی که از اولین نسخه یک محصول نرمافزارى استفاده نکنید، ممکن است در برابر خطرات آسیبپذیری روز صفر در امان بمانید. البته این بدان معنی نیست که حتما نسخههاى اولیه، خطر روز صفر را داشته باشند اما در صورتی که این آسیبپذیری در آن نسخه وجود داشته باشد، احتمال دارد تا ارائه نسخه بعدی، کشف نشده باقی بماند. چنانکه کماکان میشنویم که آسیب پذیریهای جدیدى در برخى از نرم افزارها شناسایى مىشوند که مدتها کشف نشده بودند.
اگر شما یک توسعهدهنده نرم افزار هستید، بهترین کاری که مىتوانید انجام دهید این است که افرادی را استخدام کنید تا نسخه بتا یا آزمایشی محصول شما را مورد تست قرار دهند. در این خصوص میتوان گفت که نرم افزارهای منبع باز(open source) نسبت به نرم افزارهاى اختصاصی ایمنتر هستند. چرا که نسخه آزمایشی نرمافزارهاى منبع باز پس از انتشار در اختیار همه افراد قرار میگیرد تا بتوانند آن را تست کنند. اما نرم افزارهای اختصاصی اغلب نسخههای آزمایشى را در دسترس عموم قرار نمی دهند. فلذا وقتی که یک برنامه کاربردی تعداد کاربران تست کننده محدودی داشته باشد، اشکالات کمتری کشف خواهد شد و این امر ممکن است احتمال آسیبپذیری روز صفر را افزایش دهد.
در پایان، کاربران عادى باید از پذیرش نسخههای آزمایشى منتشر شده خودداری کنند و همچنین طراحان محصولات نرمافزارى نیز باید قبل از انتشار هر نسخه، آن را آزمایش کنند.
کاری که شما به عنوان یک کاربر استفاده کننده میتوانید انجام دهید این است که گزارشهای مربوط به اشکالات را به توسعهدهندگان و شرکتها اعلام کنید. گزارش اشکالات راهی عالی برای برای برنامهنویسان و طراحان نرم افزاری است تا مشکلات موجود در نرم افزارهایشان را حل کنند چراکه ممکن است مشکلی که شما گزارش میکنید منجر به شناسایی و کشف یک آسیبپذیرى روز صفر شود.