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 解析のチューニングを参照してください。