Автоматическая проверка приложения на уязвимости

Есть два отличных гема, один из которых выполняет проверку кода вашего приложения на известные уязвимости, а второй ищет уязвимые гемы и предлагает пути решения (обновление, конечно же). Первый гем brakeman, второй bundler-audit.

Коротенькая заметка как всё это установить и настроить.

Добавляем в Gemfile в группу development следующие строки:

group :development do
  gem 'brakeman', require: false
  gem 'bundler-audit', require: false
end

Выполняем в консоли:

bundle

Создаём в директории проекта файл .git/hooks/pre-commit следующего содержания:

#!/bin/sh

red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
NC='\033[0m'

# Security audits
bin/bundle exec brakeman --no-progress -z
if [ $? -ne 0 ]; then
  echo "${red}[Brakeman][Error]: Fix the issues and commit again${NC}"
  exit 1
fi

# Checks for vulnerable gems
bin/bundle exec bundle-audit update
bin/bundle exec bundle-audit -v
if [ $? -ne 0 ]; then
  echo "${red}[Bundle Audit][Error]: Update the gems and commit again${NC}"
  exit 1
fi

exit 0

Если файл pre-commit у вас отсутствует — просто копируйте и вставляйте приведённый выше код. Если же у вас уже имеются в нём свои наработки, тогда смело дёргайте строки с 8 по 21 и используйте их в своём файле.

Теперь на любой коммит будет запускаться сначала brakeman, проверяющий скрипты вашего приложения на уязвимости, а затем их bundle-audit, проверяющий дополнительно и установленные гемы на уязвимости. Пока найденные проблемы не будут устранены — вы не сможете отправить свои правки в репозиторий.

Можно, конечно, подключить всё это на guard, но мне кажется, что по каждому чиху запускать проверки не самая лучшая идея. Если вдруг вам всё-таки хочется это, то вот инструмент для этого: guard-brakeman.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *