3

SonarQube + FindBugs + FindSecBugs プラグインを使用してコードをスキャンしようとしています。

アイデアはコードの脆弱性を検出することであり、github プロジェクトの件名にあるように、scala で動作します https://github.com/find-sec-bugs/find-sec-bugs

ドキュメントにあるようにプラグインをインストールし、いくつかのスキャンを試みましたが、scala の脆弱性に関連するものは何も表示されません。

コードが本当に良いのか、それとも SonarQube の設定に誤りがあるのか​​を調べるために、http://find-sec-bugs.github.io/bugs.htmにアクセスして、例の 1 つを取り上げました。 (潜在的なパス トラバーサル)、サンプル コードを挿入し、もう一度スキャナーを実行しました。見つかりませんでした。

ルール (セキュリティ - 潜在的なパス トラバーサル (ファイル読み取り)) は品質プロファイルでアクティブ化され、Java プロファイルであるにもかかわらず、前述の例のコードは Scala であるため、プロジェクトに割り当てられます。

find-sec-bugs に由来するすべてのルールが Java のものであることに気付きました。そのため、それらが scala で機能しないのか、それとも機能させるために他にできることがあるのだろうかと考えています。

事前に感謝します。追加情報が必要な場合はお知らせください。喜んで提供させていただきます。

4

1 に答える 1

3

その主な理由は、いくつかの理由で Scala のバグ パターンが明示的に除外されていることです。

多言語サポートに関して、SonarQube アーキテクチャには多くの制限があります。これは、ソナー ソース プラグインの設計と密接に関係しています。

  • 言語に同じ拡張子を付けることはできません ( https://jira.sonarsource.com/browse/MMF-672 )
  • 複数の言語に適用されるルールをリポジトリに含めることはできません。(Scala のみのコードがある場合、1 つの Java ファイルが存在しない限り、Java コア ルールは有効になりません)
  • センサーは言語定義に結合されます (それを宣言する最も一般的なプラグインによって異なります)。
  • などなど。

ソース: https://github.com/spotbugs/sonar-findbugs/issues/108#issuecomment-305909652

すべての除外はここで確認できます: 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"]
于 2018-12-06T13:34:49.293 に答える