Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
silica — AArch64命令エンコーディング全43億通りの網羅的差分検証。 | Kitploit
ツール/GitHubGitHub/nathan-luevano/silica
静的分析動的分析 (サンドボックス)脆弱性分析リバースエンジニアリングファジングユーティリティとフレームワークバイナリ解析論文と研究
GitHubnathan-luevano/silica

silica

AArch64命令エンコーディング全43億通りの網羅的差分検証。

リポジトリを見る
21日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
ウェブサイト
共有

SILICA

AArch64デコーダがアーキテクチャとどこで食い違うかの完全な地図。

Silicaは、4,294,967,296個のすべての可能なA64命令ワードを走査し、 Capstone、LLVM、UnicornをArmの機械可読仕様と比較し、 その差異を再現可能な証拠へと変える。

Rust Python PyPI License: Apache 2.0 Goals verified Encodings swept


逆アセンブラが「有効」と言うのは簡単だ。それが正しいかどうかを知るのはもっと難しい。 ほとんどの差分テストは、ツール間で意見が食い違うことを明らかにできるが、 独立したオラクルなしには正しい答えを特定できない。SilicaはArmのXMLリリースを そのオラクルとして使用する。

A64は異常に徹底した実験を可能にする。命令はちょうど32ビット幅なので、 エンコーディング空間全体が有限であり、列挙することが実用的だ。 Silicaはこの特性を活用している。以下の有効性の結果は推定でも ファジングキャンペーンでもない。すべての可能なワードが検査されている。

Silicaが見つけたもの

これらの結果は(Armv9.6-A)を使用している。走査は 2³²個のエンコーディングすべてをカバーする256個の独立して検証されたシャードに 分割された。

ISA_A64_xml_A_profile-2026-06_mc
結果件数空間全体に占める割合
Arm仕様により割り当て済み1,799,435,77641.9%
Arm仕様により未割り当て2,495,531,52058.1%
発見された有効性の不一致723,801,67816.9%
最小のupstream-ready再現プログラム10—

エンコーディングが有効かどうかに関する仕様との一致:

デコーダ一致率視覚化
Capstone84.8%█████████████████████████░░░░░
LLVM87.6%██████████████████████████░░░░
Unicorn88.3%██████████████████████████░░░░

この大きな有効性のギャップには特定可能な原因がある。Unicornは命令を実行して トラップを観測することで有効性をテストするが、他のオラクルは実行せずにデコードする。 少数の領域は、コンパイル済み仕様オラクルが評価しないデコード時のUNDEFINED 条件の影響も受けている。Silicaはこれらの制限を結果から平滑化するのではなく 記録する。

命令テキスト

レンダリングされたニーモニックとオペランドの比較は、有効性ビットの記録よりも はるかに高コストである。そのためSilicaは、4つのオラクルすべてがエンコーディングを 有効とみなす1,266,064,016個の候補から抽出した1,000,000ワードの決定論的サンプルで テキストを評価する。これはサンプリング結果であり、網羅的な有効性の数値とは 意図的に分けて扱われる。

サンプル内の分類レコード数割合
オペランドのレンダリングが異なる862,64886.3%
正規化のレビューが必要137,35213.7%

このサンプルは正規化と表示作業の所在を特定するのに役立つが、 すべてのテキストレンダリングの網羅的なカバレッジを主張するものではない。

結果を探索する

走査エンジンは大規模な研究データセットを生成する。silica-scope は、そのデータセットを扱いやすくするためのコンパニオンターミナルアプリである。 完成したSilicaアーティファクトディレクトリを開き、主要なメトリクスの閲覧、 256シャードのエンコーディングマップの検査、不一致のフィルタリング、 任意の32ビットワードの検索、提出可能な再現プログラムの閲覧を可能にする。

Python 3.11以降でPyPIからインストールする:

root@kitploit:~
pipx install silica-scope

次に、Silicaのチェックアウトから実行するか、アーティファクトディレクトリを指定する:

root@kitploit:~
silica-scope
silica-scope /path/to/silica/artifacts
silica-scope --report

silica-scopeはネイティブデコーダ依存のない純粋なPythonリーダーである。 網羅的な走査を起動することはなく、リポジトリのより小さな公開アーティファクト セットも適切に処理する。ペイン、キーボード操作、アーティファクト検出オプションに ついてはターミナルリーダーガイドを参照。

仕組み

root@kitploit:~
flowchart LR
    XML["Arm XML specification"] --> SPEC["compiled spec oracle"]
    SPEC --> SWEEP["parallel 32-bit sweep"]
    CAP["Capstone"] --> SWEEP
    LLVM["LLVM"] --> SWEEP
    UNI["Unicorn"] --> SWEEP
    SWEEP --> MAP["validity bitmaps"]
    MAP --> DIFF["exhaustive XOR comparison"]
    DIFF --> CORPUS["classified disagreement corpus"]
    CORPUS --> OUT["metrics · reproducers · result hash"]

高負荷なパスはRustで書かれており、各デコーダをインプロセスで呼び出す。 オラクルごとにエンコーディングあたり1ビットを格納することで、網羅的な比較を コンパクトに保ち、不一致を直接的なビットマップ演算にする。クラッシュは 正確な命令ワードまで二分探索される。

Pythonは仕様のコンパイル、正規化、レポート、独立検証レイヤーを担当する。 アーティファクトのスキーマ、サンプリング規則、既知の制限は docs/formats.mdに文書化されている。

作業を再現する

固定された環境を作成し、必要なローカル入力が利用可能であることを確認する:

root@kitploit:~
micromamba create -y -p ./.venv -f environment.yml
micromamba run -p ./.venv silica doctor

ArmのXML仕様はライセンスのためベンダリングされていない。silica doctorは Silicaがそれをどこで見つけることを期待しているか、およびその他の不足している 前提条件を報告する。

準備されたチェックアウトから完全なパイプラインを実行するには:

root@kitploit:~
make all

これは完全な2³²の走査であり、簡単なスモークテストではない。コンパイル済み オラクル、シャードレコード、有効性ビットマップ、不一致コーパス、公開メトリクス、 再現プログラム、安定したSHA-256結果ハッシュを生成する。

信頼せよ、されど検証せよ

7つの独立した検証器が、生のアーティファクトからプロジェクトの主張を再計算する。 それらは生成されたサマリーを信頼せず、各検証器には、それが防ぐ欠陥を検出する ことを証明するフィクスチャがある。スキップされた状態や暫定的な状態は存在しない。

root@kitploit:~
micromamba run -p ./.venv silica verify

固定されたデコーダバージョンと新たに再計算された結果ハッシュにより、別々の実行を 比較可能にする。検証目標とその現在のステータスはGOALS.ymlに 記録されている。

スコープ

Silicaは現在、ベースA64とAdvanced SIMDのデコードをカバーしている。SVE、SVE2、SME、 A32/T32、RISC-V、アセンブラのラウンドトリップ、一般的な実行テストはv1の研究の 範囲外である。

最も近いインスピレーションはSandsifterであり、 これはx86の可変長命令空間を探索する。Silicaは同じ系統的な懐疑の精神をAArch64に 適用する。そこでは固定幅エンコーディングと独立した仕様により、完全で裁定された 比較が可能になる。


Apache 2.0 — LICENSEを参照

ツールをダウンロード