Уязвимости обхода пути не найдены в коде Scala
Я пытался сканировать мой код с помощью плагинов SonarQube + FindBugs + FindSecBugs.
Идея состоит в том, чтобы обнаружить уязвимости в коде, и, как говорится в теме проекта github, он работает со scala https://github.com/find-sec-bugs/find-sec-bugs
Я установил плагин, как сказано в документации, и попробовал несколько сканирований, но ничего, связанного с уязвимостями в scala, не происходит.
Итак, чтобы выяснить, действительно ли код был хорош или была неправильная конфигурация в моих настройках SonarQube, я пошел на http://find-sec-bugs.github.io/bugs.htm, я взял один из примеров (Потенциальный обход пути), вставил пример кода, и я снова запустил сканер. Не было найдено
Правило (Безопасность - Обход потенциального пути (чтение файла)) активируется в профиле качества, и, несмотря на то, что это профиль Java, он присваивается проекту, поскольку код в упомянутом примере - Scala.
Я заметил, что все правила, относящиеся к find-sec-bugs, являются java, поэтому мне интересно, не работают ли они над scala или есть что-то еще, что я могу сделать, чтобы это сработало.
Заранее спасибо, и дайте мне знать, если вам нужна дополнительная информация, я был бы рад предоставить вам.
1 ответ
Похоже, что основной причиной этого является то, что шаблоны ошибок Scala явно исключены по некоторым причинам:
С архитектурой SonarQube существует множество ограничений в отношении поддержки нескольких языков. Он тесно связан с плагином Sonar-Source.
- Язык не может иметь такое же расширение ( https://jira.sonarsource.com/browse/MMF-672)
- Репозиторий не может содержать правило, применимое к нескольким языкам. (Если бы у вас был только код Scala, основные правила Java не были бы включены, если у вас нет одного Java-файла)
- Сенсор связан с определением языка (зависит от самого популярного плагина, который его объявляет).
- и т. д.
Источник: https://github.com/spotbugs/sonar-findbugs/issues/108
Все исключения можно увидеть здесь: https://github.com/spotbugs/sonar-findbugs/commit/526ca6b29fae2684f86b1deba074a4be8a05b67e
В частности, для Scala:
static exclusions = ['CUSTOM_INJECTION',
'SCALA_SENSITIVE_DATA_EXPOSURE',
'SCALA_PLAY_SSRF',
'SCALA_XSS_TWIRL',
'SCALA_XSS_MVC_API',
'SCALA_PATH_TRAVERSAL_IN',
'SCALA_COMMAND_INJECTION',
"SCALA_SQL_INJECTION_SLICK",
"SCALA_SQL_INJECTION_ANORM",
"PREDICTABLE_RANDOM_SCALA"]