شرکت مایکروسافت بهتازگی اطلاعاتی از توسعه یک سیستم جدید منتشر کرده است که بر طبق آن با استفاده از مخازن دادههای AzureDevOps و GitHub و به کمک هوش مصنوعی میتواند باگها را شناسایی کرده و آنها براساس الویت دستهبندی کند.
به ادعای مایکروسافت، سیستم هوش مصنوعی که برای تشخیص باگها طراحی شده است، میتواند تا ۹۹ درصد باگهای امنیتی و غیرامنیتی را تشخیص داده و ازهم متمایز کند و سپس با دقت حدود ۹۷ درصد از میان این باگها، حیاتیترین و مهمترینها را شناسایی کند. بهنظر میرسد مایکروسافت قصد دارد تا در ماه آینده، چگونگی عملکرد این سیستم را بر روی GitHub قرار داده و در کنار آن مدلهایی بهعنوان مثال و همچنین باقی منابعی که در این سیستم مورد استفاده قرار گرفتهاند نیز معرفی خواهند شد.
مطابق با گزارشهای منتشر شده، این سیستم جدید برروی دادههای ۱۳ میلیون پروژه و همچنین باگهایی که از ۴۷ هزار توسعهدهنده ثبت شدهاند، آزمایش شده و بر روی سرور AzureDevOps مایکروسافت (ویژوال استودیو آنلاین) و مخازن گیتهاب ذخیره شده است تا متخصصان این حوزه را پشتیبانی کند. طبق تخمین شرکت Carologix، توسعهدهندگان سیستمهای مختلف، در هر ۱۰۰۰ خط کدنویسی، چیزی حدود ۷۰ باگ درست میکنند که برطرف کردن هرکدام از این باگها ۳۰ برابر خود کدنویسی زمان صرف میکند. همین مسئله هزینهای ۱۱۳ میلیارد دلاری در هرسال برای ایالات متحده دربر دارد تا بتوانند این باگها را شناسایی و تعمیر کنند.
طبق ادعای مایکروسافت متخصصان امنیت فرایند، پرورش دادههای اولیه را در طول ایجاد ساختار این سیستم، تائید کردهاند. این اتفاق درحالی رخ داده است که نمونهگیری آماری بهگونهای بود که مقدار مناسبی از دادهها برای بررسی توسط کارشناسان جمعآوری شد. بعد از آن دادههای جمعآوری شده در بازنماییهایی که به آنها بردار ویژگی میگویند رمزگذاری شدند و به این طریق محققان مایکروسافت توانستند با استفاده از روش فرایند دومرحلهای، طراحی سیستم را آغاز کنند. مدل طراحی شده توسط مایکروسافت ابتدا توانست روش دستهبندی باگهای امنیتی و غیرامنیتی را یاد بگیرد و سپس توانست تشخیص دهد که چگونه باید برچسبهای شدت مثل بحرانی یا مهم یا کماثر را به باگهای امنیتی نسبت دهد.
مدلی که مایکروسافت طراحی کرده است، میتواند از دو روش برای پیشبینی باگها استفاده کند. الگوریتم فراوانی وزنی TF-IDF اولین تکنیک این سیستم است که اطلاعات را بازیابی میکند. این تکنیک به میزانی که یک کلمه در یک سند تکرار شده باشد، به آن کلمه ارزش داده و سپس بررسی میکند که آن کلمه به چه میزان با عناوینی که در آن مجموعه حضور دارند تا چه اندازه مرتبط است. طبق گفته مایکروسافت، عناوین باگها کوتاه و معمولا شامل ۱۰ کلمه هستند. تکنیک دوم این مدل، از طریق مدل رگرسیون لجستیک انجام میشود. در این تکنیک با استفاده از تابع لجستیک، احتمال وجود کلاس معین یا رویداد را مدلسازی خواهد کرد.
مایکروسافت اعلام کرده است که این مدل از درون گسترش مییابد؛ این مسئله به این معنیست که دائما توسط دادههایی که متخصصان امنیتی آنها را تائید کردهاند آموزش داده میشود. این متخصصان بهصورت دائمی تعداد باگهایی که در زمان توسعه نرمافزار تولید میشوند را کنترل میکنند.
مدیر ارشد برنامه امنیتی مایکروسافت، اسکات کریستینسن، گفته است:
توسعهدهندگان نرمافزار همواره فهرست بلندبالای ویژگیها و باگهایی را در نظر دارند که باید درست شوند. کارشناسان امنیتی نیز تلاش میکنند با استفاده از ابزار خودکار اولویتبندی باگهای امنیتی به آنها کمک کنند؛ اما اغلب اوقات، مهندسان زمان زیادی روی باگهای نادرست هدر میدهند یا ممکن است متوجه برخی آسیبپذیریهای بحرانی و حیاتی طبقهبندینشده نشوند.
دانشمند داده و علوم کاربردی مایکروسافت، مایانا پریرا، اضافه کرده است:
با کنارهم قراردادن مدلهای یادگیری ماشینی و کارشناسان امنیتی، خواهیم توانست تشخیص و طبقهبندی باگهای امنیتی را بهطرز چشمگیری بهبود ببخشیم.
علاوه بر مایکروسافت، شرکتهای بزرگ دیگری نیز هستند که توسط هوش مصنوعی میتوانند باگهای امنیتی را شناسایی کنند، مثلا شرکت آمازون با استفاده از سرویس CodeGuru که بر اساس مرور کد و اپلیکیشنها توسعه یافته است میتواند نشت منابع و اتلاف چرخههای پردازشی را شناسایی کند. شرکت فیسبوک نیز با استفاده از ابزاری به نام SapFix، قبل از اینکه اطلاعات باگها برای مهندسان ارسال شود، آنها را بهصورت خودکار ترمیم میکند سپس لیستی از باگها و راهحلشان را برای تایید نهایی برای مهندسال ارسال میکند. همچنین همین شرکت با استفاده از ابزار دیگری به نام Zoncola، اعمال و رفتار پایگاههای کد را بررسی کرده و شاخههای انفرادی و یا فعل و انفعالات مسیرهای مختلف برنامه را برای یافتن مشکلات احتمالی بررسی میکند.
لینک کوتاه: