Apache Dubbo デシリアライゼーション脆弱性の調査
このリポジトリには、Apache Dubbo のデシリアライゼーション脆弱性(主に CVE-2020-1948)に関連する調査資料、概念実証コード、および悪用ツールが含まれています。
リポジトリ構成
ディレクトリ
- Hessian-Deserialize-RCE-master: Dubbo における Hessian デシリアライゼーション脆弱性の調査と悪用技術
- JNDI-Injection-Exploit-master: Dubbo サービスを攻撃するための JNDI インジェクション悪用フレームワーク
- dubbo-dubbo-2.7.5: 脆弱性分析のための Apache Dubbo 2.7.5 ソースコード
- dubbo-exp-master: Dubbo 脆弱性の高度な悪用フレームワーク
- dubbo-samples-master: テストとデモンストレーション用のサンプル Dubbo アプリケーション
- marshalsec-master: マーシャリング/アンマーシャリング脆弱性テストのためのツール
ファイル
- dubboExp.py: CVE-2020-1948 のための Python ベースのエクスプロイトスクリプト
- dubboPoc.py: 脆弱性の存在を確認するための概念実証スクリプト
- payload.ser: 悪用のためのシリアライズされた Java ペイロード
- ysoserial.jar: Java デシリアライゼーションペイロード生成ツール
脆弱性の概要
Apache Dubbo バージョン 2.7.8 未満、2.6.9 未満、2.5.10 未満は、安全でないデシリアライゼーションによりリモートコード実行攻撃(CVE-2020-1948)の影響を受けます。この脆弱性は、Java ネイティブシリアライゼーションを適切な検証なしで使用する Dubbo Provider コンポーネントに影響します。
技術詳細
この脆弱性は、複数のベクトルを通じて悪用される可能性があります。
- Hessian デシリアライゼーション: Hessian シリアライゼーションプロトコル実装の悪用
- JNDI インジェクション: リモートコード実行を達成するための JNDI インジェクション技術の活用
- Java シリアライゼーション: ガジェットチェーンを用いた従来の Java デシリアライゼーション攻撃の使用
使用方法
脆弱な環境のセットアップ
# 脆弱な Dubbo バージョンのクローンとビルド
cd dubbo-dubbo-2.7.5
mvn clean package
脆弱性の確認
# 概念実証の実行
python dubboPoc.py -t <target_ip> -p <target_port>
悪用
# エクスプロイトの実行
python dubboExp.py -t <target_ip> -p <target_port> -c "command_to_execute"
カスタムペイロードの生成
ysoserial.jar を使用してカスタムペイロードを生成できます。
java -jar ysoserial.jar CommonsCollections1 "command_to_execute" > payload.ser
軽減策
これらの脆弱性から保護するには:
- Apache Dubbo 2.7.8+、2.6.9+、または 2.5.10+ にアップグレードする
- ネイティブ Java シリアライゼーションの使用を避ける
- 適切な入力検証とデシリアライゼーションフィルタリングを実装する
- 適切なセキュリティ管理を備えた代替シリアライゼーションプロトコルの使用を検討する
参考資料
免責事項
このリポジトリはセキュリティ研究および教育目的のみを目的としています。提供されるコードとツールは、テスト許可のあるシステムに対してのみ使用する必要があります。この情報の誤用について、リポジトリの所有者は一切責任を負いません。