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

اسکن کد GitHub از قوانین تجزیه و تحلیل CodeQL با دقت تعریف شده برای شناسایی آسیب پذیری های امنیتی بالقوه در کمین کد منبع استفاده می کند. ایجاد دستی این قوانین وظیفه ای است که به متخصصان امنیتی نیاز دارد تا کتابخانه های موجود و همچنین کدهای خصوصی را برای شناسایی الگوهای آسیب پذیری موجود تجزیه و تحلیل کنند. با توجه به تعداد زیاد کتابخانه های موجود، این کار به وضوح یک کار دلهره آور است. GitHub می‌گوید که یادگیری ماشینی می‌تواند با ایجاد امکان آموزش مدلی برای شناسایی کد آسیب‌پذیر بر اساس تعداد زیادی نمونه، در این امر کمک کند.
بر اساس آزمایش‌های گیت هاب، مشخص شد که یادگیری نظارت‌شده، که در آن کارشناسان هر قطعه کد را آسیب‌پذیر یا ایمن می‌نامند، بهتر از یادگیری بدون نظارت عمل می‌کند. به‌جای اینکه از کارشناسان بخواهد میلیون‌ها قطعه را برچسب‌گذاری کنند، GitHub از قوانین موجود CodeQL به عنوان یک اوراکل واقعی استفاده می‌کند که می‌تواند بگوید آیا یک قطعه کد معین ایمن است یا خیر. به گفته گیت هاب، این امکان برچسب گذاری خودکار ده ها میلیون قطعه کد از بیش از صد هزار مخزن عمومی را با تلاش اندک فراهم می کند. داده های به دست آمده به عنوان یک مجموعه آموزشی برای ساخت یک مدل پیش بینی استفاده می شود. گیت هاب برای اینکه بتواند ارزیابی کند که آیا این مدل واقعاً می‌تواند آسیب‌پذیری‌های جدید را پیش‌بینی کند و نه فقط آسیب‌پذیری‌هایی که قبلاً توسط قوانین CodeQL که به عنوان اوراکل استفاده می‌شدند، دستگیر شده‌اند، یک راه‌حل هوشمندانه ابداع کرده است. این شامل آموزش مدل بر روی برچسب‌هایی است که با استفاده از مجموعه قدیمی‌تری از قوانین CodeQL تولید می‌شوند و سپس آن را در برابر آسیب‌پذیری‌های شناسایی شده توسط مجموعه جدیدتری از قوانین CodeQL آزمایش می‌کنند. با فرض اینکه مجموعه قوانین جدیدتر تعداد آسیب پذیری های به درستی شناسایی شده را افزایش می دهد، این رویکرد در واقع می تواند نشان دهد که آیا مدل پیش بینی به طور موثری تشخیص داده است که آسیب پذیری هایی را که قبلاً در مجموعه قوانین قدیمی گنجانده نشده بودند، شناسایی کند.
جنبه قابل توجهی از کل فرآیند مربوط به نحوه شناسایی ویژگی های گیت هاب در یک قطعه کد است. در اینجا دوباره، GitHub از قدرت قوانین CodeQL استفاده می‌کند که اطلاعات غنی را در خود محصور می‌کند. بنابراین، به جای استفاده از تکنیک های NLP برای تلقی کد به عنوان متن، گیت هاب قادر است ویژگی هایی مانند مسیر دسترسی، نام API، بدنه تابع محصور کننده و غیره را شناسایی کند. علاوه بر این، علاوه بر ویژگی‌های معنی‌دار واضح، GitHub می‌تواند ویژگی‌های بالقوه جالبی را که کمتر برای چشم انسان مفید هستند، مانند نمایه آرگومان برای فراخوانی تابع، کشف کند.

بیشتر بدانید: https://lnkd.in/dxfymPHP