Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-88789 — CVE-2026-88789 の実行可能な概念実証リプロデューサー。Apache Camel Quarkus camel-quarkus-support-xalan における XSLT TransformerFactory を介した XXE と SSRF を実証します。 | Kitploit
ツール/GitHubGitHub/oscerd/cve-2026-88789
防御ツール脆弱性分析エクスプロイトウェブセキュリティ学習と教育
GitHuboscerd/cve-2026-88789

CVE-2026-88789

CVE-2026-88789 の実行可能な概念実証リプロデューサー。Apache Camel Quarkus camel-quarkus-support-xalan における XSLT TransformerFactory を介した XXE と SSRF を実証します。

リポジトリを見る
17時間11分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-88789 — Camel Quarkus: 強制された Xalan TransformerFactory が JAXP の外部アクセス制限を無効化する

Apache Camel Quarkus の脆弱性に対する実行可能な概念実証(PoC)再現コードです。この脆弱性では、XSLT サポート拡張(camel-quarkus-support-xalan)が独自の Xalan ベースの TransformerFactory を xslt コンポーネントに提供し、それを JAXP のデフォルトとして登録します。Xalan-J 2.7.x は JAXP 1.5 より前のものであり、javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD や ACCESS_EXTERNAL_STYLESHEET を尊重できません — 両方に対して setAttribute() が IllegalArgumentException をスローします — そのため、Apache Camel が生成する TransformerFactory に適用する外部アクセス制限は決して有効になりませんでした。

ランタイムディレクトリスタック
Camel Quarkuscamel-quarkus/Camel Quarkus 3.36.0 (Quarkus 3.36.0, Camel 4.20.0)

Camel Quarkus のみ。 脆弱なコードは Camel Quarkus 拡張機能であり、Camel コンポーネントではありません。通常の Camel および Camel Spring Boot は JDK の TransformerFactory を使用し、これは両方の属性を尊重するため、 そこには再現すべきものがありません — したがってこのリポジトリには camel-spring-boot/ バリアントはありません。

これが示すもの

変換対象の XML ドキュメントを提供する攻撃者は、そのドキュメント内の外部エンティティ宣言を通じて、ローカルファイルを読み取ったり、内部ネットワークの場所に到達したりすることができます。

cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

影響を受けるビルドでの期待される出力(抜粋 — ドライバーは 6 つのプローブを実行します。詳細は camel-quarkus/README.md を参照):

1) xslt endpoint, body is a StreamSource, external entity -> file:///tmp/cve-2026-88789-secrets/db-password.txt
     transformation result: [db.password=LOCAL-FILE-s3cr3t-99]
     local file contents in the output: true

2) xslt endpoint, body is a StreamSource, external entity -> http://127.0.0.1:8080/internal/secret
     transformation result: [INTERNAL-SECRET-s3cr3t-42]
     internal endpoint response in the output: true

4) CONTROL - same document as a String body (Camel converts it to a SAXSource itself)
     transformation result: []
     local file contents in the output: false

5) TransformerFactory.newInstance() anywhere in the application
     factory: org.apache.camel.quarkus.support.xalan.XalanTransformerFactory
     setAttribute(ACCESS_EXTERNAL_DTD, ""):        REFUSED, IllegalArgumentException: ...
     identity transform of the same document: [... <data>db.password=LOCAL-FILE-s3cr3t-99</data> ...]

Requests the XML parser made to internal endpoints on its own: [GET /internal/secret, GET /internal/leak.dtd]

>>> PROVEN: ...

Camel Quarkus 3.40.0 に対しても検証済みです: 漏洩するすべてのプローブが沈黙し、内部エンドポイントは リクエストを一切受け取らず、ドライバーは NOT reproduced を出力します。

影響を受けるパス

xslt コンポーネントのパスでは、すでに javax.xml.transform.Source としてトランスフォーマーに到達する ボディのみが影響を受けます。他の型のボディ — String、byte[]、InputStream — は Apache Camel によって 外部エンティティおよび外部 DTD の読み込みが無効化された SAXSource に変換されるため、影響を受けません。 再現コードのプローブ 4 は、安全でないパスと並べて示した安全なパスです。

このファクトリは JAXP のデフォルトとしても登録されているため(サポート拡張は META-INF/services/javax.xml.transform.TransformerFactory を同梱しています)、アプリケーション内の他のコードが TransformerFactory.newInstance() を通じてファクトリを取得すると、エラーなしに同じ制限を失います。これが、 アドバイザリが自身では何も変換しない拡張を列挙している理由です:

拡張露出
camel-quarkus-xsltxslt コンポーネントパス および JAXP デフォルト
camel-quarkus-xslt-saxonJAXP デフォルト
camel-quarkus-tikaJAXP デフォルト
camel-quarkus-xmlsecurityJAXP デフォルト

脆弱性の概要

プロパティ値
コンポーネントcamel-quarkus-support-xalan (XSLT サポート拡張)
CWECWE-611 (XML 外部エンティティ参照の不適切な制限)
深刻度高
攻撃ベクトル変換対象の XML ドキュメントで宣言された外部エンティティまたは外部 DTD。ボディがすでに javax.xml.transform.Source として xslt エンドポイントに到達する場合
影響ローカルファイルの読み取り、内部ネットワークの場所へのリクエスト発行(SSRF)
影響を受けるバージョン3.2.0 から 3.33.3 より前、3.34.0 から 3.40.0 より前
修正バージョン3.33.3 (LTS ストリーム)、3.40.0
GitHub issueapache/camel-quarkus#9115
クレジットClaude Security Tool を使用した内部解析により発見

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

修正内容

XalanTransformerFactory は、Xalan が尊重できない属性に依存する代わりに、制限を自身で適用するようになりました:

  • 変換対象のドキュメントは、外部一般エンティティも外部パラメータエンティティも解決せず、外部 DTD も読み込まない XMLReader でパースされます — これは Apache Camel の XmlConverter.createSAXParserFactory() が camel-xslt 自身で SAXSource に変換するボディに使用するのと同じ設定です。 呼び出し元が設定した XMLReader を保持する SAXSource はそのまま使用され、DOMSource と StAXSource はすでにパース済みです。
  • 変換時に document() 関数によって取得されるリソースは、アプリケーション自身の URIResolver が解決しない 限り拒否され、この制限は変換に使用する何かを渡すすべてのエントリポイントにインストールされます。これには、 Xalan がファクトリリゾルバをトランスフォーマーにコピーしない SAX プッシュエントリポイントも含まれます。 独自のリゾルバを設定するアプリケーション — camel-xslt はすべての exchange でそうしています — は、 従来どおりそれを上書きし続けます。

main で修正済み: 9a570b64 および 9dd11779、 3.33.x にバックポート: ad9c5236 および 3d886769。

まだアップグレードできない場合

  • 信頼できない入力から構築された javax.xml.transform.Source を xslt エンドポイントに渡さないでください。 メッセージボディを String、byte[]、または InputStream のままにしておくと、Apache Camel がまず 外部エンティティを無効化した SAXSource に変換します。
  • 既存の Source ボディに対する convertBodyTo は 回避策ではありません: その変換は同じファクトリを 通じて恒等変換を実行します。再現コードのプローブ 5 はその恒等変換であり、漏洩します。
  • JAXP の外部アクセス制限に依存するアプリケーションまたはライブラリのコードは、 TransformerFactory.newInstance() に頼るのではなく、com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl を明示的に指定して JDK 実装を要求すべきです。プローブ 6 はその対照であり、読み取りを拒否します。

免責事項

このリポジトリは教育および防御目的で公開されています: Apache Camel Quarkus ユーザーが脆弱性を理解し、 影響を受けているかどうかを確認し、アップグレードによって解決されることを確認できるようにするためです。 所有または運用していないシステムに対してこの資料を使用しないでください。

ツールをダウンロード