
CVE-2021-21234の概念実証エクスプロイト。spring-boot-actuator-logviewのディレクトリトラバーサル脆弱性であり、baseパラメータを介して不正なファイル読み取りを可能にします。
CVE-2021-21234 Spring Boot ディレクトリトラバーサル
spring-boot-actuator-logview は、Spring Boot のアクチュエータエンドポイントとしてシンプルなログファイルビューアを追加するライブラリです。これは Maven パッケージ「eu.hinsch:spring-boot-actuator-logview」です。バージョン 0.2.13 以前の spring-boot-actuator-logview にディレクトリトラバーサルの脆弱性が存在します。このライブラリの本質は、admin(Spring Boot アクチュエータ)HTTP エンドポイントを介してログファイルのディレクトリを公開することです。表示するファイル名とベースフォルダ(ログフォルダのルートからの相対パス)は、どちらもリクエストパラメータで指定できます。ファイル名パラメータはディレクトリトラバーサル攻撃を防ぐためにチェックされています(そのため filename=../somefile は機能しません)が、ベースフォルダパラメータのチェックが不十分であるため、filename=somefile&base=../ とすることでログ記録の基本ディレクトリ外のファイルにアクセスできます。この脆弱性はバージョン 0.2.13 で修正されました。0.2.12 のユーザーは、そのリリースに他の変更がないため、問題なくアップデートできるはずです。この脆弱性に対する回避策は、依存関係の更新または削除以外にありません。ただし、アプリケーションを実行するユーザーが、アプリケーションの実行に不要なディレクトリへの読み取りアクセス権を削除することで、影響を制限できます。また、リバースプロキシの背後にアプリケーションをデプロイすることで、logview エンドポイントへのアクセスを制限できます。
eu.hinsch.spring.boot.actuator.logview.LogViewEndpoint#view
view 関数は filename パラメータに対して正当性チェックを行いますが、base パラメータに対しては正当性チェックを行いません。
GET パス:
- "{{BaseURL}}/manage/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # Windows
- "{{BaseURL}}/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # Windows
- "{{BaseURL}}/manage/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # Linux
- "{{BaseURL}}/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # Linux