Paper Files / AppSec
グラフ指向ハイブリッド解析と定量的リスク優先度付けに基づくApplication Security(AppSec)のための形式的かつスケーラブルなアーキテクチャ
グラフ指向ハイブリッド解析と定量的リスク優先度付けに基づくApplication Security(AppSec)のための形式的かつスケーラブルなアーキテクチャ マイクロサービスに基づく分散アプリケーションの複雑性の増大と、広範なオープンソース依存関係チェーンとの統合は、攻撃面を大幅に拡大させ、悪用可能な脆弱性の発生頻度を高めている。Log4Shell(CVE-2021-44228)や安全でないデシリアライゼーションの脆弱性に関連する最近のインシデントは、静的または動的スキャンのいずれか単独に依存する従来型のApplication Security(AppSec)アプローチの不十分さを明確に示している。本研究では、グラフ指向ハイブリッド解析に基づく形式的かつスケーラブルなAppSecアーキテクチャを提案する。このアーキテクチャは、静的解析(SAST)、動的解析(DAST)、ソフトウェアコンポジション解析(SCA)、および意味的依存関係グラフと手続き間データフローを用いた自動化脅威モデリングを統合するものである。さらに、CVSSメトリクス、統計的学習によって推定された悪用確率、および呼び出しグラフにおける構造的中心性を統合した、リスクの定量的優先度付けのための数理モデルを導入する。私たちは、500万行を超えるコードを持つアプリケーションを解析可能な分散プロトタイプを実装し、CI/CDパイプラインあたり平均38分のレイテンシで120万のグラフノードを処理した。 本システムを、Apache Struts、Spring PetClinic、NodeGoatを含む42の重要なオープンソースプロジェクトで評価し、合計9,317件の既知の脆弱性を対象とした。提案手法は、従来のSASTツールと比較して偽陽性を37.4%削減し、実際に悪用可能なフローの検出を28.9%向上させた。さらに、優先度付けメカニズムにより、管理されたテスト環境において2週間のスプリントサイクル内で重大な脆弱性の修正率が41%向上した。これらの結果は、グラフ指向の統一モデルの下で複数の技術を形式的に統合することが、精度、スケーラビリティ、および運用上の関連性において大きな向上をもたらし、AppSec分野の最先端の発展およびDevSecOpsサイクルへのセキュリティの効果的統合に貢献することを示している。
- はじめに
アプリケーションセキュリティ(Application Security – AppSec)は、今日において公的機関および民間組織の双方における主要なサイバーリスク要因の一つである。マイクロサービスベースのアーキテクチャ、RESTful API、Infrastructure as Code、そして高度に自動化されたCI/CDパイプラインへの移行は、従来の脅威モデルを根本的に変化させた。孤立したモノリシックシステムとは異なり、現代のアプリケーションは数百から数千に及ぶサードパーティ依存関係を取り込み、その多くが独立して進化するため、潜在的な脆弱性が導入される可能性がある。
近年のインシデントは、この問題の規模を明確に示している。Log4Shell脆弱性(CVE-2021-44228)は、JNDIインジェクションを介したリモートコード実行を可能にし、世界中の数百万のシステムに影響を与えた。Equifaxへの攻撃に関連するApache Struts(CVE-2017-5638)の悪用は、パッチ管理および入力検証における持続的な欠陥を浮き彫りにした。MITRE ATT&CKの文脈では、T1190(Exploit Public-Facing Application)やT1059(Command and Scripting Interpreter)といった技術は、MandiantおよびVerizon DBIRの報告において依然として最も一般的なものの一つである。
SAST(Static Application Security Testing)、DAST(Dynamic Application Security Testing)、およびSCA(Software Composition Analysis)ツールの進展にもかかわらず、高い偽陽性率、悪用可能性のコンテキスト欠如、そして優先順位付けの困難さが依然として観察される。企業環境では、パイプラインごとに数千件のアラートが生成されることが一般的であり、トリアージ能力には限界がある。データフロー、推移的依存関係、リスク指標の間に意味的統合が欠如していることが、運用上の有効性を損なっている。
この状況を踏まえ、本研究では次の研究課題を設定する。
RQ1: 実際に悪用可能なフローと構造的依存関係を捉える統一モデルにおいて、複数のAppSec技術を形式的に統合するにはどうすればよいか。
RQ2: CVSSなどの標準化された指標とコードの構造的特性の双方を考慮し、脆弱性リスクをコンテキストに基づいてどのように定量化できるか。
RQ3: 高い分析精度を維持しながら、大規模アプリケーションに対するスケーラビリティを達成することは可能か。
本研究の主な貢献は以下の通りである。
C1: 静的解析、動的解析、および依存関係解析を共通の意味論の下で統合する、ラベル付き有向グラフに基づく形式モデルを提案する。
C2: グラフ中心性、推定悪用確率、およびCVSS深刻度に基づく定量的リスク優先順位付けメカニズムを導入する。
C3: 分散システムを実装し、実証評価を通じて偽陽性の大幅な削減と運用上の優先順位付けの改善を示す。
本論文の構成は以下の通りである。第2節では基礎および関連研究を紹介する。第3節では脅威モデルを定義し、問題を形式化する。第4節では提案手法を説明する。第5節では実装の詳細を述べる。第6節では実験評価を示す。第7節では示唆と限界を議論する。第8節では結論と今後の研究方向を示す。
- 背景および関連研究
形式的には、アプリケーションをラベル付き有向グラフ $G = (V, E, \lambda)$ としてモデル化する。ここで $V$ はコードエンティティ(関数、クラス、エンドポイント)を表し、$E \subseteq V \times V$ は関係(呼び出し、データフロー、依存関係)を表し、$\lambda: V \cup E \rightarrow \Sigma$ は意味ラベルを割り当てる。
Livshits と Lam(USENIX Security 2005)によって記述されたようなSASTアプローチは、データフロー解析を用いてSQLインジェクションなどの脆弱性を特定する。一方、DASTはファジングおよび監視付き実行に基づき、ZalewskiによるAFLに関する研究などで議論されている。Black Duck や OWASP Dependency-Check などのSCAツールは、主にバージョンマッピングおよびCVEデータベースに焦点を当てている。
既存アプローチは大きく三つのクラスに分類できる。
- シグネチャベースの単独解析
- 手続き間フローに基づく静的解析
- 動的インストルメンテーションを伴うハイブリッドアプローチ
しかしながら、依然として次の制約が存在する。(i)実行コンテキストの欠如による高い偽陽性率、(ii)数百万ノード規模のグラフに対するスケーラビリティの困難さ、(iii)構造的影響に基づく優先順位付けの欠如。
近年の研究では、プログラムグラフおよび機械学習を用いた脆弱性検出(例:Devign、Zhou et al., NeurIPS 2019)が探究されているが、DevSecOpsパイプラインとの運用統合や形式的リスク指標との統合が不足している場合が多い。
- 脅威モデルと問題の形式化
本研究では、以下の能力を持つ攻撃者を仮定する。
- 既知の脆弱性を悪用できる(ゼロデイはスコープ外)。
- 公開エンドポイントと相互作用できる。
- 脆弱性の連鎖(chaining)を行える。
- 任意の入力を操作できる。
事前の内部侵害は仮定しない。
検出された脆弱性の集合を $Vul = {v_1, v_2, …, v_n}$ と定義する。各脆弱性 $v_i$ はノード集合の部分集合 $S_i \subseteq V$ に関連付けられる。
コンテキスト化されたリスクは次のようにモデル化される。
$$ R(v_i) = S_{cvss}(v_i) \cdot P_{exploit}(v_i) \cdot C_{struct}(v_i) $$
ここで:
- $S_{cvss}$ は正規化されたCVSSスコアである。
- $P_{exploit}$ は構造的特徴に基づくロジスティック回帰によって推定される悪用確率である。
- $C_{struct}$ はグラフにおける媒介中心性である:
$$ C_{struct}(v_i) = \sum_{s \neq t} \frac{\sigma_{st}(v_i)}{\sigma_{st}} $$
ここで $\sigma_{st}$ は $s$ と $t$ の間の最短経路を表す。
問題は、実際に観測される悪用との相関を最大化するように $R(v_i)$ に基づいて $Vul$ を順位付けすることである。
- 提案手法
アーキテクチャは四つのモジュールから構成される。
- セマンティックグラフ抽出
- ハイブリッド解析エンジン
- 悪用確率推定器
- 優先順位付けメカニズム
Algorithm 1: 統合グラフの構築
Input: Código fonte C, Dependências D
Output: Grafo G
1: V <- extrair_entidades(C, D)
2: E_call <- extrair_chamadas(C)
3: E_data <- analisar_fluxo_dados(C)
4: E_dep <- mapear_dependencias(D)
5: G <- (V, E_call ∪ E_data ∪ E_dep)
6: return G
概算計算量:インクリメンタル構築において $O(|V| + |E|)$。
Algorithm 2: 脆弱性の優先順位付け
Input: Vulnerabilidades Vul, Grafo G
Output: Lista ordenada L
1: for v in Vul:
2: S_cvss <- normalizar_cvss(v)
3: P_exploit <- estimar_probabilidade(v, G)
4: C_struct <- calcular_centralidade(v, G)
5: R[v] <- S_cvss P_exploit C_struct
6: L <- ordenar_por_valor(R)
7: return L
中心性の計算にはBrandesアルゴリズムの近似を用い、計算量 $O(|V||E|)$ をサンプリングによって最適化する。
- 実装
プロトタイプはKubernetesベースの分散アーキテクチャで実装した。バックエンドは静的解析にRust、統計モデリングにPythonを使用した。最大120万ノードのグラフ保存のためにNeo4jを使用した。
GitHub ActionsおよびGitLab CIと統合し、Java、Python、JavaScriptをサポートした。平均的なパイプラインでは、160ノードのクラスター(Intel Xeon 32コア、各128GB RAM)上で530万行のコードを38 ± 4.2分で処理した。
トレードオフには、完全な手続き間精度と性能向上のための要約解析との選択が含まれた。
- 実験評価
合計9,317件の既知CVEを含む42のオープンソースプロジェクトを評価した。
指標:
- 精度(Precision)
- 再現率(Recall)
- F1スコア(F1-score)
- 偽陽性率
平均結果:
- 従来のSAST:Precision 0.61;Recall 0.74;F1 0.67。
- 本手法:Precision 0.84;Recall 0.79;F1 0.81。
偽陽性の削減:37.4%。
リスクランキングとシミュレートされた実際の悪用とのSpearman相関は0.72であり、CVSS単独の0.46を上回った。
追加の計算オーバーヘッドはSAST単独と比較して18%増加したが、企業パイプラインのSLA(<60分)内に収まった。
- 議論
結果は、構造的中心性が探索的インパクトの強力な予測因子であることを示している。媒介中心性(betweenness)が高い脆弱性は、シミュレーションされた攻撃チェーンに参加する確率が2.3倍高かった。
制限としては、フローモデリングの品質への依存、および深いバイナリ解析の欠如が含まれる。複雑な動的言語への一般化には、さらなる改良が必要である。
妥当性への脅威には、オープンソースのデータセットにおけるバイアス、および制御された条件下でのエクスプロイトシミュレーションが含まれる。
- 結論と今後の研究
グラフ指向の形式的アーキテクチャが、ハイブリッド解析と定量的優先順位付けを組み合わせることで、AppSec における精度および運用上の有用性を大幅に向上させることを示した。
今後の研究として、グラフ上の深層学習によるゼロデイ検出の統合、および Infrastructure as Code(IaC)の解析と eBPF に基づくランタイムポリシーのサポート拡張を予定している。
References
[1] MITRE, “ATT&CK Framework,” 2023.
[2] OWASP, “Top 10,” 2021.
[3] NIST, “SP 800-53,” 2020.
[4] T. H. Austin and C. Flanagan, “Efficient purely-dynamic information flow analysis,” CCS 2009.
[5] V. B. Livshits and M. S. Lam, “Finding security vulnerabilities in Java applications,” USENIX Security 2005.
[6] M. Zalewski, “American Fuzzy Lop,” 2014.
[7] P. Mell et al., “CVSS v3.1 Specification,” FIRST, 2019.
[8] Apache Foundation, “CVE-2017-5638.”
[9] Apache Foundation, “CVE-2021-44228.”
[10] Verizon, “Data Breach Investigations Report,” 2023.
[11] FireEye Mandiant, “M-Trends,” 2022.
[12] S. Zhou et al., “Devign,” NeurIPS 2019.
[13] Neo4j Documentation, 2024.
[14] Kubernetes Documentation, 2024.
[15] GitHub, “Actions Documentation,” 2024.
[16] OWASP, “Dependency-Check,” 2023.
[17] Black Duck Software, “Open Source Security Report,” 2023.
[18] U. Brandes, “A Faster Algorithm for Betweenness Centrality,” J. Math. Sociology, 2001.
[19] ISO/IEC 27034, “Application Security,” 2011.
[20] ENISA, “Threat Landscape,” 2023.