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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitLabGitLab/lycis/cawdog
組み込みシステムセキュリティ静的分析暗号化/復号化ツールコード分析リバースエンジニアリングハードウェアとIoTセキュリティ論文と研究学習と教育AIセキュリティ
GitLablycis/cawdog

Cawdog

リポジトリを見る
79ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →

概要

CAWODOGは、オフラインの産業用マシンにデプロイされたPythonベースのAIモデルを保護する方法を示す概念実証プロジェクトです。 3つの段階(0→2)を経て、以下のことを示します。 * 単純なPython AIアプリケーションが簡単にリバースエンジニアリングされてしまうこと、 * 攻撃者がパッケージ化されたバイナリからモデルを抽出する方法、 * ONNX変換、モデル暗号化、分離されたランタイムエンジンを使用してAIデプロイメントを強化する方法。 このPoCは、遊び心のある犬検出モデル("Cat World Dominance Group")を使用して、StarlingerのStarXプラットフォームのようなAI駆動型制御システムに適用される実際の産業IP保護コンセプトを説明しています。 これは、付随するホワイトペーパー「Hardening Python IP for Offline Industrial AI Deployments」の参照実装として機能します。

共有

CAWODOG – Pythonベース産業用AI向けIP保護PoC

CAWODOG(Cat World Dominance Group)は、オフラインの産業用マシンに展開されるPythonベースのAIモデルを保護するための、遊び心がありつつも現実的な概念実証です。

核となるアイデア: 犬(CAWODOGの「敵」)を検出する小さな画像分類器を用意し、シンプルなアプリでラップし、その後IP窃盗に対して展開を段階的に強化していくことです。

このPoCは、内部ホワイトペーパーの付属資料として設計されています:

オフライン産業用AI展開におけるPython IPの強化


目標

このリポジトリは、ステップバイステップで以下を示します:

  • ナイーブなPythonデプロイメントからモデルをいかに簡単に盗めるか
  • PythonアプリケーションをUI対エンジンに構造化する方法
  • 以下を使用してエンジンをパッケージ化し強化する方法:
    • Nuitka onefileビルド
    • ONNXエクスポート
    • モデルアーティファクトの対称暗号化
  • 各段階での攻撃者のワークフローの様子

リポジトリ構成

root@kitploit:~
.
├── 0/                     # Step 0 – Unhardened baseline
│   ├── model/             # Training + inference code
│   ├── app/               # Gradio-based web UI
│   ├── requirements.txt
│   └── (optional) build / run helpers
│
├── 1/                     # Step 1 – Packaged with Nuitka (Level 1)
│   ├── app/               # Same UI, adapted entrypoint
│   ├── model/             # Same model logic as step 0
│   ├── build.sh           # Nuitka onefile build script
│   └── requirements.txt
│
├── 2/                     # Step 2 – Encrypted ONNX model (Level 2)
│   ├── model/             # Training + ONNX export + encryption
│   ├── engine/            # Engine module (decryption + ONNX runtime + scoring)
│   ├── app/               # UI calling the engine only
│   ├── hardening/         # Encryption key + utilities (dev only)
│   ├── build.sh           # Nuitka onefile build script
│   └── requirements.txt
│
└── attacker/              # Attacker tooling (optional, for demo)
    ├── run_and_extract.sh # Finds Nuitka temp dir and lists contents
    ├── steal_model.sh     # Copies model file out of extracted payload
    └── use_stolen_model.py# Uses stolen model in a separate script

前提条件

  • Python 3.13(Nuitkaビルドを調整する場合は3.11以上)
  • 動作する仮想環境(python -m venv .venv)
  • OS: macOSでテスト済み。Linuxは小さな変更で動作するはずです。
  • 推奨: git、pip、および基本的なコマンドラインの知識

ほとんどのステップで以下が必要です:

root@kitploit:~
pip install -r requirements.txt

ステップ0 – ベースライン(未強化)

フォルダ: 0/ 目標: 訓練済みモデルとシンプルなWeb UIを備えたプレーンなPythonアプリ。保護なし。

含まれるもの

  • 以下を識別するよう訓練された小さな画像分類器(PyTorch + torchvision):
    • dog vs not_dog
  • トレーニングスクリプト(model_training.py):
    • data/dogとdata/not_dogを自動的に訓練/検証に分割
    • モデルファイル(例:model/models/dog_model.pt)を保存
  • 推論スクリプト(model_inference.py):
    • dog_model.ptを読み込む
    • 「犬」の確率を返す
    • おもちゃのヒューリスティックとして単純な「敵スコア」を計算
  • Gradioアプリ(app/gradio_app.py):
    • ブラウザで画像アップロードを許可
    • 推論+敵スコアを呼び出す
    • 確率とCAWODOG結果を表示

ステップ0の実行方法

リポジトリルートから:

root@kitploit:~
cd 0
python -m venv .venv
source .venv/bin/activate          # on Windows: .venv\Scripts\activate
pip install -r requirements.txt
  1. データの準備:

    root@kitploit:~
    0/data/
      dog/
        <dog images>.jpg
      not_dog/
        <non-dog images>.jpg
    
  2. モデルの訓練:

    root@kitploit:~
    python -m model.model_training
    

    これにより次のようなものが作成されます:

    root@kitploit:~
    model/models/dog_model.pt
    
  3. Gradioアプリの実行:

    root@kitploit:~
    python -m app.gradio_app
    
  4. 表示されたURL(デフォルトはhttp://127.0.0.1:7860)を開き、画像でテストします。

セキュリティ特性

  • モデルファイルはプレーンなPyTorchの重み(.ptファイル)として保存されます。
  • すべてのモデルロジックとスコアリングロジックは読み取り可能なPythonで書かれています。
  • 誰でもプロジェクトディレクトリをコピーしてすべてを再利用できます。

これが「前」の図です。

ステップ1 – レベル1の強化(Nuitka Onefile)

フォルダ: 1/ 目標: Nuitkaを使用してアプリを単一の実行可能ファイルにパッケージ化。 セキュリティ効果: 製品のように見えるようにするが、IPは保護しない。

ステップ0からの変更点

  • Nuitka用の専用エントリポイント(例:app/main.pyまたはcawodog_app.py)
  • ビルドスクリプト(build.sh):
    • 依存関係をインストール
    • --standaloneと--onefileフラグでNuitkaを実行
    • バンドルにモデルファイル(dog_model.pt)を含める
  • 結果は単一ファイルのバイナリ(例:cawodog_step1_nuitka)です。

ビルド例(簡略化)

root@kitploit:~
cd 1
source .venv/bin/activate
./build.sh

ビルド後、次のようなものが得られます:

root@kitploit:~
./cawodog_step1_nuitka

実行すると、以前と同じようにGradio UIが起動しますが、今度は単一の実行可能ファイルから起動します。

攻撃者シミュレーション(オプション、attacker/を使用)

attackerフォルダは、攻撃者がどのようにして以下を実行できるかを示しています:

  1. 単一ファイルバイナリを実行する(一時フォルダに展開される)
  2. $TMPDIR下のNuitka onefile展開ディレクトリを見つける
  3. そのディレクトリからdog_model.ptをコピーする
  4. use_stolen_model.pyを使用してアプリ外で予測を実行する

重要なポイント: レベル1は意味のある保護ではありません。パッケージ化であり、セキュリティではありません。

ステップ2 – レベル2の強化(暗号化ONNXエンジン)

フォルダ: 2/ 目標: モデルレベルで真のIP保護を導入。 セキュリティ効果: 競合他社はファイルをコピーするだけでモデルを使用できなくなります。

主な概念

  1. モデル形式の変換

    • PyTorchのONNXエクスポートを使用してdog_model.ptをdog_model.onnxに変換。
  2. モデルの暗号化

    • AES-GCMでdog_model.onnxを暗号化してdog_model.encに
    • 対称鍵をhardening/dev_model.keyに保存(PoC目的)
  3. エンジンの抽象化

    • 以下を行うengine/core.pyを導入:
      • 実行時にdog_model.encを復号
      • ONNX Runtimeに読み込む
      • predict_is_dog()やenemy_score()などの関数を公開
  4. オーケストレーターとしてのUI

    • app/gradio_app.pyは生のモデルファイルや内部構造を見なくなりました。
    • エンジン関数のみを呼び出します。

ステップ2の典型的なワークフロー

root@kitploit:~
cd 2
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  1. モデルを訓練(または再利用)(ステップ0と同じですが、2/内で行います):

    root@kitploit:~
    python -m model.model_training
    
  2. ONNXにエクスポート:

    root@kitploit:~
    python -m model.export_to_onnx
    # produces model/models/dog_model.onnx
    
  3. ONNXモデルを暗号化:

    root@kitploit:~
    python -m hardening.encrypt_model
    # produces model/models/dog_model.enc and hardening/dev_model.key
    
  4. Nuitkaでビルド(build.sh経由):

    root@kitploit:~
    ./build.sh
    

    完了時に鍵が表示されます。プログラムが暗号化モデルを読み込むには、環境変数CAWODOG_MODEL_KEY_HEXをその鍵に設定する必要があります。異なる鍵を使用するとエラーになります。

  5. 結果の単一ファイルバイナリを実行します。UIは以前と同じように動作するはずです。

セキュリティ特性

  • ディスク上のモデルファイル(dog_model.enc)は暗号化されています。
  • カジュアルな攻撃者は以下ができません:
    • dog_model.encを直接PyTorchで読み込む
    • モデルを簡単に検査または変更する
  • 攻撃者は今度は以下が必要です:
    • 暗号化鍵を知っている
    • AES-GCM復号ロジックを理解する
    • ONNXファイルを抽出して再構築する

まだハードウェアのルートオブトラストには結びついておらず、熟練したリバースエンジニアは最終的にモデルを再構築できるかもしれませんが、ハードルはステップ1よりもはるかに高くなっています。

脅威モデルと制限事項

このPoCは以下に焦点を当てています:

  • オフラインの顧客サイトに出荷されるAIモデルの保護
  • 産業スパイのコストを引き上げる
  • 瞬間的な「完全なセキュリティ」ではなく、段階的な強化レベルを示す

以下を主張するものではありません:

  • 国家レベルの攻撃者によるリバースエンジニアリングを完全に防ぐ
  • ハードウェアベースのセキュリティモジュール(TPM、HSM、エンクレーブ)を置き換える
  • アップデート/パッチ配布やセキュアブートを解決する

デモでこのリポジトリを使用する方法

典型的な流れ:

  1. ステップ0 – ベースライン

    • すべてが簡単に検査および再利用可能であることを示す。
  2. ステップ1 – パッケージ化(Nuitka onefile)

    • きれいな単一バイナリを示す。
    • attacker/スクリプトを使用して、モデルがまだいかに簡単に盗まれるかを示す。
  3. ステップ2 – 暗号化ONNX

    • dog_model.encをコピーするだけでは不十分であることを示す。
    • これが産業用クライアントの実世界の展開にどのように対応するかを議論する。

その後、将来のさらなるレベル(ここではまだ実装されていません)について議論できます:

  • マシンにバインドされた鍵(TPM、ドングル)
  • ネイティブのRust/C++エンジン
  • アンチデバッグと完全性チェック
  • セキュアエンクレーブ / アテステーション

ライセンス

root@kitploit:~
MIT License

Copyright (c) 2025 Daniel Eder

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

ツールをダウンロード