در حال حاضر ، تعداد زیادی از ابزارها برای خودکار کردن جستجو برای آسیب پذیری های برنامه تولید شده اند. این مقاله برخی از آنها را پوشش می دهد.

مقدمه

تجزیه و تحلیل کد استاتیک ، تجزیه و تحلیل نرم افزاری است که بر روی کد منبع برنامه ها انجام می شود و بدون اجرای واقعی برنامه مورد مطالعه اجرا می شود.

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

برای شناسایی آسیب پذیری ها ، از ابزارهای مختلفی استفاده می شود ، به عنوان مثال ، تجزیه و تحلیل های استاتیک کد منبع برنامه ، که در این مقاله نمای کلی از آنها ارائه شده است.

طبقه بندی آسیب پذیری های امنیتی

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

طبقه بندی آسیب پذیری های امنیتی بسته به خطاهای نرم افزار:

  • سرریز بافر. این آسیب پذیری ناشی از عدم کنترل بیش از حد آرایه حافظه در هنگام اجرای برنامه است. هنگامی که یک بسته داده بسیار بزرگ از یک بافر با اندازه محدود سرریز می کند ، محتویات سلول های حافظه خارجی دوباره رونویسی می شوند و برنامه خراب و از بین می رود. بر اساس موقعیت بافر در حافظه فرآیند ، سرریز بافر در پشته (سرریز بافر پشته) ، heap (سرریز بافر پشته) و مناطق داده های استاتیک (سرریز بافر bss) وجود دارد.
  • آسیب پذیری ورودی آلوده. هنگامی که ورودی کاربر بدون کنترل کافی به مفسر برخی از زبانهای خارجی (معمولاً پوسته یونیکس یا SQL) منتقل شود ، آسیب پذیری ورودی آلوده می تواند ایجاد شود. در این حالت ، کاربر می تواند داده های ورودی را به گونه ای تعیین کند که مفسر راه اندازی شده دستوری را اجرا کند که کاملاً متفاوت از دستورالعمل نویسندگان برنامه آسیب پذیر باشد.
  • خطاهای آسیب پذیری رشته را قالب بندی کنید. این نوع آسیب پذیری امنیتی ، زیر کلاس آسیب پذیری ورودی آلوده است. این امر به دلیل عدم کنترل کافی پارامترها هنگام استفاده از توابع ورودی / خروجی قالب printf ، fprintf ، scanf و ... از کتابخانه استاندارد C رخ می دهد. این توابع به عنوان یکی از پارامترها یک رشته کاراکتر را در نظر می گیرند که قالب ورودی یا خروجی آرگومان های بعدی را به تابع مشخص می کند. اگر کاربر بتواند قالب بندی را به تنهایی تنظیم کند ، این آسیب پذیری می تواند در نتیجه استفاده ناموفق از توابع قالب بندی رشته ایجاد شود.
  • آسیب پذیری در نتیجه خطاهای زمان بندی (شرایط مسابقه). مشکلات مرتبط با چند وظیفه ای منجر به شرایطی می شوند که "شرایط مسابقه" نامیده می شوند: برنامه ای که برای اجرا در یک محیط چند وظیفه ای طراحی نشده است ممکن است تصور کند که به عنوان مثال ، پرونده هایی که استفاده می کند توسط برنامه دیگری قابل اصلاح نیست. در نتیجه ، مهاجمی که به موقع محتوای این پرونده های کاری را جایگزین کند ، می تواند برنامه را مجبور به انجام اقدامات خاصی کند.

البته ، علاوه بر موارد ذکر شده ، انواع دیگری از آسیب پذیری های امنیتی نیز وجود دارد.

بررسی اجمالی تحلیلگرهای موجود

برای شناسایی آسیب پذیری های امنیتی در برنامه ها ، از ابزارهای زیر استفاده می شود:

  • اشکال زدایی پویا. ابزاری که به شما امکان می دهد برنامه را در حین اجرای آن اشکال زدایی کنید.
  • تجزیه و تحلیل های استاتیک (اشکال زدایی استاتیک). ابزاری که از اطلاعات جمع شده در طی تجزیه و تحلیل استاتیک یک برنامه استفاده می کنند.

تجزیه و تحلیل های ثابت به مکان هایی در برنامه اشاره می کنند که ممکن است خطا پیدا شود. این قطعات کد مشکوک ممکن است حاوی خطایی باشند یا کاملاً ایمن باشند.

این مقاله مروری بر چندین تجزیه و تحلیل ایستای موجود دارد. بیایید نگاهی دقیق به هر یک از آنها بیندازیم.

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

راه حل ما ظهور اطلاعات مربوط به آسیب پذیری در سیستم عامل ها (ویندوز ، لینوکس / یونیکس) ، نرم افزارهای اداری و برنامه ای ، نرم افزار سخت افزار ، ابزارهای امنیت اطلاعات را کنترل می کند.

منابع داده

پایگاه داده سیستم مدیریت آسیب پذیری نرم افزار Prospective Monitoring به طور خودکار از منابع زیر به روز می شود:

  • بانک اطلاعات تهدیدات امنیت اطلاعات (BDU BI) FSTEC روسیه.
  • بانک اطلاعات ملی آسیب پذیری (NVD) NIST.
  • کلاه قرمزی بوگزیلا.
  • ردیاب اشکال امنیتی دبیان.
  • لیست پستی CentOS.

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

آسیب پذیری های نرم افزار را کنترل کنید

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

به عنوان مثال ، در مدل چرخه حیات توسعه دهنده نرم افزار ایمن Hewlett Packard Enterprise Secure Software (SSDLC) ، کنترل کتابخانه شخص ثالث مرکزی است.

سیستم ما وجود آسیب پذیری ها را در نسخه های موازی / ساخته های یک محصول نرم افزاری رصد می کند.

این مانند این عمل می کند:

1. توسعه دهنده لیستی از کتابخانه ها و م componentsلفه های شخص ثالث را که در محصول استفاده می شود به ما می دهد.

2. ما روزانه بررسی می کنیم:

ب آیا روش هایی برای از بین بردن آسیب پذیری های قبلا کشف شده وجود دارد.

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

فرکانس هشدارهای سیستم مدیریت آسیب پذیری قابل تنظیم است ، اما اگر آسیب پذیری با نمره CVSS بیشتر از 7.5 پیدا شود ، توسعه دهندگان هشدارهای فوری دریافت می کنند.

ادغام با ViPNet TIAS

مجتمع سخت افزاری و نرم افزاری سیستم تجزیه و تحلیل سیستم ViPNet Threat Intelligent حملات رایانه را به طور خودکار تشخیص می دهد و حوادث را بر اساس رویدادهای امنیتی اطلاعات دریافت شده از منابع مختلف شناسایی می کند. منبع اصلی رویدادها برای ViPNet TIAS ViPNet IDS است ، که با استفاده از پایگاه های قانون تصمیم گیری AM Rules که توسط "Perspective Monitoring" ایجاد شده است ، ترافیک ورودی و خروجی شبکه را تجزیه و تحلیل می کند. برخی از امضاها برای شناسایی بهره برداری از آسیب پذیری ها نوشته شده است.

اگر ViPNet TIAS حادثه امنیت اطلاعاتی را شناسایی کند که در آن از یک آسیب پذیری سو استفاده شده است ، تمام اطلاعات مربوط به این آسیب پذیری به طور خودکار از CMS وارد کارت حادثه می شود ، از جمله روش های حذف یا جبران تأثیر منفی.

سیستم مدیریت حوادث همچنین در بررسی حوادث امنیت اطلاعات ، اطلاعاتی در مورد شاخص های سازش و گره های احتمالی زیرساخت اطلاعات تحت تأثیر حادثه در اختیار تحلیلگران قرار می دهد.

نظارت بر آسیب پذیری در سیستم های اطلاعاتی

مورد استفاده دیگر از سیستم مدیریت آسیب پذیری اسکن درخواستی است.

مشتری لیستی از سیستم و نرم افزار کاربردی و اجزای نصب شده روی گره (AWP ، سرور ، DBMS ، PAC SZI ، تجهیزات شبکه) را با استفاده از ابزارهای داخلی یا اسکریپت توسعه یافته توسط ما ، از نرم افزار و اجزای سیستم و برنامه تولید می کند ، این لیست را به سیستم کنترل منتقل می کند و گزارشی از آسیب پذیری های شناسایی شده و اعلان های دوره ای در مورد آنها را دریافت می کند. وضعیت

تفاوت بین سیستم و اسکنرهای آسیب پذیری رایج:

  • نیازی به نصب عوامل نظارت بر گره ها نیست.
  • این یک بارگذاری در شبکه ایجاد نمی کند ، زیرا خود معماری راه حل عامل ها و سرورهای اسکن را فراهم نمی کند.
  • سخت افزار را تحت فشار قرار نمی دهد ، زیرا لیست اجزای سازنده توسط دستورات سیستم یا اسکریپت سبک منبع باز سبک ایجاد می شود.
  • احتمال نشت اطلاعات را از بین می برد. نظارت احتمالی نمی تواند به طور قابل اتکایی در مورد مکان یا عملکرد فیزیکی و منطقی یک گره در یک سیستم اطلاعاتی اطلاعاتی داشته باشد. تنها اطلاعاتی که از محیط کنترل شده مشتری خارج می شود ، یک فایل txt با لیستی از م softwareلفه های نرم افزار است. این پرونده از نظر محتوا بررسی شده و توسط مشتری در CMS بارگذاری می شود.
  • برای کارکرد سیستم ، ما به حساب در گره های کنترل شده احتیاج نداریم. اطلاعات توسط مدیر سایت از طرف خود وی جمع آوری می شود.
  • تبادل ایمن اطلاعات از طریق ViPNet VPN ، IPsec یا https.

اتصال به سرویس مدیریت آسیب پذیری نظارت چشمگیر به مشتری کمک می کند تا نیاز ANZ.1 "شناسایی ، تجزیه و تحلیل آسیب پذیری های سیستم اطلاعات و از بین بردن سریع آسیب پذیری های تازه شناسایی شده" از دستورات شماره 17 و 21 FSTEC را برآورده کند. شرکت ما دارای مجوز FSTEC روسیه برای حفاظت فنی از موارد محرمانه است اطلاعات

هزینه

حداقل هزینه 25000 روبل در سال برای 50 گره متصل به سیستم با یک قرارداد معتبر برای اتصال به سیستم است

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

آسیب پذیری به دلیل اضافه شدن اجزای شخص ثالث یا کد رایگان (منبع باز) به نرم افزار ظاهر می شود. کد خارجی اغلب "همانطور که هست" بدون تجزیه و تحلیل دقیق و آزمایش امنیتی استفاده می شود.

نباید حضور برنامه نویسان داخلی در تیم را که عمداً توابع یا عناصر غیرمستند اضافی را در محصول ایجاد شده وارد می کنند ، کنار گذاشت.

طبقه بندی آسیب پذیری های نرم افزار

آسیب پذیری در نتیجه خطاهایی رخ می دهد که در مرحله طراحی یا هنگام نوشتن کد برنامه رخ می دهد.

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

  1. تشخیص و رفع اشتباهات در طراحی سخت ترین است. این موارد عدم دقت در الگوریتم ها ، بوک مارک ها ، ناسازگاری در رابط بین ماژول های مختلف یا پروتکل های تعامل با سخت افزار ، معرفی فناوری های بهینه نیست. از بین بردن آنها یک فرآیند بسیار زمانبر است ، همچنین به این دلیل که آنها می توانند در موارد غیر آشکار ظاهر شوند - به عنوان مثال ، هنگامی که از حجم مشخص شده از ترافیک فراتر رفته یا تعداد زیادی تجهیزات اضافی متصل شده است ، که تأمین سطح امنیتی مورد نیاز را پیچیده می کند و منجر به ظهور راه های عبور از دیوار آتش می شود.
  2. آسیب پذیری های پیاده سازی در مرحله نوشتن یک برنامه یا معرفی الگوریتم های امنیتی در آن ظاهر می شوند. این یک سازمان نادرست از فرآیند محاسباتی ، نقص نحوی و منطقی است. با این حال ، این خطر وجود دارد که این نقص منجر به سرریز بافر یا سایر مشکلات شود. یافتن آنها زمان زیادی می برد و حذف به معنای اصلاح قسمتهای خاصی از کد دستگاه است.
  3. خطاهای پیکربندی سخت افزار و نرم افزار معمول است. دلایل رایج آنها عدم کیفیت کافی و عدم آزمایش برای عملکرد صحیح عملکردهای اضافی است. رمزهای عبور بسیار ساده و حساب های پیش فرض بدون تغییر نیز می توانند در این گروه قرار بگیرند.

طبق آمار ، آسیب پذیری ها به ویژه اغلب در محصولات محبوب و گسترده - سیستم عامل های دسک تاپ و موبایل ، مرورگرها - مشاهده می شوند.

خطرات استفاده از برنامه های آسیب پذیر

برنامه هایی که بیشترین آسیب پذیری در آنها مشاهده می شود تقریباً در همه رایانه ها نصب شده است. علاقه مستقیم مجرمان اینترنتی در یافتن چنین ایراداتی و نوشتن برای آنها وجود دارد.

از آنجا که از کشف آسیب پذیری تا انتشار پچ (پچ) مدت زمان زیادی طول می کشد ، فرصت کافی برای آلوده سازی سیستم های رایانه ای از طریق حفره های امنیتی در کد وجود دارد. در این حالت ، کاربر فقط باید یک بار یک فایل PDF مخرب را با سو explo استفاده یک بار باز کند ، پس از آن مهاجمان به داده ها دسترسی پیدا می کنند.

در حالت دوم ، عفونت طبق الگوریتم زیر رخ می دهد:

  • کاربر از طریق یک ایمیل از طریق یک فرستنده معتبر ایمیل فیشینگ دریافت می کند.
  • پرونده بهره برداری به نامه پیوست شده است.
  • اگر کاربر بخواهد پرونده را باز کند ، رایانه به ویروس ، تروجان (باج افزار) یا سایر برنامه های مخرب آلوده می شود.
  • مجرمان اینترنتی به سیستم غیرمجاز دسترسی پیدا می کنند.
  • داده های ارزشمند به سرقت می رود.

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

برای به حداقل رساندن تعداد حفره های موجود در نرم افزار ، استفاده از SDL (Security Development Lifecycle) ضروری است. از فناوری SDL برای کاهش تعداد اشکالات در برنامه ها در تمام مراحل ایجاد و نگهداری استفاده می شود. بنابراین ، هنگام طراحی نرم افزار ، متخصصان و برنامه نویسان امنیت اطلاعات تهدیدات سایبری را شبیه سازی می کنند تا آسیب پذیری ها را جستجو کنند. در حین برنامه نویسی ، ابزارهای خودکار در این فرآیند گنجانده می شوند ، بلافاصله نقایص احتمالی را گزارش می دهند. توسعه دهندگان به دنبال کاهش قابل توجه عملکرد در دسترس کاربران تأیید نشده هستند و در نتیجه سطح حمله را کاهش می دهند.

برای به حداقل رساندن تأثیر و آسیب آسیب پذیری ها ، رعایت برخی قوانین لازم است:

  • سریعاً اصلاحات (وصله های) منتشرشده را برای برنامه ها نصب کنید یا (ترجیحاً) حالت بروزرسانی خودکار را فعال کنید.
  • در صورت امکان ، برنامه های مشکوکی را نصب نکنید که کیفیت و پشتیبانی فنی آنها س raiseالاتی را ایجاد می کند.
  • برای جستجوی خطاهای امنیتی و در صورت لزوم ، به روزرسانی نرم افزار ، از اسکنرهای آسیب پذیری ویژه یا عملکردهای ویژه محصولات آنتی ویروس استفاده کنید.

روش دیگر برای بررسی این مشکل این است که شرکت ها باید سریع واکنش نشان دهند ، درصورتی که یک برنامه کاربردی آسیب پذیر است. این امر به بخش IT نیاز دارد تا در نهایت بتواند با استفاده از ابزارهای استاندارد اتوماسیون و صنعت ، برنامه ها ، قطعات و وصله های نصب شده را ردیابی کند. تلاش های صنعتی برای استاندارد سازی برچسب های نرم افزاری (19770-2) وجود دارد که اینها پرونده های XML هستند که با یک برنامه ، م ،لفه و / یا پچ نصب می شوند و نرم افزار نصب شده را شناسایی می کنند و در مورد یک م componentلفه یا پچ ، کدام یک از برنامه ها هستند. برچسب ها دارای اطلاعات ناشر معتبر ، اطلاعات نسخه ، لیستی از پرونده ها با نام پرونده ، هش فایل امن و اندازه هستند که می تواند برای تأیید وجود برنامه نصب شده روی سیستم و عدم تغییر باینری ها توسط شخص ثالث مورد استفاده قرار گیرد. این برچسب ها توسط ناشر به صورت دیجیتالی امضا می شوند.

وقتی یک آسیب پذیری مشخص شد ، بخشهای IT می توانند با استفاده از نرم افزار مدیریت دارایی خود بلافاصله سیستمهای دارای نرم افزار آسیب پذیر را شناسایی کنند و می توانند برای به روزرسانی سیستمها گام بردارند. برچسب ها می توانند بخشی از وصله یا به روزرسانی باشند که می توانند برای تأیید نصب پچ استفاده شوند. به این ترتیب ، دپارتمان های فناوری اطلاعات می توانند از منابعی مانند پایگاه ملی آسیب پذیری NIST به عنوان ابزاری برای مدیریت ابزارهای مدیریت دارایی خود استفاده کنند ، بنابراین به محض ارسال آسیب پذیری توسط شرکت به NVD ، IT می تواند بلافاصله آسیب پذیری های جدید را با آنها مقایسه کند. تا حالا.

گروهی از شرکتها از طریق یک سازمان غیر انتفاعی IEEE / ISTO بنام TagVault.org (www.tagvault.org) با دولت ایالات متحده در زمینه اجرای استاندارد ISO 19770-2 کار می کنند که این سطح اتوماسیون را امکان پذیر می کند. در برهه ای از زمان ، این برچسب های مربوط به این پیاده سازی احتمالاً در چند سال آینده در نرم افزارهای فروخته شده به دولت ایالات متحده اجباری است.

بنابراین ، در پایان ، روش خوبی است که درمورد کدام برنامه ها و نسخه های نرم افزاری خاص استفاده نکنید ، اما این همانطور که قبلاً گفته شد دشوار است. شما می خواهید مطمئن شوید که یک موجودی نرم افزاری دقیق و به روز دارید ، که به طور منظم با لیستی از آسیب پذیری های شناخته شده مانند NVID از NVD مقایسه می شود و IT می تواند بلافاصله برای یادآوری تهدید اقدام کند. این همراه با جدیدترین تشخیص نفوذ ، اسکن آنتی ویروس و سایر روش های جلوگیری از محیط زیست ، دست کم به خطر انداختن محیط زیست بسیار دشوار خواهد بود ، و اگر / در صورت بروز ، برای مدت طولانی شناسایی نخواهد شد.