Paper Files / AppSec
証拠指向AppSec:DevSecOpsパイプラインにおける継続的脆弱性分析のための形式的かつスケーラブルなフレームワーク
TITLE: 証拠指向AppSec:DevSecOpsパイプラインにおける継続的脆弱性分析のための形式的かつスケーラブルなフレームワーク ABSTRACT: アプリケーションセキュリティ(Application Security – AppSec)は、マイクロサービスアーキテクチャの大規模採用、継続的インテグレーション、およびオープンソース依存関係の拡大によって、現代のデジタルエコシステムにおける主要なリスク要因の一つとなっている。Log4Shell(CVE-2021-44228)やSpring4Shell(CVE-2022-22965)のように大規模に悪用された脆弱性は、従来の静的解析(SAST)、動的解析(DAST)、およびソフトウェアコンポジション解析(SCA)アプローチの構造的限界を明らかにしている。本研究では、EASE(Evidence-Aware Security Enforcement)と呼ばれる、継続的AppSecのための形式的かつ証拠指向のフレームワークを提案する。このフレームワークは、インクリメンタル静的解析、データフローの形式的モデリング、および運用テレメトリに基づく確率的リスク優先度付けを統合する。 我々の手法は、リスクの数学モデル R(v) = P_e(v) · I(v) · E(v) を組み合わせる。ここで P_e は統計的学習によって推定された悪用確率、I は文脈依存の影響度、E は実行データによって測定される動的露出度を表す。我々は本フレームワークを、Java、Python、Node.js を含む合計312のリポジトリ、総計4800万行のコードからなる実際のCI/CDパイプラインに実装した。 実験結果は、従来のSASTツールと比較して偽陽性を平均37.4%削減し、平均修復時間(MTTR)を42.1%短縮し、後に重大(CVSS ≥ 9.0)として分類された脆弱性の91%を事前に検出できることを示した。さらに、インクリメンタル解析により、完全スキャンと比較して実行時間が58%削減された。 本研究の貢献は、(i) DevSecOps環境における脆弱性優先順位付け問題の厳密な形式化、(ii) 正当性保証を備えたインクリメンタル解析のための効率的アルゴリズム、(iii) 精度および性能の大幅な向上を示す大規模実証評価、の三点である。提案フレームワークは、実際のリスクに基づくAppSecのための定量的基盤を確立し、アプリケーションセキュリティを証拠指向のエンジニアリング実践へと近づける。
- はじめに
アプリケーションセキュリティ(AppSec)は現在、安全なソフトウェア工学における主要な構造的課題の一つである。デジタルトランスフォーメーションは、分散アーキテクチャ、DevOpsパイプライン、およびサードパーティ依存関係の急速な採用と組み合わさることで、攻撃対象領域を指数関数的に拡大させた。Verizon Data Breach Investigations Report(DBIR)の最近の報告によれば、分析された侵害の43%以上がWebアプリケーションの脆弱性の悪用に関与している。同時に、CISAの2023年報告は、CVE-2021-44228(Log4Shell)およびCVE-2022-22965(Spring4Shell)といったCVEを大規模侵害のベクトルとして強調しており、これらはMITRE ATT&CKのT1190(Exploit Public-Facing Application)およびT1059(Command and Scripting Interpreter)などの技術に整合するキャンペーンで悪用された。
中心的な技術的問題は、従来の検出メカニズム(SAST、DAST、SCA)が、極めて動的な環境において文脈に基づく優先順位付けおよび一貫した偽陽性削減を提供できない点にある。静的解析ツールはしばしば数千件のアラートを報告し、偽陽性率が30%を超えることも多く、これは継続的インテグレーションパイプラインにおける実用的な採用を阻害している。
本研究では以下の研究課題を設定する。
RQ1: 動的な運用コンテキストを考慮して、脆弱性リスクを数学的にどのように形式化できるか。
RQ2: 実際の実行証拠との統合により、静的解析における偽陽性を削減することは可能か。
RQ3: 形式的な正当性保証を維持しつつ、スケーラブルなアーキテクチャをどのように設計できるか。
貢献:
C1: 悪用確率、影響、および動的露出に基づく脆弱性優先順位付けの数学的形式化を提案する。
C2: コード全体のサイズに対してサブリニアな計算量を持つ増分アルゴリズムを開発する。
C3: 実運用環境において有意な定量的改善を実証する。
本論文の構成は以下の通りである。第2節では基礎および関連研究を概説する。第3節では脅威モデルを形式化する。第4節では提案手法を示す。第5節では実装を説明する。第6節では実験評価を提示する。第7節では含意について議論する。第8節では結論を述べる。
- 背景および関連研究
静的解析は関数 $A: P \rightarrow 2^V$ として形式化できる。ここで $P$ はプログラムの集合、$V$ は検出可能な脆弱性の集合である。手法はデータフロー解析、抽象解釈、モデル検査に基づく。Cousot と Cousot は、安全な近似解析のための形式的枠組みとして抽象解釈の基礎を確立した。
SASTアプローチ(例: Coverity、Fortify)は主に制御フローグラフ(CFG)およびデータ依存グラフ(DDG)上で動作する。一方、DASTは実行中のアプリケーションに対して動的テストを実行する。SCA(Software Composition Analysis)はNVDなどのデータベースを用いて依存関係を評価する。
分類:
- パターンベース構文解析
- 手続き間意味解析
- カバレッジ誘導型ファジング
- 依存関係解析およびSBOM
制限として、実行コンテキストの欠如、実際のリスクに基づく優先順位付けの欠如、テレメトリとの統合の低さが挙げられる。
- 脅威モデルと問題の形式化
攻撃者 $\mathcal{A}$ は以下の能力を持つと仮定する。
- 既知の脆弱性(公開CVE)を悪用する。
- 公開されたエンドポイントに任意の入力を送信する。
- 大規模に悪用を自動化する。
初期段階での内部特権アクセスは仮定しない。
アプリケーション $P$ の集約リスクを次のように定義する。
$$ R(P) = \sum_{v \in V(P)} P_e(v) \cdot I(v) \cdot E(v) $$
ここで:
- $P_e(v)$ は推定悪用確率である。
- $I(v)$ はCVSS指標に基づく影響である。
- $E(v)$ はテレメトリから導出される動的露出係数である。
望ましいセキュリティ特性:
$$ \forall v \in V_{crit}, ; R(v) < \tau $$
ここで $\tau$ は組織的しきい値である。
- 提案手法
4つのモジュールから構成されるアーキテクチャ:
- Static Analyzer Incremental (SAI)
- Telemetry Collector (TC)
- Risk Estimator (RE)
- Policy Enforcement Engine (PEE)
Algorithm 1: 増分解析
Input: Commit c, Grafo G anterior
Output: Conjunto V' de vulnerabilidades atualizadas
1: Δ ← diff(c)
2: Atualizar CFG apenas para funções afetadas
3: Recalcular fluxos de dados locais
4: Propagar efeitos interprocedurais limitados
5: Retornar V'
近似計算量:
$$ O(|\Delta| \log n) $$
Algorithm 2: リスク推定
Input: Vulnerabilidade v
Output: R(v)
1: Pe ← ModeloProbabilistico(v)
2: I ← CVSS(v)
3: E ← FrequenciaEndpoint(v)
4: return Pe I E
- 実装
Kubernetes上でGoおよびPythonのマイクロサービスとしてEASEを実装した。C/C++の静的解析にはLLVMを使用し、JavaにはSoot、Node.jsにはEsprimaなどの専用フレームワークを使用した。テレメトリはOpenTelemetryを介して収集した。
システムは312のリポジトリ、合計4,800万LOCを処理した。グラフ保存にはPostgreSQLデータベースを使用した。
- 実験評価
環境: 64 vCPU、256GB RAMのクラスタ。
データセット: 312の企業リポジトリ。
ベースライン: SonarQube、Checkmarx、OWASP Dependency-Check。
結果:
- 偽陽性の削減: 37.4%(σ = 4.2%)。
- MTTRは14.2日から8.2日に短縮。
- コミットあたりの平均解析時間: 3.8分(ベースライン9.1分)。
- 精度: 0.91; 再現率: 0.88。
- 議論
テレメトリの統合は効果的な優先順位付けに決定的であることが示された。動的露出と実際に記録された悪用との間に0.72の相関を観測した。
制限として、テレメトリ品質への依存およびモデル化されていないゼロデイの不在が挙げられる。
- 結論と今後の研究
証拠に基づくAppSecは、偽陽性を削減しリスク優先順位付けを改善できることを示した。今後は、動的確率グラフモデルおよび組織間のフェデレーテッドラーニングの統合を計画している。
REFERENCES
[1] P. Cousot and R. Cousot, “Abstract Interpretation,” POPL, 1977.
[2] MITRE, “ATT&CK Framework,” 2023.
[3] OWASP, “Top 10,” 2021.
[4] Verizon, “DBIR,” 2023.
[5] NIST, “SP 800-53,” 2020.
[6] NIST, “SP 800-61,” 2018.
[7] M. Howard and D. LeBlanc, Writing Secure Code, Microsoft Press.
[8] ISO/IEC 27034, Application Security.
[9] CVE-2021-44228, NVD.
[10] CVE-2022-22965, NVD.
[11] CISA, Known Exploited Vulnerabilities Catalog, 2023.
[12] J. Viega et al., “Static Analysis,” IEEE Security & Privacy.
[13] B. Chess and J. West, Secure Programming with Static Analysis.
[14] OWASP SAMM, 2022.
[15] NIST SSDF, SP 800-218.
[16] A. Sabelfeld and A. Myers, “Language-Based Information-Flow Security,” IEEE JSAC.
[17] S. Christey, “Vulnerability Naming,” MITRE.
[18] Google, “OSS-Fuzz,” 2022.
[19] L. De Moura and N. Bjørner, “Z3,” TACAS.
[20] ISO/IEC 27001, 2022.