
Apache Camel の脆弱性に対する実行可能な概念実証(PoC)再現ツールです。この脆弱性では、camel-pqc の
FileBasedKeyLifecycleManager が生成した鍵素材をディスクに書き込む際、ファイルを所有者に制限するのではなく、プロセスのデフォルト umask が生成するパーミッションで書き込んでいました。umask がグループまたはその他のユーザーに読み取りを許可しているホスト(一般的な 022)では、暗号化されていない秘密鍵が他のローカルアカウントから読み取り可能でした。この露出はリモートの送信者ではなくローカルの当事者に対するものですが、該当する場合の結果は完全なものです。秘密鍵を所持すれば、その展開がそれを使って行うすべての署名および鍵交換が破られます。
| ランタイム | ディレクトリ | スタック |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-pqc 4.22.0(影響あり、修正版 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-pqc(Camel 4.22.0、影響あり、修正版コントロール CQ 3.40.0 / Camel 4.22.1) |
両モジュールは、影響を受ける動作および修正済みの動作を示します。どちらも umask 022(一般的なデフォルト)の下で実行され、これがこの欠陥の前提です。
ドライバは実際の FileBasedKeyLifecycleManager を使用します。RSA 鍵ペアを新しいディレクトリに保存し
(manager.storeKey("k1", keyPair, new KeyMetadata("k","RSA")))、その後、書き込まれた
k1.private.json の POSIX パーミッションを読み取ります。
umask 022 の下では rw-r--r--(0644)— そのためグループおよびその他のユーザーが暗号化されていない秘密鍵を読み取れます。rw-------(0600、所有者のみ)で書き込まれます。# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: rw-r--r-- private key; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
umask 022 && java -jar target/cve-2026-85300-pqc-key-permissions-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: rw------- ; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.22.0): rw-r--r-- private key
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
umask 022 && java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: rw-------
| 項目 | 値 |
|---|---|
| コンポーネント | camel-pqc (FileBasedKeyLifecycleManager.storeKey) |
| CWE | CWE-276 (不適切なデフォルトパーミッション) |
| 深刻度 | MEDIUM |
| 攻撃ベクトル | 寛容な (例: 022) umask が設定されたホスト上で、キーディレクトリを読み取れるローカルアカウント |
| 影響 | 暗号化されていない秘密鍵が他のローカルアカウントに開示される |
| 影響を受けるバージョン | 4.12.0 から 4.18.5 未満、4.19.0 から 4.22.1 未満 |
| 修正済みバージョン | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24447 |
| クレジット | Claude Security Scan Tool |
アドバイザリ: https://camel.apache.org/security/CVE-2026-85300.html
影響を受ける Quarkus モジュールは CQ 3.39.0 (Camel 4.22.0) 上に構築されています。
camel-quarkus-pqcが影響を受ける Camel バージョンに初めてマッピングされるのはそこです (CQ 3.29.0 / Camel 4.15.0 は、ここで使用されているファイルベースのキーライフサイクルマネージャーより前のものです)。
FileBasedKeyLifecycleManager は、書き込み前にキーディレクトリと各
秘密鍵ファイルを所有者のみに制限する (setPosixFilePermissions による rwx------ / rw-------、非 POSIX ファイルシステム向けの java.io.File
フォールバック付き) ようになり、また再書き込み時に既存の全員読み取り可能な鍵ファイルを厳格化します
(ファイルは再作成ではなく切り詰められるため、そうしなければ古いパーミッションが維持されてしまいます)。寛容なパーミッションで
すでに書き込まれた鍵素材は露出したものとして扱い、ローテーションすべきです。
キーディレクトリをサービスアカウントのみがたどれるパスに配置し、プロセスの umask を厳格化してください。寛容なパーミッションで すでに書き込まれた鍵は露出したものとして扱い、ローテーションしてください。
このリポジトリは教育および防御目的で公開されています。Apache Camel ユーザーが脆弱性を理解し、影響を受けているかどうかを確認し、 アップグレードによって解決されることを確証できるようにするためです。RSA 鍵ペアはプロセス内で一時ディレクトリに生成され、 チェック後に削除されます。所有または運用していないシステムに対してこの資料を使用しないでください。