Сканирование кода GitHub вышло из стадии бета-тестирования и теперь общедоступно. Эта технология была частью покупки Semmle, поставщика платформы анализа кода, которую GitHub сделал в 2019 году.
Сканирование кода основано на CodeQL - инструменте, который многие группы исследователей безопасности используют для семантического анализа кода. Этот инструмент стал открытым после покупки Semmle.
Как работает сканирование кода
Цель новой функции - помочь разработчикам предотвратить проблемы с безопасностью кода. Более того, вместо того, чтобы посылать исчерпывающие предложения из линтера, новый анализ кода по умолчанию запускает только активные правила безопасности, так что команда может сосредоточиться на текущей задаче.
Сканирование кода интегрировано с GitHub Actions или любой другой средой CI/CD. Это сделано для максимальной гибкости. Функция сканирует код во время его создания и генерирует оценки его безопасности с предложенными действиями в pull requests, чтобы автоматизировать безопасность в рамках работы.
Сканирование кода GitHub
Сканирование основано на открытом SARIF (формате обмена результатами статического анализа). Это интероперабельный стандарт, выявляющий недостатки программного обеспечения и потенциальные уязвимости безопасности. Сканирование расширяемо, так что можно использовать решения с открытым исходным кодом и тестирование безопасности коммерческих статических приложений (SAST). Разработчики также могут интегрировать внешние механизмы сканирования.
Числа
GitHub также может похвастаться некоторыми результатами. С момента выхода бета-версии в мае 2020 года 12000 репозиториев были просканированы 1,4 миллиона раз. Кроме того, было обнаружено и исправлено более 20 000 проблем безопасности, включая удаленное выполнение кода, внедрение SQL и межсайтовый скриптинг (XSS).
Резюме
Сканирование кода доступно бесплатно для общедоступных репозиториев. Частные репозитории можно сканировать с помощью GitHub Enterprise через GitHub Advanced Security. GitHub также призывает помочь защитить открытую экосистему и добавить что-то из растущего числа запросов CodeQL.