V. Security and Privacy 本資料はICSE2013の以下の2件の論文の要約です。 Automated Software Architecture Security Risk Analysis using Formalized Signatures Path Sensitive Static Analysis of Web Applications for Remote Code Execution Vulnerability Detection V3: Path Sensitive Static Analysis of Web Applications for Remote Code Execution Vulnerability Detection Background: RCE (Remote Code Execution) は重大な問題である。 – OWASPによると PHP ではもっとも流行した問題である – XSS (Cross-site Scripting) の一種であるが、statefulなアタックである – 文字列以外の値も扱う必要がある Related work: – 静的文字列解析があるが、string constraintとnon-string constraintのmixed constraintを扱 えないものが多い • CFG-basedのもの: path-sensitiveではない – いくつか mixed constraint を扱えるものがあるが、不十分である • Symbolic execution ベース 文献[12][25]: 実行パスに対して解析 & 固定の文字列長 • Mixed constraint を一つの制約言語に変換 文献[28]: non-string constraint に弱い • 「limited」であると主張しているけど、具体的に扱えない例を出していない気がします。 Approach: – プログラムから string constraint / non-string constraint を区別して抽出し、iterative かつ alternative な方法で解く Contributions: – Context- and path-sensitive な静的解析であり、string solver と SMT solver を用いる方法 – プログラムを string / non-string な二つのサブプログラムへ分割して、それぞれの制約を抽出 し、これらの制約を同時に解く – 10個のWebアプリに適用し21個のRCEを発見した。そのうち8個は未報告のものだった! – その他いろいろ工夫: stateful な部分、ファイルの動的inclusion、など Evaluation: – LLVMを利用(SSA変換のため) – STP (non-string constraint solver) と HAMPI (string constraint solver) を利用 脆弱性の例 脆弱性の要点: 1. config.inc.php には getConfigFile() から返る値を書き込む。 2. getConfigFile()では、$_SESSION[“ConfigFile0”][“Servers”]のキーの値$codeが返る。 3. $codeには、arbitrary_php_scriptを記述できる。 Mixed制約解消のアルゴリズム 前提: – Loopはunrollする – プログラムを string と non-string の部分に分割し、それぞれの制約を N, P とする 手続き driver : – N を STP solver で充足判定 • UNSATなら安全(UNSAT) • SATの場合、解(充足するassignment)をRとする – P を HAMPI で充足判定 • UNSATなら安全(UNSAT) – P を R の条件で HAMPI で充足判定 • SATならRを返す 手続き iterSolver : 再帰的な手続きで充足するパス(変数への割り当て)を探す – Rが空ならSを返す (Sは解) – Rから一つずつ変数bと値bvを取り出して、 • b=bvをSに加えて P を S の条件で充足判定し SAT なら、b=bvをRから取り除いて interSolver を行う • b!=bvのときの N の充足判定を行い、UNSATなら UNSAT を返す • b!=bvのとき、P についても同様に充足判定を行い、UNSAT なら UNSAT を返す • b!=bvを除外して、interSolverを再度行う V4: Automated Software Architecture Security Risk Analysis using Formalized Signatures Background: 開発前におけるソフトウェアアーキテクチャのセキュリティ・レビューは重 要である。 – アーキテクチャの評価には大きく分けて、シナリオベースとメトリクスベースのものがある – セキュリティの評価においては、特定の事前定義されたルールによって行われる • 攻撃シナリオによる評価: セキュリティ上の要求や目的からシナリオを導出 • Security metricsによる評価: 決まったものが実装されている 動機(扱う問題): – アーキテクチャを解析するツールがない – アーキテクチャ評価基準を記述するための言語がない アプローチ: – Attack scenario や security metrics / signature を OCL (Object Constraint Language) を用 いて記述し、attack scenario や security metrics を求める – 脆弱性をOCLで書いてコード解析を行った研究の拡張 • M. Almorsy, J. Grundy, and A. S. Ibrahim, "Supporting Automated Vulnerability Analysis using Formalized Vulnerability Signatures“, ASE, 2012, pp. 100-109. 論文の貢献: – OCLによる security signatures の記述方法 – OCLで記述された scenario や metrics signature をチェックするためのメタモデル (systemsecurity metamodel) – SDM (system description model) と SSM (security specification model) を提案 ScenarioとMetricsの例 Architecture Security Analysis Scenarios – CAPEC (Common Attack Pattern Enumeration and Classification)のパターン • 例: Man-in-the-Middle, Denial of Service, Data Tampering, Injection Architecture Security Metrics – System Architecture Security Metrics • These metrics can be used to assess the exposure, exploitability, and attack-ability of the software system given its architecture, design, and may be code details. • Attack Surface Metric, Compartmentalization Metric, Least Privilege Metric, Fail Securely Metric – Security Architecture Metrics • Defense-In-Depth (Layered Security) Metric, Isolation Metric 評価方法 評価における問題 – アーキテクチャまで資料として残るプロジェクトの欠如 解決方法 – Manualでコードからアーキテクチャを復元 • 1万~40万行のオープンソースソフトウェア 結果 – Precision, recall, f-measure のいずれも90%前後で検出 – アーキテクチャ等をmanualで作成しているので、ややbiasがかかっていると思うが、メタモデル (system-description model)に基づくOCLだけで、それだけ書けることが分かったことが重要 (だと思う)
© Copyright 2024 ExpyDoc