SPRING.AUTHC.ABSENT

重要な機能に対する設定の欠落

このチェッカーは、重要な指摘の認証が行われるかを検証し、重要なリソースがプロジェクト API 設定に含まれていない場合に指摘を報告します。

脆弱性とリスク

重要なリソースに対する認証がソフトウェアでまったく行われないと、攻撃者によって機密データへのアクセス権の取得、管理機能の実行、任意のコードの実行などが行われる可能性があります。

軽減と防止

アプリケーション内のすべての特権資産 (機密データを表示する Web ページ、特権機能や管理機能が含まれる Web サイトセクションなど) を特定します。アプリケーションにおけるユーザー役割とそれらのアクセス権限を特定します。プロジェクト API 設定で、常に重要リソースについて適切なセットアップを行います。

脆弱コード例

Spring には、認証を検証できるセキュリティコンポーネントが付属しています。

コピー
  @Configuration
  @EnableWebSecurity
  public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
      @Override
      protected void configure(HttpSecurity http) throws Exception {
           
           http.authorizeRequests()
           .antMatchers(HttpMethod.POST,"/version ").hasAnyRole("ADMIN","USER")
           .antMatchers(HttpMethod.POST,"/api-docs ").anonymous()
          .antMatchers(HttpMethod.PUT,"/profile").authenticated()
          .and().httpBasic();
     }

Klocwork は、9 行目で「設定セクションに重要リソース 'admin' が欠落している」という SPRING.AUTHC.ABSENT 欠陥を報告します。どの antMatchers() にも "/admin" API が存在しないため、ユーザーは認証なしで "/admin" API にアクセスできます。

修正コード例

コピー
  @Configuration
  @EnableWebSecurity
  public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
      @Override
      protected void configure(HttpSecurity http) throws Exception {
           
           http.authorizeRequests()
           .antMatchers(HttpMethod.POST,"/version ").hasAnyRole("ADMIN","USER")
           .antMatchers(HttpMethod.POST,"/api-docs ").anonymous()
          .antMatchers(HttpMethod.PUT,"/profile").authenticated()
          .antMatchers(HttpMethod.PUT ,"/admin").hasRole("admin")
          .and().httpBasic();
     }

修正されたこの例では、重要リソースリスト内のすべての要素が設定内に存在するため、Klocwork はもはや欠陥を報告しません。

関連チェッカー

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。

拡張機能

このチェッカーはプロジェクトで使用される特定の重要 API を探すように調整する必要があります。この調整は、.jkb ファイル内の @CheckerParam オプションを使用して行うことができます。詳細については、Java 解析のチューニングを参照してください。