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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/oscerd/cve-2026-43867
脆弱性分析コード分析エクスプロイトクラウドセキュリティバイナリエクスプロイト
GitHuboscerd/cve-2026-43867

CVE-2026-43867

CVE-2026-43867 の再現コード — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager における安全でないキーメタデータの逆シリアル化 (RCE)

リポジトリを見る
1ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

camel-pqc AWS Secrets Manager キーメタデータの安全でないデシリアライゼーション再現ツール (CVE-2026-43867)

このプロジェクトは、Apache Camel の camel-pqc コンポーネントにおける Java デシリアライゼーションの脆弱性を実証するもので、CVE-2026-43867 として追跡されています。AwsSecretsManagerKeyLifecycleManager.deserializeMetadata() は、永続化された耐量子計算機鍵メタデータを AWS Secrets Manager のシークレットから読み戻す際に、保存された値を Base64 デコードしてから、生の java.io.ObjectInputStream.readObject() でデシリアライズし、ObjectInputFilter を使用しません。KeyMetadata へのキャストは readObject() が戻った後にのみ行われるため、readObject() の副作用はすべて先に実行されます。そのシークレットに書き込み可能なプリンシパル (secretsmanager:PutSecretValue) は、通常の鍵ライフサイクル操作中にデシリアライズされる巧妙に細工された直列化オブジェクトを保存でき、コード実行につながる可能性があります。

アドバイザリ: https://camel.apache.org/security/CVE-2026-43867.html

脆弱性の概要

CVE-2026-46590 と同じ欠陥(独立に報告されたもの。そのアドバイザリは HashiCorp Vault および ファイルベースの関連マネージャも対象としています)。また、CVE-2026-40048 (CAMEL-23200) に対する不完全な修正のフォローオンであり、 これは FileBasedKeyLifecycleManager を JSON/PKCS#8/X.509 形式に変更しましたが、ObjectInputFilter を追加せず、 AWS/Vault マネージャをカバーしませんでした。

技術的詳細

root@kitploit:~
// AwsSecretsManagerKeyLifecycleManager - 影響を受ける 4.18.2
private KeyMetadata deserializeMetadata(String base64) throws Exception {
    byte[] data = Base64.getDecoder().decode(base64);
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    try (ObjectInputStream ois = new ObjectInputStream(bais)) {   // ObjectInputFilter なし
        return (KeyMetadata) ois.readObject();                    // ガジェットはキャスト前にここで発動する
    }
}

getKeyMetadata(keyId) は <keyPrefix>/<keyId>/metadata という名前のシークレットを読み取り、その JSON エンベロープ ({"metadata":"<base64>","keyId":...,"algorithm":...}) を解析して、metadata フィールドを deserializeMetadata に渡します。 修正(4.18.3 / 4.21.0)では、共有の KeyMetadataCodec が導入され、すべてのマネージャでメタデータを JSON として保存し、 残っているレガシーな ObjectInputStream の読み取りを許可リスト方式の ObjectInputFilter で制約します。

攻撃者と被害者

被害者は、AWS マネージャを使用して PQC 鍵を管理するアプリケーションです。攻撃者は、メタデータシークレットに書き込める任意のプリンシパル (secretsmanager:PutSecretValue) です。この PoC は AWS Secrets Manager をエミュレートするために LocalStack を使用します。 /exploit/attack エンドポイントは、巧妙に細工されたメタデータシークレットを書き込み、その後マネージャの読み取りパスを駆動します。

root@kitploit:~
CVE-2026-43867/
├── pom.xml                 # camel-pqc 4.18.2 + aws-sdk secretsmanager 2.41.28 + commons-collections 3.2.1
├── Dockerfile              # アプリを実行(ガジェット構築用に --add-opens)
├── docker-compose.yml      # LocalStack (Secrets Manager) + 再現ツールアプリ
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Gadget.java             # CommonsCollections6 ガジェット。readObject() 中に発動
    │   └── ExploitController.java  # 細工されたシークレットを書き込み、その後 getKeyMetadata() を呼び出す
    └── resources/
        └── application.properties

実際の攻撃では、直列化バイト列は攻撃者によってオフラインで生成されます(例: ysoserial を使用)。この PoC はガジェットをプロセス内で構築するため、JVM が --add-opens java.base/java.util=ALL-UNNAMED で実行されます。 これはガジェット構築上の詳細であり、脆弱性自体とは無関係です。

前提条件

  • Java 17+ および Maven 3.8+
  • Docker(LocalStack とアプリを実行)

再現手順

ステップ 1: すべてをビルドして起動

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

これにより LocalStack(AWS Secrets Manager をエミュレート)と再現ツールアプリが起動します。アプリはエンドポイントオーバーライド経由で AwsSecretsManagerKeyLifecycleManager を LocalStack に向けます。

ステップ 2: デシリアライゼーションをトリガー (RCE)

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> 細工された直列化メタデータを AWS Secrets Manager シークレット 'pqc/keys/victim-key/metadata' に書き込みました。
#    getKeyMetadata() が java.lang.ClassCastException をスローしました(想定どおり — ガジェットは readObject() 中に実行されます...)
#
#    >>> RCE の証明 — /tmp/pwned が存在: true

ステップ 3: 確認

root@kitploit:~
docker exec cve-2026-43867 ls -la /tmp/pwned

クリーンアップ

root@kitploit:~
docker compose down

攻撃ベクトル

AwsSecretsManagerKeyLifecycleManager を使用するアプリケーションのうち、鍵メタデータシークレットがアプリケーション自身の信頼されたアイデンティティ以外の者によって書き込めるもの。 デシリアライゼーションは通常の鍵ライフサイクル操作中に実行されます(getKeyMetadata、loadExistingKeys、listKeys、ローテーションチェックなど)。

悪用条件

  1. 影響を受けるバージョンで camel-pqc の AwsSecretsManagerKeyLifecycleManager を使用するアプリケーション。
  2. 攻撃者がメタデータシークレットに書き込める(secretsmanager:PutSecretValue を持っている)。
  3. クラスパス上にガジェットライブラリがある(ここでは commons-collections:3.2.1)。

推奨される修正

4.18.3 / 4.21.0(CAMEL-23726)にアップグレードしてください。メタデータは JSON として保存され、残っているレガシーな ObjectInputStream の読み取りは許可リスト方式の ObjectInputFilter によって制約されます。

緩和策

アップグレードするまでの間:

  1. camel-pqc メタデータシークレットに対する secretsmanager:PutSecretValue を、アプリケーション自身のアイデンティティのみに制限する(最小特権の IAM)。
  2. PQC 鍵マテリアルを、信頼度の低いプリンシパルが書き込めるデータからは分離したシークレットに保持する。
  3. クラスパスからガジェットライブラリを削除する(commons-collections 3.x および類似ライブラリをアップグレード/削除する)。

免責事項

この再現ツールは、セキュリティ研究および許可されたテストのみを目的として提供されており、公開されて修正済みの脆弱性に対するものです。 明示的な許可なしにシステムに対して使用しないでください。

ツールをダウンロード
プロパティ値
コンポーネントcamel-pqc (AwsSecretsManagerKeyLifecycleManager)
影響を受けるクラスorg.apache.camel.component.pqc.lifecycle.AwsSecretsManagerKeyLifecycleManager#deserializeMetadata
CWECWE-502: 信頼されないデータのデシリアライゼーション
影響鍵管理アプリケーションでのコード実行(メタデータシークレットへの書き込みアクセスが必要)
影響を受けるバージョン4.18.0 から 4.18.3 未満、4.19.0 から 4.21.0 未満
修正バージョン4.18.3、4.21.0(camel-pqc は 4.14.x LTS ラインにはありません)
JIRACAMEL-23726
報告者Venkatraman Kumar (Securin)