Sobelow-это инструмент статического анализа, ориентированный на безопасность для Elixir & The Phoenix Framework. Для исследователей безопасности это полезный инструмент для быстрого просмотра точек интересов. Для сопровождающих проектов его можно использовать для предотвращения введения ряда общих уязвимостей.
В настоящее время Sobelow обнаруживает некоторые типы следующих проблем безопасности:
Потенциальные уязвимости помечаются в разных цветах в зависимости от уверенности в их незащищенности. Высокая уверенность - красная, средняя уверенность желтая, а низкая уверенность - зеленая.
Открытие обычно помечается «низкая уверенность», если она выглядит так, как функция может использоваться небезопасно, но нельзя достойно определить, принимает ли функция, поставляемое пользователем вход. то есть, если открытие помечено зеленым, это может быть критически неуверенным, но это потребует большей ручной проверки.
Примечание. Этот проект находится в постоянной разработке, и с течением времени будут отмечены дополнительные уязвимости. Если вы столкнетесь с ошибкой или хотели бы запросить дополнительные функции или проверки безопасности, откройте проблему!
Чтобы использовать Sobelow, вы можете добавить его в зависимости вашего приложения.
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
endВы также можете установить Sobelow по всему миру, выполнив следующее из командной строки:
$ mix escript.install hex sobelow
Для установки из главной ветви, а не последнего выпуска, можно использовать следующую команду:
$ mix escript.install github nccgroup/sobelow
После установки самый простой способ сканирования проекта Phoenix - запустить следующее из корня проекта:
$ mix sobelow
Примечание. Любые аргументы пути должны быть абсолютными путями или относительно корня приложения.
--root или -r -Укажите корневую каталог приложения. Принимает аргумент пути, например ../my_project .
--verbose или -v -распечатать фрагменты кода и дополнительные данные о поиске.
--ignore или -i -игнорировать данные о поисках. Принимает запятую список имен модулей, например XSS.Raw,Traversal .
--ignore-files -игнорировать файлы. Принимает запятую список имен файлов, например, config/prod.exs .
--details или -d -Получите детали поиска. Принимает одно имя модуля, например, Config.CSRF .
--all-details -Получите подробности всех типов нахождения.
--private -Пропустить проверки обновления.
--router -Укажите местоположение маршрутизатора. Это необходимо использовать только в том случае, если местоположение маршрутизатора нестандартно. Принимает аргумент пути, например my/strange/router.ex .
--exit -вернуть ненулевой статус выхода при или выше достоверного порога low , medium или high . По умолчанию false что возвращает статус нулевого выхода
--threshold -Результаты возврата на уровне достоверности или выше достоверного уровня low (по умолчанию), medium или high .
--format или -f -укажите результаты вывода формата. Принимает формат, например, txt или json .
Обратите внимание, что такие варианты, как --verbose , не будут работать с форматом json . Все форматированные результаты json содержат ключ type , file и line . Другие ключи могут варьироваться.
--quiet -вернуть одну строку, указывающую на количество результатов. В противном случае, не возвращайте вывода, если нет выводов.
--compact -минимальные однострочные выводы с выводами, раскрашенными в соответствии с уверенностью.
--flycheck -минимальные однострочные результаты, совместимые с инструментами на основе Flycheck.
--save-config -генерирует файл конфигурации на основе параметров командной строки. См. Файлы конфигурации для получения дополнительной информации.
--config -Запустите Sobelow с файлом конфигурации. См. Файлы конфигурации для получения дополнительной информации.
--mark-skip-all -отметьте все отображаемые выводы как Scippable.
--clear-skip -Чистая конфигурация, созданная- --mark-skip-all .
--skip -игнорируйте выводы, которые были отмечены для прохождения. Смотрите ложные позитивы для получения дополнительной информации.
--version -выводит текущую версию Sobelow. Это полезно для шагов CI или интеграции с другими инструментами, такими как Salus.
Sobelow позволяет пользователям сохранять часто используемые параметры в файле конфигурации. Например, если вы постоянно работаете:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
Вы можете использовать флаг --save-config для создания файла конфигурации .sobelow-conf :
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
Эта команда создаст файл .sobelow-conf в корне вашего приложения. Вы можете редактировать этот файл напрямую, чтобы внести изменения.
Вы также можете запустить команду без каких -либо параметров:
$ mix sobelow --save-config
Когда вы впервые запускаете, используя этот пакет - сгенерированный файл конфигурации будет заполнен значениями по умолчанию для каждой опции. (Это помогает быстро включить этот пакет в ранее существовавшую кодовую базу.)
Теперь, если вы хотите запустить Sobelow с сохраненной конфигурацией, вы можете запустить Sobelow с флагом --config .
$ mix sobelow --config
Sobelow предпочитает чрезмерную отчетность по сравнению с недооценкой. Таким образом, вы можете найти ряд ложных срабатываний в типичном сканировании. Эти результаты могут быть индивидуально игнорированы, добавив комментарий # sobelow_skip вместе со списком модулей перед определением функции.
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end При интеграции Sobelow в новый проект может быть большое количество ложных срабатываний. Чтобы отметить все печатные выводы как ложные позитивы, запустите Sobelow с флагом --mark-skip-all .
После того, как вы отметили соответствующие выводы, запустите Sobelow с флагом --skip .
$ mix sobelow --skip
В то время как комментарии # sobelow_skip могут отмечать только выводы на уровне функции (и поэтому нельзя использовать для пропуска вопросов конфигурации), флаг --mark-skip-all можно использовать для пропуска любого типа поиска.
Категории результатов разбиты на модули. Эти модули могут затем использоваться для игнорирования классов результатов (через параметры ignore и skip ), либо для получения деталей уязвимости (через опцию details ).
Этот список и другая полезная информация можно найти в командной строке:
$ mix help sobelow
Чтобы запустить Sobelow по отношению к всем дочерним приложениям в приложении зонтика с одной командой, вы можете добавить псевдоним для Sobelow в вашем файле root mix.exs :
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end Если вы хотите использовать файлы конфигурации в приложении зонтика, создайте .sobelow-conf в каждом дочернем приложении и используйте флаг --config .
При сканировании проекта Sobelow иногда проверяет обновления и распечатает предупреждение, если будет доступна новая версия. Sobelow отслеживает последнюю проверку обновлений, создав файл .sobelow в корне отсканированного проекта.
Если эта функциональность не желательна, флаг --private флаг можно использовать со сканированием.