GitHub стартира система за машинно обучение за намиране на уязвимости в кода

Лого на GitHub

GitHub разкриха преди няколко дни добавянето на експерименти със система за машинно обучениеl към услугата за сканиране на кодове за идентифициране на често срещани типове уязвимости В кода. С това базираната на CodeQL технология за анализ на код на GitHub е преработена и вече използва машинно обучение (ML), за да открие потенциални уязвимости в сигурността в кода.

И това е този GitHub придоби технологията за CodeQL като част от придобиването на Semmie. CodeQL се използва от екипи за изследване на сигурността за извършване на семантичен анализ на кода, а GitHub го направи с отворен код.

С тези модели CodeQL може да идентифицира повече ненадеждни потоци от потребителски данни и следователно повече потенциални уязвимости в сигурността.

Забелязва се, че използването на система за машинно обучение е позволило значително да се разшири кръгът от идентифицирани проблеми, при чийто анализ системата вече не се ограничава до проверка на типични модели и не е обвързана с известни рамки.

От проблемите, идентифицирани от новата система, се споменават грешки, водещи до междусайтови скриптове (XSS), изкривяване на файловите пътища (например чрез индикацията "/.."), заместване на SQL и NoSQL заявки. .

Сканирането на код вече може да намери повече потенциални уязвимости в сигурността чрез използване на нов модел за дълбоко обучение. Тази експериментална функция е достъпна в публична бета версия за хранилища на JavaScript и TypeScript на GitHub.com.

Новият инструмент на GitHub fue пуснат като безплатна публична бета версия За всички потребители функцията използва машинно обучение и дълбоко обучение за сканиране на кодови бази и идентифициране на често срещани уязвимости в сигурността, преди продуктът да бъде изпратен.

Експерименталната функция в момента е достъпна за всички потребители на платформа, включително потребителите на GitHub Enterprise като функция за разширена защита на GitHub и може да се използва за проекти, написани на JavaScript или TypeScript.

С бързото развитие на екосистемата с отворен код има непрекъснато нарастваща дълга опашка от библиотеки, които се използват по-рядко. Използваме примери от ръчно създадени CodeQL заявки, за да обучаваме модели за дълбоко обучение да разпознават библиотеки с отворен код, както и вътрешно разработени библиотеки с затворен код.

Инструментът е проектиран да търси четирите най-често срещани уязвимости които засягат проекти, написани на тези два езика: междусайтови скриптове (XSS), инжектиране на маршрут, инжектиране на NoSQL и инжектиране на SQL.

Услугата за сканиране на код ви позволява да откривате уязвимости в ранен етап на разработка, като сканирате всяка git push операция за потенциални проблеми.

Резултатът е прикрепен директно към заявката за изтегляне. Преди това проверката се извършваше с помощта на двигателя CodeQL, който анализира модели с типични примери за уязвим код (CodeQL ви позволява да генерирате шаблон на уязвим код, за да откриете наличието на подобна уязвимост в кода на други проекти).

С новите възможности за анализ, сканирането на кода може да генерира още повече сигнали за четири често срещани модела на уязвимост: Cross-Site Scripting (XSS), Path Injection, NoSQL Injection и SQL Injection. Заедно тези четири типа уязвимости представляват много от скорошните уязвимости (CVE) в екосистемата JavaScript/TypeScript и подобряването на способността на сканирането на код за откриване на такива уязвимости в началото на процеса на разработка е от ключово значение за подпомагане на разработчиците да пишат по-сигурен код.

Новият двигател за машинно обучение може да идентифицира неизвестни досега уязвимости тъй като не е обвързано с итерацията на кодови модели, които описват специфични уязвимости. Цената на такава възможност е увеличаване на броя на фалшивите положителни резултати в сравнение с проверките, базирани на CodeQL.

Накрая за тези, които се интересуват да знаят повече за това, можете да проверите детайлите В следващия линк.

Също така е важно да се спомене, че на етапа на тестване новата функционалност в момента е достъпна само за хранилища с JavaScript и TypeScript код.