週間ウェブ攻撃動向
週ごとのウェブ攻撃の傾向により、ウェブ攻撃が最も流行する時期を確認することができます。
これにより、ピーク時のウェブ攻撃を防止し、対応するための事前計画を立てることができます。
以下のグラフは、2024年7月時点でAIWAFが検知したウェブ攻撃を示しています。
2024年7月は1日平均26万件以上の攻撃を検知しており、22日が最も多い。
22日に最も攻撃を試行した脆弱性であるSQLインジェクションは、当社のAIWAFで最も検知条件が多い脆弱性です。
しかし、SQLインジェクション攻撃は、新しい攻撃タイプや回避手法が多いため、常に監視しています。
攻撃タイプ別ウェブ攻撃の傾向
検出ログに基づく攻撃タイプ別のウェブ攻撃の傾向により、その月に最も多く発生した攻撃を確認できます。
これに基づいて、基本的なウェブ攻撃対応ガイドラインを策定し、これらのタイプの攻撃を防止し、対応することができます。
以下のグラフは、2024年7月時点でAIWAFが検知したWeb攻撃を示しています。
ルール別ウェブ攻撃動向
SQLインジェクション(42.23%)が最も一般的な攻撃タイプで、アプリの脆弱性(17.68%)、デフォルトページ(16.3%)、ディレクトリトラバーサル(9.95%)が続いた。
SQLインジェクションは、OWASPによって1位にランク付けされているように、最も多様で危険な攻撃です。
これは、ユーザの要求に基づいて動的にデータを生成する SQL 文に悪意のある SQL 文を押し込む攻撃で、脆弱なアプリケーションを認証させ たり、異常な SQL 結果を返させたりします。
クエリ値に以下のような構文があったら、攻撃を疑ってください。
これは、ユーザーのリクエストに基づいて動的にデータを生成するSQL文に悪意のあるSQL文を強制的に組み込む攻撃で、脆弱なアプリケーションを認証不能にしたり、異常なSQL結果を返したりします。
このような脆弱性は、不適切なコーディングプラクティス、設定ミス、不十分なセキュリティ対策の結果である可能性があります。
一般的な経験則として、アプリのプログラムを使用する際には、許可されたファイルに加え、許可されていないファイルも疑ってください。
過去3ヶ月のウェブ攻撃傾向グラフのまとめ
4月
5月
6月
攻撃者IPトップ30
脆弱性分析レポート
[Jenkinsの任意ファイルリークの脆弱性]。
1. 概要
Jenkinsは、継続的インテグレーションとデプロイメント(CI/CD)を組み合わせたパイプラインのための、人気のあるオープンソースの自動化サーバーである。
ソフトウェアプロジェクトの開発、テスト、デプロイを自動化するプラットフォームをプログラマーに提供する。
画像ソース : https://www.linkedin.com/pulse/you-aware-recent-jenkins-vulnerability-cve-2024-23897-amit-dash-lgi6e
これらのサーバーで発見された多くの脆弱性のうち、最近発表されたCVE-2024-23897についての分析をまとめた。
2. 攻撃タイプ
Jenkinsには、スクリプトまたはシェル環境からのインタラクションを可能にする統合コマンドラインインタフェース(CLI)が付属しています。
CLIは、CLIコマンド処理中にJenkinsコントローラからのコマンド引数とパラメータを解析するためにargs4jライブラリを活用する。
args4jの1つの機能は、ファイルパスの後に「@」文字を追加することでファイルの内容を置き換えますが、これは元々ユーザビリティを向上させるために設計されたものですが、深刻なセキュリティ脆弱性になっています。
バージョン2.441とLTS 2.426.2では、この機能がデフォルトで有効になっており、チェックが行われていません。
この欠陥を悪用することで、攻撃者はJenkinsコントローラプロセスのデフォルトの文字エンコーディングを使用して、ファイルシステム上の任意のファイルにアクセスすることができます。
JenkinsのCLIツールでは、「@」を先頭に持つ引数は、引数にアクセスするために開く必要があるファイルと誤って解釈されます。
状況によっては、CLIユーザーが誤ってエラー・メッセージでこれらのファイルからの行を受信します。
ソース : https://hackyboiz.github.io/2024/03/04/ogu123/cve-2024-23897/
これにより攻撃者は、Jenkinsコントローラプロセスのデフォルトの文字エンコーディングを使用して、Jenkinsコントローラのファイルシステムから任意のファイルを読み取ることができる。
この脆弱性を悪用する方法は2つあります。
2.1 Jenkins-cli.jarの使用
一般的なアプローチでは、ウェブソケットまたはSSH経由で動作するJenkins-cli.jarを活用する。
具体的には、Jenkins CLIツールのshutdown、enable-job、help、connect-nodeなどのコマンドを操作して、Jenkinsサーバー上のファイルに不正にアクセスし、内容を読み取る。
下図は、ファイルを読み取るためにJenkins CLIでhelpコマンドが実行されている様子です。
ソース : https://www.uptycs.com/blog/jenkins-exploit-cve-2024-23897
下の画像は、Jenkinsサーバーから読み込まれたファイルの内容の一例です。
2.2 POSTリクエストを送信する
もう一つの方法は、http://jenkins/cli?remoting=false に2つのPOSTリクエストを送ることである。
この手法では、ダウンローダーとアップローダーを使用する必要がある。ダウンローダーはCLIコマンドの 応答を取得し、アップローダーはリクエスト本文で指定されたCLIコマンドを実行する。
ダウンローダーとアップローダー間の接続は、セッションヘッダー中の UUIDを利用して確立される。
3. 何をすべきか
Jenkinsの任意ファイルリーク脆弱性(CVE-2024-23897)には、一般的に2つの対応方法があります。
- Jenkins CLIへのアクセスを無効にする
- Jenkinsバージョン442およびLTS 2.426.3への最新アップデート。このパッチは、脆弱性の原因となるコマンド・パーサ機能を無効にします。
当社のAIWAF製品は、この脆弱性を悪用する攻撃構文を「Jenkinsにおける任意のファイルの読み取り」というパターンで検出しています。
4. 結論
CVE-2024-23897は、Jenkinsにおける重大な脆弱性を浮き彫りにし、ソフトウェア自動化環境の安全性を確保するための継続的な課題を浮き彫りにしています。
この脆弱性により、攻撃者は CLI 引数の処理を悪用して Jenkins サーバから任意のファイルを読み取ることが可能となり、重大なセキュリティリスクを引き起こします。
CLI引数を操作して任意のファイルの内容を含めることができるため、機密データが不正に暴露され、Jenkinsサーバとそれが管理する広範なインフラのセキュリティが損なわれる可能性があります。
この脆弱性の発見は、Jenkinsのような自動化ツールの開発と保守における、真摯なセキュリティプラクティスの重要性を再認識させるものである。
CI/CDパイプラインにJenkinsを使用している組織は、潜在的な悪用から保護するために、デプロイメントの評価と修復を優先すべきである。
当社は、AIWAF製品において、Jenkinsサーバー関連の脆弱性に関する多くのパターンを開発しており、今後もJenkinsサーバー関連の脆弱性が発見された場合には、迅速に対応していく予定である。
5. 参考文献
https://www.uptycs.com/blog/jenkins-exploit-cve-2024-23897
https://hackyboiz.github.io/2024/03/04/ogu123/cve-2024-23897/