Перейти к публикации

elbrus

Анализируем код на уязвимость

Рекомендованные сообщения

После обширного тестирования GitHub открыл в открытом доступе функцию сканирования кода на уязвимости. Любой желающий может запустить сканер на собственном репозитории и найти уязвимости до того, как они пойдут в продакшн. Сканер действует для репозиториев на C, C++, C#, JavaScript, TypeScript, Python и Go. https://github.com/features/security

Сканер основан на технологии CodeQL, которую разработала компания Semmle, купленная GitHub в прошлом году. CodeQL считается первым в мире сканером на уязвимости. В мае 2020 года началось бета-тестирование на GitHub. Теперь функция доступна для всех. https://github.blog/2019-09-18-github-welcomes-semmle/

Как включить

Сканирование запускается со вкладки Security в репозитории.

2f6ad5f400465d95eea2eef9713e8b16.png

Там нажимаем Set up code scanning.

cf52662f0c8efc41626a1cc6693d660f.png

В следующем окне нужно выбрать workflow, который мы хотим использовать для сканирования. Дело в том, что CodeQL поддерживает подключение сторонних движков. Для стандартного движка выбираем «Анализ CodeQL».

 

63cfc85a33cb8b90cd0a7c0e7975747a.png

В принципе, данный workflow можно настроить: включить сканирование по расписанию, сканирование на каждый push или пул-реквест, использовать собственный конфигурационный файл, запустить дополнительные поисковые запросы при сканировании. https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#running-additional-queries

 

Затем нажимаем кнопку Start commit и пишем название для нового коммита.

4fb29b13e8a46b7cdea66b9b0f4bd0bd.png

Выбираем коммит в главную ветку или создать новую ветку и запустить пул-реквест.

23405fd5491444dda8b55faef5c175db.png

Это всё. В конце нажимаем кнопку Commit new file или Propose new file.

После указания коммита сканер уязвимостей будет анализировать ваш код в соответствии с частотой, указанной в файле workflow.


После активации CodeQL можно смотреть результаты и изменять параметры сканирования. https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning

Движок CodeQL 

iu1gwzbasu6rn6bot08khjvzmjk.gif

Движок CodeQL ищет потенциальные уязвимости по словарю из более 2000 запросов. Словарь составлен GitHub и сообществом пользователей, которые тестировали систему. Эта база будет постоянно пополняться, да и каждый может дополнить её в индивидуальном порядке, просто отредактировав конфигурационный файл.

Инструмент сканирования построен по стандарту статического анализа кода SARIF (OASIS Static Analysis Results Interchange Format) и поддерживает подключение сторонних движков, которые будут работать в едином интерфейсе. Также поддерживается экспорт результатов через единые API.

С момента представления в мае 2020 года отсканировано более 12 000 репозиториев (всего 1,4 млн проходов) и найдено более 20 000 проблем безопасности, включая уязвимости удалённого исполнения кода (RCE), SQL-инъекции и межсайтовый скриптинг (XSS).

Разработчики и мейнтейнеры исправили 72% найденных уязвимостей в течение 30 дней после их обнаружений, до слияния кода с основной веткой. Это хороший результат, потому что по статистике менее 30% найденных уязвимостей исправляются в течение месяца после обнаружения. https://www.veracode.com/state-of-software-security-report

По итогам бета-тестирования в опенсорсный словарь запросов сделано 132 коммита от сообщества. Чтобы пользователи GitHub могли запускать сторонние инструменты, заключены соглашения с более чем десятком разработчиков систем безопасности и опенсорсных инструментов для статического анализа, сканирования контейнеров и валидации инфраструктуры как кода (Infrastructure-as-Code; IaC) — это подход для управления и описания инфраструктуры через конфигурационные файлы, а не через ручное редактирование конфигураций на серверах или интерактивное взаимодействие.

Дополнительно к поиску уязвимостей GitHub также сотрудничает с 24 сторонними сервис-провайдерами, чтобы находить в коде их секреты, которые нельзя публиковать в открытом виде, такие как ключи доступа. Среди партнёров — AWS, Google Cloud, Azure, Dropbox, Slack, Discord, npm, Stripe и Twilio, Сканирование на секреты происходит автоматически и в публичных, и в приватных репозиториях.

epy3tgayw5ombrae1c4ieiwckpw.png

Сканирование кода является бесплатным для публичных репозиториев и входит в пакет Advanced Security для GitHub Enterprise (то есть это платная услуга). Некоторые экзотические опции (список разрешённых IP-адресов, поддержка SAML, LDAP и др.) доступны только в платном варианте. https://resources.github.com/code-scanning/

В теории автоматическая проверка всех репозиториев — это хорошее дело, но на практике не очень приятно постоянно отвлекаться на сообщения о ложных «уязвимостях», особенно в dev-репозиториях или устаревших архивах, которые никогда не пойдут в продакшн. Такое очень быстро надоедает. Некоторые авторы говорят, что в их собственном коде большинство уязвимостей — на самом деле шум или не применимо в конкретном случае.Впрочем, в эту бочку мёда нужно добавить ложку дёгтя. Некоторые авторы опенсорсных программ жалуются (1, 2), что сканирование даёт слишком много ложноположительных срабатываний. https://news.ycombinator.com/item?id=24647496

То есть сканер GitHub может вызвать все симптомы состояния, известного как «усталость от безопасности» (security fatigue). Подробнее об этом состоянии см. в научной статье (doi: 10.1109/MITP.2016.84). Там говорится, что это состояние у человека подкрепляет его нежелание следовать рекомендациям по безопасности и влияет на общий анализ выгоды и затрат. https://www.computer.org/csdl/magazine/it/2016/05/mit2016050026/13rRUxASu7P

Поделиться сообщением


Ссылка на сообщение
3 часа назад, jackgow сказал:

ну вот мне интерестно,ТС ты проверял свою софтину?

Думаешь там вирус?

Поделиться сообщением


Ссылка на сообщение
11 часов назад, jackgow сказал:

ну вот мне интерестно,ТС ты проверял свою софтину?

вроде без вирусов,просто старая инфа походу

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...