web-dev-qa-db-ja.com

SonarQubeルール:Spring Bootアプリケーションでの「コマンドライン引数の使用はセキュリティ上重要」

SonarQubeは、非常に基本的なSpring Bootアプリケーションで重大なセキュリティ問題を示しています。メインメソッドで。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

SonarQubeが私にMake sure that command line arguments are used safely here.を求めています

StackOverflowとGoogleの両方でこれを検索しましたが、この問題に関するコメントを1つも見つけられなかったことに驚いています。 SpringApplication.runメソッドの内部には、すでにいくつかのセキュリティチェックが含まれていると思います。また、SpringApplication.runを呼び出す前に、メインメソッドの引数をサニタイズする人を覚えていません。 false positiveとしてタグ付けし、次に進みたいだけです。

この質問の一部もここで尋ねられます: SonarQubeは、Spring FrameworkコントローラーおよびSpring Frameworkアプリケーションのメインクラスでセキュリティエラーを示します

誤検知ですか?

11
leventunver

コマンドライン引数を使用していない場合は、runメソッドでargsパラメータについて言及しないようにすることができます。以下のコードのようにしてください。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

これにより、sonarqubeホットスポットの問題が削除されます。

1
sachin

いいえ、それは確かに重大なセキュリティ問題です。それはそれを使用する前に引数をサニタイズするように求めているだけです。単純なアプリケーションではこのような懸念は必要ありませんが、本番アプリケーションでは大きな問題になる可能性があります。

詳細は https://rules.sonarsource.com/Java/RSPEC-4823?search=Make%20sure%20that%20command%20line%20arguments%20are%20used%20safely%20here にあります。

1

これはソナーのドキュメントに従ってsecurity hotspotとしてマークされているようです。それは述べています

脆弱性とは異なり、セキュリティホットスポットは必ずしも攻撃の対象となる問題ではありません。代わりに、セキュリティホットスポットは、手動で確認する必要のあるセキュリティの影響を受けやすいコードを強調表示します。確認すると、修正が必要な脆弱性、または脅威がないことがわかります。

詳細はこちら セキュリティホットスポット

このルール RSPEC-482 または S482 に従って、コマンドライン引数は、

  • コマンドライン引数は、最初にサニタイズされることなく使用されます。
  • アプリケーションは、コマンドライン引数を介して機密情報を受け入れます。

アプリケーションがこのカテゴリに該当する場合、それらは間違いなくアプリケーションのセキュリティ上の問題である可能性があります。

1
Coder