Telerik UI for ASP.NET AJAX のファイル読み取りから RCE へのチェーン (CVE-2026-18672)
Telerik UI for ASP.NET AJAX は web.config を認証なしで読み取り、静的キーを持つサイトでは RCE につながります。両方の欠陥は 2026.3.812 で修正済みです。
TL;DR
- Progress Telerik UI for ASP.NET AJAX の CVE-2026-18672 は、RadImageEditor または RadEditor を含むページに到達できる攻撃者なら誰でも、アプリケーションルート配下のファイルを web.config も含めて読み取れる、認証不要のファイル読み取りです。Tanto Security は 2026 年 10 月 27 日、動作するリクエストを伴う完全なチェーンを公表しました。
- この読み取りは、ダイアログパラメーター改ざんの欠陥 CVE-2026-19219 とつながり、web.config が静的な machineKey またはカスタムの DialogParametersEncryptionKey を持つサイトで、アプリケーションプール ID としてのコード実行になります。Progress は読み取りを High 7.5、改ざんを High 8.1 と評価し、チェーンの公告は Critical Security Bulletin と題しています。
- 2011.2.712 から 2026.2.708 までの全リリースが対象です。悪用の報告はなく、2026 年 11 月 3 日時点でどちらの CVE も CISA の KEV カタログに載っておらず、CISA ADP は 2026 年 9 月 2 日に Exploitation「none」を記録しています。
- 2026.3.812 以降へ更新してください。更新前にファイル読み取りを完全に緩和する設定は存在しません。対象コントロールを晒している未修正のサイトは露出していると扱ってください。「修正方法」にベンダーの中間措置があります。
影響を受けますか?
以下がすべて成り立つとき、ファイル読み取りに露出しています。
- アプリケーションが 2011.2.712 から 2026.2.708 までの Progress Telerik UI for ASP.NET AJAX を実行している。15 年にわたる全リリースが該当します。
- 認証なしの訪問者が到達できるページに、RadImageEditor が単体コントロールとして、または RadEditor 内蔵の Image Editor ツール経由(内部で RadImageEditor をホスト)でレンダリングされている。チェーンの背後のハンドラーはアプリケーション全体に一度だけ登録されるため、RadEditor を表示するページならすべてがダイアログ機構を引き込みます。
- 攻撃者に必要なのはそのページだけです。この公開記事は、2 つの認証不要リクエストと、そのまま再生した
__VIEWSTATE(単体で署名され、他の隠しフィールドをカバーしない)で読み取りを再現しています。
さらに、次の 2 つが成り立つとき RCE 側にも露出します。
- RadEditor が内蔵のファイルブラウザダイアログを有効にして使われ、アプリケーションが web.config にカスタムの
Telerik.Web.UI.DialogParametersEncryptionKeyを設定しているか、AutoGenerate の既定ではなく静的なmachineKeyを設定している。Progress はこれらのキーの設定を推奨していますが、既定のインストールにはどちらも存在せず、Progress は AutoGenerate の環境はこの経路で遠隔から偽造できないと述べています。 - 攻撃者がファイル読み取りで web.config を読むなどして鍵素材を回収した。
| コンポーネント | 影響を受けるバージョン | 修正バージョン |
|---|---|---|
| RadImageEditor、単体または RadEditor の Image Editor ツール経由(CVE-2026-18672) | 2011.2.712 から 2026.2.708 | 2026.3.812 |
| RadEditor DialogHandler ファイルブラウザ(CVE-2026-19219) | 2011.2.712 から 2026.2.708 | 2026.3.812 |
配備されたアセンブリと web.config のキーを確認します。
# File version of the assembly the application deploys
Get-Item .\Bin\Telerik.Web.UI.dll |
Select-Object -ExpandProperty VersionInfo |
Format-List FileVersion, ProductVersion
# The two keys that turn the file read into RCE, if present
Select-String -Path .\web.config -Pattern "machineKey",
"DialogParametersEncryptionKey"
web.config に machineKey 要素がない場合、ベンダーの公告によれば AutoGenerate の既定が有効です。静的な machineKey またはカスタムの DialogParametersEncryptionKey こそが RCE 経路に必要で、キーが存在することは確認すべき兆候であって、それ自体は侵害ではありません。
修正方法
2026 Q3 リリースに更新し、その後、待機中に鍵が露出しなかったことを確認します。
- スイートを使うすべてのアプリケーションを、ベンダーのアップグレード文書に従い 2026.3.812 以降へ更新します。Progress は 2026 年 8 月 12 日に修正版をリリースし、この重大なセキュリティ公告を通じてアップグレードを促しました。
- 静的な
machineKeyまたはカスタムのDialogParametersEncryptionKeyを持つ脆弱なバージョンを実行していたサイトで読み取りを排除できない場合、露出した鍵をローテーションします。鍵は認証なしの訪問者に回収可能と扱ってください。 - アップグレードをすぐに行えない場所では、ベンダーの中間措置を適用します。リスクは下がりますが問題を完全には閉じません。アプリケーションプール ID が Web アプリケーションルートへの書き込み権限を持たないことを確認してください。書き込み可能なフォルダーではスクリプト実行を無効にしてください。
- RadEditor のファイルブラウザが不要なら、対象の RadEditor コントロールを取り除くか、そのファイルブラウザダイアログを無効にするか、web.config から DialogHandler のマッピングを取り除きます。ベンダーの公告に、取り除くべき
<httpHandlers>と<handlers>の正確な行が載っています。
リテラルなリクエスト Telerik.Web.UI.WebResource.axd?type=iec のブロックは、ベンダーによれば完全な緩和として確認されていません。代替のハンドラーマッピング、URL 形式、エンコーディング、カスタムの HttpHandlerUrl が、単一ルート向けに書かれたフィルターを迂回できます。更新前にファイル読み取りを緩和する設定は存在しません。
根本的な原因は何ですか?
RadImageEditor の画像パスは、暗号化も署名もされない隠しフォームフィールドでサーバーに送られます。コントロールはそれをダウンロードキャッシュに格納し、後ほどアプリケーション全体に登録された別のハンドラーがディスクから読み取ります。RadEditor のダイアログパラメーターは暗号化され署名されています。ただし、blob の外には、それが指すフォルダーを制約するものがありません。
RadImageEditor は状態を <ClientID>_ClientState という隠しポストバックフィールドに保持します。Tanto Security が公開した逆コンパイルは、基底クラスがどう読み込むかを示します。
// Telerik.Web.UI/RadWebControl.cs, decompiled by Tanto Security
// no message authentication code and no decrypt,
// so the whole dictionary is client-controlled
if ( !string . IsNullOrEmpty (text) &&
new JavaScriptSerializer (). DeserializeObject (text)
is Dictionary < string , object > clientState) {
LoadClientState (clientState);
}
RadImageEditor のオーバーライドは、その辞書の imageUrl キーをコントロールの ImageUrl プロパティにコピーします。コントロールはその後、後続リクエストでファイルを返すためにパスをダウンロードキャッシュに格納します。サーバーが決して認証しないページレベルのフィールドが、サーバー側のファイルパスになるのです。
読み戻しは Telerik.Web.UI.WebResource.axd?type=iec、アプリケーションに一度登録される ImageEditorCacheHandler を通ります。ハンドラーは受け取った _downloadKey トークンを復号し、キャッシュのエントリを引き、格納された文字列をパスにマップしてファイルのバイト列を返します。レスポンスの Content-Type をファイルの拡張子から導出し、提供する拡張子を制限しないため、web.config は image/config として返ります。
相対パスの解釈は 2 段階の間で食い違います。パスをキャッシュする取得段階はページのフォルダーから解決し、ハンドラーはアプリケーションルートから解決します。両方を満たす相対パスはありません。アプリケーション相対パスは満たします。~/web.config は両段階で同じファイルを指すため、取得の存在確認とハンドラーのアプリケーションルート内包含チェックの両方をすり抜けます。
RCE 側では、RadEditor のダイアログは暗号化され署名されたパラメーター blob SerializedParameters を運び、これにファイルブラウザの ViewPaths、UploadPaths、DeletePaths が含まれます。blob の完全性保護は、鍵の保持者がそれを作ったことのみを証明し、開発者がそれらのフォルダーを設定したことを証明しません。この公開記事の結論のとおりです。暗号鍵を持つ者は誰でも、アップロード先を Web ルートに向ける有効な blob を鋳造できます。
どのように悪用されますか?
公開された PoC は、2026 年 10 月 27 日の Tanto Security の記事に掲載されたリクエスト列です。以下の手順はそれに沿います。
- 攻撃者は RadImageEditor を表示するページに認証なしの
GETを送り、レスポンスの__VIEWSTATEとクライアント状態フィールド名を手元に残します。 - 同じページへ POST し返します。MAC が通るよう
__VIEWSTATEはそのまま再生し、クライアント状態フィールドには毒を盛ったパスを載せます。
{"currentCommand": null, "imageUrl": "~/web.config", "imageKey": null,
"height": null, "width": null, "enableResize": null,
"toolBarPosition": null, "isf": null}
- レスポンスは新しい
_downloadKey、毒を盛ったキャッシュエントリの暗号化 GUID を返します。RadEditor のページでは、攻撃者は ImageEditor ダイアログ経由で同じコントロールに到達します。ページからサーバーが発行したパラメーター blob を収穫し、パスをOriginalImageLocationフォームフィールドで与えます。 - 攻撃者はそのキーを
Telerik.Web.UI.WebResource.axd?type=iec&dkey=3に送り、ハンドラーは~/web.config(公開記事の PoC の標的)のバイト列をimage/configとして返します。 - 回収した web.config が静的な
machineKeyを持つ場合、攻撃者は逆シリアル化ガジェットチェーンを載せた署名済み__VIEWSTATEを偽造します。これは ysoserial.net が構築する標準的な ASP.NET ViewState 手法で、公開記事はこれを再現して Web ルートに webshell を書き込みました。 DialogParametersEncryptionKeyを持つ場合、攻撃者は代わりにUploadPathsを Web ルートに向けたダイアログパラメーター blob を偽造します。webshell は RadEditor のファイルブラウザ経由でアップロードされ、Progress が CVE-2026-19219 に割り当てた経路です。- webshell のコードは IIS アプリケーションプール ID として実行され、攻撃者は以後それを制御します。
攻撃の流れはどうなりますか?
認証なしのリクエスト列 1 回で web.config が読み取られ、設定されていればその中の鍵が、読み取りを Web ルートでのコード実行に変えます。
RadEditor を表示するページに
GET を送る"] --> B["POST が __VIEWSTATE を再生し
ClientState に ~/web.config を
盛る。フィールドは
署名なし"] B --> C["キャッシュがパスを保存し、
レスポンスが暗号化された
_downloadKey を返す"] C --> D["type=iec ハンドラーが
web.config のバイト列を
image/config として返す"] D --> E["web.config が静的な machineKey
かダイアログ鍵を持つ。
ベンダー推奨だが
既定ではない"] E --> F["偽造 ViewState ガジェットか、
アップロード先を Web ルートに
向けるダイアログパラメーター"] F --> G["webshell が Web ルートに
書き込まれ、アプリケーション
プール ID として実行される"]
攻撃者は何ができますか?
ベンダーのチェーン公告は、合わせた影響を率直に述べています。チェーンを悪用する認証なしのリモート攻撃者は、アプリケーションプール ID の権限で Web サーバー上で任意のコードを実行できます。公告は、これがサーバーの完全な侵害、データの持ち出し、ホスティング環境内でのさらに横方向の移動につながる可能性があると評価しています。
- ファイル読み取り単体の CVE-2026-18672 は、アプリケーションルート配下の全ファイルを晒します。web.config には接続文字列と 2 つの鍵があります。既定のインストールで動作し、読み取りに鍵の設定は不要です。
- CVE-2026-19219 を経由する RCE チェーンには鍵素材が必要です。web.config に存在する静的な
machineKeyまたはカスタムのDialogParametersEncryptionKeyです。ベンダーの公告によれば、カスタムのダイアログ鍵を持たない AutoGenerate 既定のサイトは、この経路で遠隔から偽造できません。 - 悪用は静かです。ベンダーの公告は、目に見える症状も標準的な ASP.NET エラーログの明らかな痕跡もないと注記しています。公開記事の 2 つの RCE 経路は、どちらもクラッシュではなく機能する webshell で終わります。
条件は、コントロールを表示するページへのネットワーク到達性と、コード実行のための鍵設定の存在です。どの手順にもユーザー操作も認証も不要です。
なぜ修正が効くのですか?
Progress はクローズドソースのアセンブリを配布するため、引用できる公開のパッチ diff はありません。公開記事が 2026.3.812 に対して検証した修正の挙動は、両側を閉じます。
- キャッシュハンドラーは復号したパスをコントロールに設定された画像ディレクトリと照合し、
jpg、jpeg、png、gif、bmpの画像拡張子許可リストを強制します。どちらの確認でもweb.configの読み取りは止まり、ダイアログのOriginalImageLocation入力も同じ確認を通るようになりました。 - RadImageEditor は画像の位置を、サーバー鍵の下で暗号化した値としてクライアント状態に格納するようになり、クライアントはその鍵なしに独自のパスを差し替えられません。
- ダイアログのアップロード経路は、ファイル書き込み時に
.aspx、.ashx、.config、.exeその他多数の危険な拡張子を拒否する固定の拒否リストを強制し、ファイルブラウザが一覧とアップロードに使えるフォルダーを制限するオプトインのTelerik.Web.UI.FileBrowserAllowedPaths設定を追加します。
修正は問題を狭め、パターンそのものをなくすわけではありません。公開記事は FileBrowserAllowedPaths がオプトインだと注記します。設定しない場合、ファイルブラウザは正当に暗号化されたダイアログ blob が運ぶパスを信頼し続けます。DialogParametersEncryptionKey を持つ攻撃者は、サイトの任意のフォルダーへのアップロードが引き続き可能です。ベンダー自身の緩和の節も同じです。措置はリスクを減らし、完全に解決するのはアップグレードだけです。更新の際は露出した鍵をローテーションしてください。後半が必要とするのはバージョンではなく鍵だからです。
侵害されたかどうかを確認するには?
公開されたIOCはなく、ベンダーは悪用が標準的な ASP.NET エラーログに明らかな痕跡を残さないと述べています。これらの確認は、公開記事のリクエスト形状を自分のログから探すものです。一致は調査すべき兆候であって証拠ではありません。
- IIS ログで 2 段階のリクエストパターンを探します。RadImageEditor か RadEditor を含むページへの
POSTに続き、type=iecとdkeyパラメーターを伴うTelerik.Web.UI.WebResource.axdへのリクエストが続く形です。正当な画像編集もこのハンドラーを使うため、単発ではなく一対を重視してください。 - 未認証セッションからの
Telerik.Web.UI.DialogHandler.aspxへのPOSTを探します。RCE 経路がパラメーターを偽造するダイアログのエンドポイントです。 web.configと Web ルートを既知の正常なコピーと比較します。想定外の.aspxファイル、新しいハンドラー、machineKeyの変更は、公開記事の侵害後の痕跡です。- 静的な
machineKeyかカスタムのDialogParametersEncryptionKeyで脆弱なバージョンを実行し、読み取りを排除できないサイトでは、鍵を露出したと扱ってください。ハンドラーのレスポンスから、画像の読み取りとweb.configの読み取りを区別する指紋はありません。
タイムライン
- 2026-07-28: Tanto Security がベンダーのセキュリティ開示チャネル経由で Progress に結果を報告し、同日に確認を受ける。
- 2026-07-31: Progress が検証とレビュー用の修正ビルドを提供する。
- 2026-08-01: Tanto Security がファイル読み取りの修正を確認し、ダイアログ鍵があればアップロードが引き続き到達可能だと報告する。
- 2026-08-12: Progress が修正版 2026.3.812(2026 Q3)をリリースし、重大なセキュリティ公告を通じてアップグレードを促す。
- 2026-09-02: Progress が両欠陥の CVE とナレッジベース公告を公表する。
- 2026-10-27: Tanto Security がリクエスト列を伴う完全なチェーンの公開記事を出す。
FAQ
修正は 2026 年 8 月に出ました。なぜ今重要なのですか?
チェーン文書の公開は 2026 年 10 月 27 日でした。2026.2.708 以前のサイトは今、web.config を読む、公開済みで認証不要のリクエスト列に直面しています。公開記事は、推奨される鍵設定を持つサイトに対してコード実行側を実演しています。また、アセンブリのファイルバージョンなしでスイートのバージョンを特定するのはスキャナーにとって難しく、棚卸しが重要です。
既定のインストールはリモートコード実行に露出していますか?
いいえ。ファイル読み取りは既定のインストールで認証なしに動作しますが、RCE 側には web.config の静的な machineKey かカスタムの DialogParametersEncryptionKey が必要で、どちらも既定のインストールにはありません。Progress はそれらの設定を推奨しており、それはまさに、強化ガイダンスに従ったサイトをチェーンに露出させるものです。
誰かがこれらの欠陥を悪用しましたか?
悪用の報告はありません。CISA ADP の評価は 2026 年 9 月 2 日に両方の CVE で Exploitation「none」を記録し、2026 年 11 月 3 日時点でどちらも CISA の Known Exploited Vulnerabilities カタログに現れません。ただし製品ラインには悪用の歴史があります。RadAsyncUpload の欠陥 CVE-2019-18935 は 2021 年から同カタログに載っています。
公開されたエクスプロイトコードはありますか?
公開記事は読み取りの完全なリクエスト列(クライアント状態のペイロードとキャッシュハンドラーのリクエストを含む)を公開し、両方のコード実行経路を完全に記述しています。Tanto Security は ViewState ガジェットの生成を自作のエクスプロイトに移植しましたが、単体のエクスプロイトスクリプトは公開されていません。
このシリーズの他の Telerik CVE は重要ですか?
シリーズの 2 本の記事はスイートの 12 の脆弱性を報告し、Progress は 2026.2.708 と 2026.3.812 で全てを修正しました。本稿が扱うのは、Progress が認証なしの RCE につなげる 2 つの CVE で、その他それぞれにベンダーのナレッジベース公告があります。
アップグレードの代わりにハンドラーをブロックできますか?
それで露出を減らせますが、ベンダーはリテラルなリクエストのフィルタリングが完全な緩和として確認されていないと述べています。代替のハンドラーマッピング、URL エンコーディング、カスタムの HttpHandlerUrl が、ルートベースのフィルターを迂回できます。「修正方法」の中間措置を使い、フィルタリングの制御は Telerik サポートで確認してください。
Ostorlab で晒されたアプリケーション面を把握する
Ostorlab の Web Agentic Deep Scan は Web アプリケーションを巡回し、ページが晒す面(このチェーンが到達するハンドラーエンドポイントやダイアログを含む)を把握します。Ostorlab でスキャンを実行し、どのアプリケーションを 2026.3.812 へ先に更新すべきかを知ってください。
参考文献
- Tanto Security、Marcio Almeida、「From Arbitrary File Read to Shell: Yet Another RCE in Telerik」、2026 年 10 月 27 日公開、完全なチェーン、逆コンパイルコード、リクエスト列を含む: https://tantosec.com/blog/2026/10/telerik-file-read-to-rce/ (2026 年 11 月 3 日確認)
- Progress Telerik ナレッジベース公告「RadImageEditor Path Traversal Vulnerability (CVE-2026-18672)」、対象バージョン表、設定による緩和の不存在、フィルタリングへの注意を含む: https://www.telerik.com/products/aspnet-ajax/documentation/knowledge-base/kb-security-rie-path-traversal-cve-2026-18672 (2026 年 11 月 3 日確認)
- Progress Telerik ナレッジベース公告「DialogHandler UploadPaths Tampering Vulnerability (CVE-2026-19219)」、露出条件、CWE-345 と CWE-434、中間緩和を含む: https://www.telerik.com/products/aspnet-ajax/documentation/knowledge-base/kb-security-dialoghandler-uploadpaths-tampering-cve-2026-19219 (2026 年 11 月 3 日確認)
- Progress Telerik「Critical Security Bulletin - RadImageEditor and RadEditor CVE-2026-18672 and CVE-2026-19219 (2026 Q3)」、チェーンレベルの影響声明とコンポーネント別修正表: https://www.telerik.com/products/aspnet-ajax/documentation/knowledge-base/kb-security-radimageeditor-radeditor-rce-chain-bulletin-2026-q3 (2026 年 11 月 3 日確認)
- CVE-2026-18672 レコード、Progress CNA、CVSS v3.1 7.5 と CISA ADP の SSVC ブロックを含む: https://www.cve.org/CVERecord?id=CVE-2026-18672 (2026 年 11 月 3 日確認)
- CVE-2026-19219 レコード、Progress CNA、CVSS v3.1 8.1 と CISA ADP の SSVC ブロックを含む: https://www.cve.org/CVERecord?id=CVE-2026-19219 (2026 年 11 月 3 日確認)
- Progress Telerik の web.config 設定概要、暗号鍵の設定を推奨するガイド: https://www.telerik.com/products/aspnet-ajax/documentation/general-information/web-config-settings-overview (2026 年 11 月 3 日確認)
- ysoserial.net、公開記事が ViewState ガジェットに使った .NET 逆シリアル化ツールキット: https://github.com/pwntester/ysoserial.net (2026 年 11 月 3 日確認)
- CISA の Known Exploited Vulnerabilities カタログ JSON フィード、両方の CVE を検索し一致なし、製品ラインの CVE-2019-18935 の履歴も確認(2026 年 11 月 3 日時点): https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json (2026 年 11 月 3 日確認)