GitHub объявил о добавлении в сервис Code scanning экспериментальной системы машинного обучения для выявления распространённых типов язвимостей в коде. На этапе тестирования новая функциональность пока доступна только для репозиториев с кодом на языках JavaScript и TypeScript. Отмечается, что применение системы машинного обучения позволило заметно расширить спектр выявляемых проблем, при анализе которых система теперь не ограничивается только проверкой типовых шаблонов. В частности, новая система позволяет находить ошибки, приводящие к межсайтовому скриптингу (XSS), искажению файловых путей (например, через указание “/..”), подстановке SQL- и NoSQL-запросов.
Сервис Code scanning позволяет выявлять уязвимости на ранней стадии разработки через сканирование каждой операции “git push” на предмет потенциальных проблем. Результат прикрепляется непосредственно к pull-запросу. Ранее проверка осуществлялась с использованием движка CodeQL, анализирующего шаблоны с типовыми примерами уязвимого кода (CodeQL позволяет сформировать шаблон уязвимого кода для выявления наличия подобной уязвимости в коде других проектов). Новый движок, использующий машинное обучение, может определять ранее не известные уязвимости так как он не привязан к перебору шаблонов кода, описывающим конкретные уязвимости. Ценой подобной возможности является увеличение числа ложных срабатываний по сравнению с проверками на основе CodeQL.