Skip to main content
QUICK REVIEW

[論文レビュー] Z3str3: A String Solver with Theory-aware Branching

Murphy Berzish, Yunhui Zheng|arXiv (Cornell University)|Apr 26, 2017
Web Application Security Vulnerabilities参考文献 12被引用数 11
ひとこと要約

Z3str3 は、検索中に単純な理論リテラルを優先する理論に配慮した分岐という技術を導入した、高性能な文字列 SMT ソルバである。Z3 の DPLL(T) SAT ソルバを変更することで、Z3str3 は工業的ベンチマーク(Kaluza、PISA、IBM AppScan)において Z3str2、CVC4、Norn、S3、S3P よりも高速な解決時間とより高い耐障害性を達成し、誤りの少ない性能を発揮した。

ABSTRACT

We present a new string SMT solver, Z3str3, that is faster than its competitors Z3str2, Norn, CVC4, S3, and S3P over a majority of three industrial-strength benchmarks, namely Kaluza, PISA, and IBM AppScan. Z3str3 supports string equations, linear arithmetic over length function, and regular language membership predicate. The key algorithmic innovation behind the efficiency of Z3str3 is a technique we call theory-aware branching, wherein we modify Z3's branching heuristic to take into account the structure of theory literals to compute branching activities. In the traditional DPLL(T) architecture, the structure of theory literals is hidden from the DPLL(T) SAT solver because of the Boolean abstraction constructed over the input theory formula. By contrast, the theory-aware technique presented in this paper exposes the structure of theory literals to the DPLL(T) SAT solver's branching heuristic, thus enabling it to make much smarter decisions during its search than otherwise. As a consequence, Z3str3 has better performance than its competitors.

研究の動機と目的

  • 複雑な文字列制約を含む工業的ワークロードにおける文字列 SMT 解法の性能ギャップを是正すること。
  • DPLL(T) の分岐ヒューリスティクスを理論リテラルの構造的複雑さに敏感にすることで、文字列ソルバの探索効率を向上させること。
  • Norn や S3 といった以前のツールで見られたクラッシュや誤った応答を減らすことで、耐障害性と正しさを向上させること。
  • 実世界のセキュリティ解析で一般的な長さ制約と正規表現のメンバーシップを含む文字列制約を、より速く解けるようにすること。
  • Z3 SMT フレームワークにネイティブに統合されたスケーラブルで効率的かつ整合的な文字列ソルバを提供すること。

提案手法

  • 理論に配慮した分岐は、Z3 のコア SAT ソルバを拡張し、リテラル活動に理論に配慮した成分 ($A_t$) を追加することで、単純な理論リテラルを複雑なものより優先する。
  • 新しい変数を導入しない配置には高い $A_t$ 値(0.5)を、より複雑な分割には低い値(0.1)を割り当てる。
  • 変数を定数文字列に等しくするリテラルには、小さな正の $A_t$ 値(0.2)を割り当て、単純な統合を優遇する。
  • この手法は Z3 の DPLL(T) アーキテクチャに直接統合され、SAT ソルバの分岐意思決定プロセスに理論リテラルの構造を露出する。
  • 理論に配慮したケーススプリット最適化により、ブール抽象化における互いに排他的なブール変数を効率的に表現できる。
  • 文字列方程式、長さ制約、正規言語メンバーシップをサポートし、CVC4 文字列 SMT 標準に準拠している。

実験結果

リサーチクエスチョン

  • RQ1理論に配慮した分岐で DPLL(T) の探索を誘導することで、工業的文字列ベンチマークにおける解法性能が向上するか?
  • RQ2直接等価性を優先し、変数の分割を避けた単純な理論リテラルの配置を優先することで、収束が速くなるか?
  • RQ3実世界の文字列制約問題において、Z3str3 は Z3str2、CVC4、Norn、S3、S3P と比較して性能と正しさの点で優れているか?
  • RQ4理論に配慮した分岐は、探索空間の探索をどの程度削減し、解法時間を短縮するか?
  • RQ5理論に配慮した分岐は、クラッシュや誤った応答を減らすことで、文字列ソルバの耐障害性を向上させるか?

主な発見

  • Kaluza ベンチマークでは、Z3str3 が 34,885 個の SAT ケースと 11,786 個の UNSAT ケースを解き、Z3str2、CVC4、Norn、S3、S3P よりも合計解決時間が短かった。
  • PISA ベンチマークでは、Z3str3 はすべてのケースを正しく解釈したが、S3 は 3 ケースで誤って UNSAT を報告し、1 ケースでタイムアウトとなった。
  • AppScan ベンチマークでは、Z3str3 はエラーなしですべてのケースを解釈したが、S3 は 2 ケースで UNKNOWN を返し、他の 4 ケースでは無効なモデルを生成した。
  • Z3str3 はタイムアウトが 84 回(20 秒制限)にとどまったが、CVC4 は 193 回のエラー、Norn は 276 回のタイムアウトを記録し、より優れた耐障害性を示した。
  • Kaluza での合計解決時間は Z3str3 が 5,275.11 秒で、Norn(109,280.76 秒)と S3(10,544.06 秒)より著しく速かった。
  • Z3str3 はすべての 3 つのベンチマークで最速であり、Z3str2 と CVC4 は競合可能ではあるが全体的に遅く、Norn と S3 は顕著な正しさと性能の問題を示した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。