SPRING.AUTHZ.ABSENT

このチェッカーは、保護されたリソースに対する承認をコードが行うかを検証し、プロジェクト API 設定に保護されたリソースが含まれていないケースを報告します。

脆弱性とリスク

攻撃者は、重要データの直接の変更や読み取り、特権機能へのアクセスなどを通じて特権を取得する可能性があります。

軽減と防止

アプリケーション内のすべての特権資産 (機密データを表示する Web ページ、特権機能や管理機能が含まれる Web サイトセクションなど) を特定します。アプリケーションにおけるユーザー役割とそれらのアクセス権限を特定します。資産にアクセスするための特権がユーザーにあるかどうかを常にチェックします。プロジェクトで承認が必要な 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.PUT ,"/admin/*").hasRole("ADMIN")
            .and().httpBasic();
      }

Klocwork は、6 行目で「保護されたリソース 'setting' が設定に欠落している」という SPRING.AUTHZ.ABSENT 欠陥を報告します。どの antMatchers() にも "/setting" API が存在しないため、ユーザーは承認なしで "/setting" 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.PUT ,"/admin/*").hasRole("ADMIN")
           .antMatchers("/setting").hasRole("ADMIN")
          .and().httpBasic();
     }

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

関連チェッカー

拡張機能

このチェッカーは、プロジェクトで使用されている保護された API へのアクセスがユーザーに承認されているかどうかをチェックするように調整する必要があります。この調整は、.jkb ファイル内の @CheckerParam オプションを使用して行うことができます。詳細については、Java 解析のチューニングを参照してください。