mcpField
R
reverse-shield

reverse-shield

ローカル
github.com/GuardBeeセキュリティ2今日更新

reverse-shield について

リリース済みアプリがリバースエンジニアにどの程度の情報を与えるか調べる、開発者向け MCP サーバーです。Web、Electron、Android、ネイティブ、.NET の成果物をローカルでスキャンし、評価と修正案を示します。

主な機能

  1. 01ビルド成果物と公開サイトのスキャン
  2. 02Web、Electron、Android、ネイティブ、.NET の検査
  3. 03A〜F の評価を付与
  4. 04チェック項目と修正案の表示
  5. 05CI 向け SARIF 出力

活用シーン

  1. 01リリース前のビルド監査
  2. 02公開されたソースマップやクライアント認証情報の検出
  3. 03CI パイプラインへの成果物検査の追加

MCP 対応

ビルド成果物と公開 URL のスキャン、および修正案付きチェック項目の取得ツールを公開します。MCP クライアントからリリース済みアプリを検査できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"guardbee-reverse-shield": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-reverse-shield"
]
}
}
}
起動コマンドnpx -y @guardbee/mcp-reverse-shield

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@guardbee/mcp-reverse-shield0.3.1

ツール

4

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
pathstringはい成果物またはビルド出力ディレクトリへの絶対パスまたは相対パス
ignorearrayいいえ除外することを承認した検出結果:ルール ID、または rule:path-substring(例:bundle_secret:firebase-config.js)
excludearrayいいえパスに次の文字列のいずれかを含むファイル/ディレクトリをスキップします
includearrayいいえパスに次の文字列のいずれかを含むファイルのみをチェックします
baselinestringいいえ`guardbee-reverse-shield scan --update-baseline` によって書き込まれたベースラインのパスです。レポートには新規および修正済みの指摘が表示されます
maxFilesintegerいいえディレクトリ内でチェックするファイル数の上限(デフォルト:5000)

詳細

@guardbee/mcp-reverse-shield

🇬🇧 英語 | 🇹🇷 トルコ語 | 🇨🇳 中国語

npm version npm downloads License: MIT

リリースしたアプリが、リバースエンジニアにどれだけの情報を簡単に与えてしまうかを知らせる MCP サーバーです。

リバースエンジニアリング用 MCP を使うと、エージェントはソースコードのないアプリ(Web バンドル、Electron アプリ、APK、ネイティブバイナリ、.NET バイナリなど)を取り込み、バイナリの詳細に至るまで、機能の仕組みを説明できます。このパッケージはその逆側を担います。自分のビルド成果物を指定すると、そうしたツール(または jadx、ILSpy、Hopper、ブラウザーの開発者ツールを使う人)が何の労力もなく取得できる情報と、それぞれの修正方法を報告します。

テレメトリはデフォルトでオフです。GUARDBEE_TELEMETRY=1 を設定すると、サーバー名、ツール名、成功の有無、処理時間、ファイルパスなどの短いパラメーター値が送信されます。長い文字列や content、token、password などのフィールドはプレースホルダーに置き換えられます。詳しくは @guardbee/mcp-telemetry をご覧ください。

Claude ──► reverse-shield ──► your build artifact / live site
              │
              ├─ web       source maps (shipped, inline, publicly reachable), unminified / dev bundles, keys, internal hosts
              ├─ electron  fuses (RunAsNode, --inspect, NODE_OPTIONS, ASAR integrity), unpacked app code, code inside app.asar
              ├─ android   debuggable, R8/ProGuard missing, signing scheme, backup, plain React Native bundle, unstripped .so
              ├─ native    debug info, symbols, get-task-allow, hardened runtime, signing, PIE/NX/RELRO/canary (ELF, Mach-O, PE)
              └─ .NET      obfuscation missing, embedded PDB, leaked build paths

scan_url を除き、すべてローカルかつオフラインで実行されます。ASAR、Electron の fuse wire、バイナリ形式の AndroidManifest(AXML)、DEX、ELF、Mach-O(ユニバーサルバイナリとコード署名を含む)、PE/.NET メタデータ用のパーサーを備えており、apktool、jadx、binutils は不要です。

検出する項目

チェック項目重大度対象漏えいする情報
sourcemap_embeds_sourcecriticalwebsourcesContent に含まれるソース全体
sourcemap_shipped / sourcemap_inline / sourcemap_publicly_reachablehighweb元のファイルパスと構造
eval_devtool_bundlehighweb各モジュールのパスを含む開発用バンドル
bundle_secretキーの種類によるwebクライアントコード内で使える認証情報
unminified_bundle / dev_build_frameworkmediumweb読みやすいコード/フレームワークの開発用ランタイム
sourcemap_reference / internal_endpointlowwebマップの場所/localhost、プライベート IP、ステージングホスト
electron_fuse_run_as_node / electron_fuse_inspect_argshighelectron署名済みアプリ内の Node ランタイムまたはデバッガー
electron_app_unpackedhighelectron編集可能なフォルダーとしてのアプリコード
electron_fuse_node_options / _asar_integrity_off / _load_outside_asarmediumelectronコードインジェクションと ASAR の改ざん
apk_debuggablecriticalandroidアプリのデータへのデバッガー接続と run-as
apk_no_obfuscation / apk_js_bundle_plaintext / apk_unsignedhighandroid実際の名前を含む jadx の出力/読み取り可能な RN バンドル/改ざんの証拠がないこと
apk_allow_backup / apk_v1_only_signaturemediumandroidバックアップ経由で取得されるデータ/Janus 型の再パッケージ化
native_debug_info / native_debuggable_entitlementhighnativeソースレベルのデバッグ情報/lldb 接続
native_symbols_not_stripped / native_no_hardened_runtime / native_injection_entitlement / native_unsignedmediumnative関数名/dylib インジェクション/パッチ済みコピーの実行
native_no_pie / native_no_nxmediumnative悪用しやすい固定アドレス/実行可能なスタック
native_no_relro / native_no_stack_canary / native_adhoc_signed / native_build_path_leaklownativeハードニングの不備とビルドホストの詳細
dotnet_not_obfuscated / dotnet_embedded_pdbhigh.NET元のソースに近い ILSpy/dnSpy の出力

list_checks は修正方法を含む完全なカタログを返します。各結果には A〜F の評価が付与されます。重大な問題(または複数の高リスクの問題)が漏えいしている場合は F、何もない場合は A です。

判断が難しいチェック項目の判定方法
  • R8/ProGuard:すべての classes*.dex からクラス記述子を読み取り、アプリケーション ID 配下のクラス(.debug 型の ID の場合は、マニフェストに記載されたコンポーネントのパッケージ配下も含む)を確認します。説明的なクラス名が数十個あり、1〜2 文字の名前がほとんどない場合、R8 は実行されていません。
  • .NET の難読化:メタデータの #Strings ヒープを読み取ります。既知の難読化ツールのマーカー(ConfuserEx、Dotfuscator、SmartAssembly など)があれば、ただちに合格となります。それ以外の場合は、識別子の 10% 以上が 1〜2 文字の名前、数字だけの名前、または ASCII 以外の不正な文字であれば、アセンブリは合格となります。Obfuscar でビルドしたアセンブリ(21%、合格)と、難読化されていない NuGet アセンブリ 400 個(383 個を検出。残りの 17 個は、判定可能な名前が少なすぎるリソース専用アセンブリ)を使って検証しています。
  • 秘密鍵:PEM ヘッダーに続いて base64 形式の鍵データがある場合に限り報告されます。アプリにバンドルされた暗号ライブラリには、文字列定数としてこのヘッダーが含まれます。
  • 重複:30 個のチャンクに含まれる 1 つの鍵は、1 件の検出結果(「ほか 29 個のファイルにもあります」)として扱われます。また、難読化されていないファイルの長い一覧は 1 件にまとめられます。

クイックスタート

{
  "mcpServers": {
    "guardbee-reverse-shield": {
      "command": "npx",
      "args": ["-y", "@guardbee/mcp-reverse-shield"]
    }
  }
}

次に、エージェントにこう尋ねてください:「./release/MyApp.app のリバースエンジニアリングはどれほど簡単ですか?ビルド設定で対応できる箇所を修正してください。」

npx @guardbee/mcp-reverse-shield scan ./dist --fail-on=high
npx @guardbee/mcp-reverse-shield scan ./app/build/outputs/apk/release/app-release.apk
npx @guardbee/mcp-reverse-shield scan "/Applications/My App.app" --format=json
npx @guardbee/mcp-reverse-shield scan https://app.example.com --format=sarif > reverse-shield.sarif

ツール

ツール目的
scan_artifactファイルまたはディレクトリをスキャンします:APK、.app、Electron フォルダー、app.asar、ELF/Mach-O/PE/.NET バイナリ、JS バンドル、ソースマップ、またはビルド出力フォルダー
scan_urlライブページを取得し、同一サイトのバンドルを確認し、sourceMappingURL をたどって <bundle>.map をプローブします(サードパーティのスクリプトは取得しません)
list_checks各検出結果から何が分かるか、および修正方法をまとめたチェック項目一覧

dist/、build/、out/ を含むディレクトリを走査します(それが目的です)。node_modules、VCS、キャッシュのフォルダーはスキップします。また、内部に見つかった macOS の .app または Electron フォルダーは、バンドルされたサードパーティのフレームワークを除き、ヒューズ、ASAR、独自の実行ファイルを含む1つの単位としてスキャンします。

guardbee.yml:

reverse-shield:
  fail-on: high
  max-files: 5000
  exclude:
    - "vendor/"

CI

- run: npx @guardbee/mcp-reverse-shield scan ./dist --fail-on=high --format=sarif > reverse-shield.sarif
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: reverse-shield.sarif

制限事項

  • 難読化は制御フローではなく名前に基づいて判定されます。名前を変更しただけのビルドは合格しますが、文字列の暗号化や制御フローの平坦化は測定されません。
  • Web のチェックでは、配布されるものを確認します。キーが公開を想定したものかどうかは判定できません(Firebase の Web キーなど、一部のキーはサーバー側で制限されています)。キーをローテーションするか制限したうえで、パスを exclude に追加してください。
  • ネイティブのハードニングチェック(PIE/NX/RELRO/canary)は、リバースエンジニアリング対策ではなくエクスプロイト緩和の指標です。そのため、重大度は低または中として報告されます。
  • iOS の .ipa と Android App Bundle(.aab)は、まだ展開されません。.ipa 内の .app、またはバンドルからビルドしたユニバーサル APK をスキャンしてください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。