arXiv論文メモ
新着一覧
cs.CR · 掲載先の記載あり

公開中のWebアプリで実行時に露出する認証情報を調べる

Secrets That Survive Everything: Runtime Credential Exposure in Production Web Applications

Hemanth Gorijala

この論文をやさしく読む

ひとことで言うと

本番のWebアプリが配信するJavaScriptから、有効な認証情報が見つかる実態と検出方法を調べた研究です。

何に役立つ?

考えられる用途は、公開済みアプリの配信内容を実行時も含めて検査する運用設計です。要旨では複数のスキャナの検出率と実際の露出件数を示しています。

この研究の面白いところ

静的スキャンでは復号後に現れる認証情報を見つけられず、手作業だけで見つかった27件は評価したスキャナすべてで見落とされました。

どこまで分かった?

検出率はAzureの利用が多い一組織の資産群に限られると明記されています。正解集合を作ったモデルは、評価した9種類の検出器とは別の参照比較対象です。

v1のアブストラクトに基づくAI解説。日本語訳とは別に、用途の解釈を含みます。

アブストラクトの日本語訳

公開前の秘密情報スキャンが調べるのはソースコードであり、公開中のアプリが実際に配信する内容ではない。本研究は、本番環境のJavaScript配布ファイルに含まれたAzure ADのクライアント認証情報とAPIMのサブスクリプションキーが、アカウント乗っ取りと大量のデータ露出につながった二つの攻撃連鎖を記録する。許可を得た調査は一組織の約2,000の企業向けWeb資産を対象とし、113件、5.65%が有効な認証情報を配信していた。本番環境での検出の抜けを定量化するため、Claude Opus 4.7による抽出と分析者の手作業による確認で、秘密情報に相当する194件の独立した正解集合GT-194を作った。言語モデルが抽出した247件の候補は、GPT-5.5で独立に検証した。この一致度を表すBrennan-Predigerのカッパ係数は0.676だった。主要な発見は構造的なもので、GT-194の13.9%に当たる27件は手作業の分析だけで発見され、評価した9種類の本番環境スキャナのどれも検出できなかった。正解集合を作るモデルも見落とす、特定ツールに依存しない盲点である。CryptoJSで暗号化された設定もすべての静的スキャナを回避した。認証情報は同じ場所に置かれた鍵で復号した後にだけ現れるため、実行時を考慮した検出でのみ到達できた。手法を組み合わせた検出率も86.1%で頭打ちだった。9種類のスキャナのうち、最良の静的スキャナは36.6%、最良の実行時対応スキャナは77.8%を検出した。後者のF1は0.818で、マクネマー検定のp値は0.001未満だった。正解集合を作ったモデルは参照用の比較対象として別に報告され、評価対象の検出器には含まれない。秘密情報を露出した86アプリのうち63件、73.3%では、Azure ADトークンの発行につながる全手順が単一の配布ファイルにあり、ブラウザのコードから到達できた。認証情報が検出されずに本番環境へ入る五つの経路を整理し、実行時検出を重ねる方法と修復の枠組みを提示する。検出率の結果は、Azureの利用が多い一組織のデータ群に限られる。

v1の要旨から自動生成。本文の精読・人による確認は未実施。

初稿
2026-09-19(UTC)
最新改訂
2026-09-19 · v1
査読・掲載
掲載先の記載あり

著者による掲載先の記載:IEEE Access, 2026。出版社での独立確認は未実施です。

arXivで読むPDFDOI

更新履歴

取得できた版を表示。版の更新は査読済みを意味しません。過去版の本文差分は未解析です。

原文の要旨

Pre-deployment secret scanning operates only on source code, never on what a production application serves. We document two exploitation chains in which Azure AD client credentials and APIM subscription keys from production JavaScript bundles enabled account takeover and mass data exposure. An authorized engagement covered approximately 2,000 enterprise web assets in one organization; 113 (5.65%) served live credentials. To quantify the shift-right gap, we built an independent Ground Truth (GT-194) of 194 secret-grade credentials through Claude Opus 4.7 extraction and manual analyst review, with the 247 LLM-extracted candidates independently validated by GPT-5.5 (Brennan-Prediger kappa = 0.676). The principal finding is structural: 13.9% of GT-194 (27 of 194) is surfaced only by manual analysis and recovered by none of the nine evaluated production scanners, a tool-agnostic blind spot the ground-truth model also misses. CryptoJS encrypted configuration separately defeats every static scanner: the credential exists only after decryption with a co-located key, reached only by runtime-aware detection. Combined coverage plateaus at 86.1%. Among the nine scanners, the best static scanner recovers 36.6% and the best runtime-aware scanner 77.8% (F1 = 0.818, McNemar p < 0.001); the ground-truth model is reported separately as a reference comparator, not an evaluated detector. On 63 of 86 secret-exposed applications (73.3%), the full Azure AD token-mint chain is co-located in one bundle, reachable from browser code. We characterize five paths by which credentials reach production undetected and present a layered runtime detection methodology and remediation framework. Recall is scoped to a single-organization Azure-heavy corpus.

著者のコメント

49 pages, 14 figures, 14 tables, 9 code listings. Published in IEEE Access, 2026, open access under CC BY 4.0

arXiv ID: 2609.23042 / 要約の誤りについて