Paper Files / AppSec
タイトル: グラフ指向のハイブリッド解析と定量的リスク優先順位付けに基づくApplication Security (AppSec)のための形式的かつスケーラブルなアーキテクチャ
タイトル: グラフ指向のハイブリッド解析と定量的リスク優先順位付けに基づくApplication Security (AppSec)のための形式的かつスケーラブルなアーキテクチャ 要旨: 分散型アプリケーション、マイクロサービス、および大規模なオープンソース依存関係チェーンに統合されたアプリケーションの複雑性の増大は、攻撃面と、悪用可能な脆弱性の発生頻度を著しく拡大させている。Log4Shell (CVE-2021-44228) や安全でないデシリアライゼーション脆弱性に関連する最近のインシデントは、静的または動的スキャンのみに限定された従来のApplication Security (AppSec) アプローチの不十分さを示している。本研究では、静的解析 (SAST)、動的解析 (DAST)、ソフトウェア構成解析 (SCA) を統合し、さらに意味的依存グラフおよび手続き間データフローの自動化された脅威モデリングを組み合わせた、グラフ指向のハイブリッド解析に基づく形式的かつスケーラブルなAppSecアーキテクチャを提案する。加えて、CVSS指標、統計学習により推定された探索可能性確率、ならびに呼び出しグラフにおける構造的中心性を統合する、リスクの定量的優先順位付けのための数学モデルを導入する。さらに、5百万行超のコードを含むアプリケーションを解析可能で、1.2百万ノードのグラフをCI/CDパイプラインあたり平均38分のレイテンシで処理できる分散プロトタイプを実装した。 本システムを、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 インジェクションを通じてリモートコード実行を可能にし、世界中の数百万のシステムに影響を与えた。Apache Struts の悪用(CVE-2017-5638)は、Equifax 攻撃と関連しており、パッチ管理および入力検証における継続的な不備を浮き彫りにした。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 は AFL に関する Zalewski の研究で議論されているように、ファジングと監視付き実行に基づく。Black Duck や OWASP Dependency-Check のような SCA ツールは、バージョンの対応付けと CVE データベースに重点を置く。
既存手法は、以下の3つのクラスに分類できる。
- シグネチャに基づく孤立した解析。
- 関数間フローに基づく静的解析。
- 動的計測を伴うハイブリッド手法。
しかし、なお制約は残る。(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$ の間の最短経路を表す。
問題は、実際に観測された悪用との相関を最大化するように $Vul$ を $R(v_i)$ に従って順位付けすることである。
- 提案手法
アーキテクチャは4つのモジュールから構成される。
- 意味グラフ抽出。
- ハイブリッド解析エンジン。
- 悪用確率推定器。
- 優先順位付け機構。
Algorithm 1: 統合グラフの構築
Input: ソースコード C, 依存関係 D
Output: グラフ 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 をサポートした。平均的なパイプラインは、16ノードのクラスター(Intel Xeon 32 cores, 128GB RAM each)上で、531万行のコードを 38 ± 4.2 分で処理した。
トレードオフとして、完全な関数間精度と性能向上のための要約解析の選択が含まれた。
- 実験評価
合計 9,317 件の既知 CVE を含む 42 件のオープンソースプロジェクトを評価した。
指標:
- Precision
- Recall
- 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 min)内に収まっていた。
- 議論
結果は、構造的中心性が悪用影響の強い予測因子であることを示している。媒介中心性が高い脆弱性は、模擬攻撃チェーンに参加する確率が 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.