Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ship-safe — AIが書いたソフトウェアのための独立したセキュリティエージェント。問題を発見し、それが実在するかどうかを調査し、証拠を提示します。決定論的なコア、APIキー不要、JSONおよびSARIF出力。 | Kitploit
ツール/GitHubGitHub/asamassekou10/ship-safe
クラウドインフラストラクチャセキュリティ静的分析コンテナセキュリティAPIセキュリティテスト構成監査DevSecOpsモバイルセキュリティシークレット検出サプライチェーンセキュリティレッドチーミングAIセキュリティ
785978315日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
asamassekou10/ship-safe

ship-safe

AIが書いたソフトウェアのための独立したセキュリティエージェント。問題を発見し、それが実在するかどうかを調査し、証拠を提示します。決定論的なコア、APIキー不要、JSONおよびSARIF出力。

リポジトリを見るウェブサイト
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/49363/b1f8834990a38d393bed6703c926c2f633c9d6afc19261eb02c67e9d45b7f350.png" alt="Ship Safe ロゴ" width="180" />
</p>
<p align="center"><strong>AI が書いたソフトウェアのための独立したセキュリティエージェント。問題を発見し、それが実在するかどうかを調査し、その証拠を提示します。</strong></p>
<p align="center"><a href="https://shipsafe.sh">ウェブサイト</a> · <a href="https://shipsafe.sh/docs">ドキュメント</a> · <a href="https://shipsafe.sh/security">セキュリティとデータフロー</a> · <a href="https://shipsafe.sh/benchmarks">ベンチマーク</a> · <a href="https://shipsafe.sh/pricing">料金</a> · <a href="https://shipsafe.sh/blog">ブログ</a> · <a href="https://github.com/asamassekou10/ship-safe/contribute">コントリビュート</a></p>

<p align="center">
  <a href="https://www.npmjs.com/package/ship-safe"><img src="https://badge.fury.io/js/ship-safe.svg" alt="npm バージョン" /></a>
  <a href="https://www.npmjs.com/package/ship-safe"><img src="https://img.shields.io/npm/dm/ship-safe.svg" alt="npm ダウンロード数" /></a>
  <a href="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml"><img src="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="ライセンス: MIT" /></a>
  <a href="https://github.com/asamassekou10/ship-safe/stargazers"><img src="https://img.shields.io/github/stars/asamassekou10/ship-safe?style=social" alt="GitHub スター数" /></a>
  <a href="https://github.com/sponsors/asamassekou10"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github" alt="スポンサー" /></a>
</p>

## Ship Safe CLI

Ship Safe はリポジトリ内でローカルに動作し、2 つのレイヤーで機能します。

**決定論的エンジン**は、アプリケーションコード、AI エージェント、MCP 設定、プロンプト、依存関係、CI/CD、シークレット、クラウド関連の設定にわたって問題を検出します。高速で再現性があり、ベンチマーク済みです — これがセンサーレイヤーです。

次に**調査レイヤー**が、検出結果にどれだけの価値があるかを判断します。シンクに到達する値を追跡し、ルールが欠落していると指摘する制御をプロジェクト内で検索し、単一のファイルには含まれない設定をまたいだ攻撃チェーンを構築し、さらに指示があれば、漏洩したキーをそのプロバイダーに対してプローブします。すべての結論には、そこに至ったパスと読み取った行が付随します:

```
CONFIRMED — traced end to end (10)

    NoSQL Injection via $where [high]
    app/data/allocations-dao.js:78  NOSQL_INJECTION_WHERE
    why: threshold is assigned from the HTTP request and reaches the sink without validation on that path.
    decided by: dataflow
      1. value reaches NOSQL_INJECTION_WHERE here  app/data/allocations-dao.js:78
      2. getByUserIdAndThreshold is called here with threshold  app/routes/allocations.js:23
      3. threshold is assigned here  app/routes/allocations.js:20
    fix: Replace $where with standard MongoDB operators ($eq, $gt, $regex, etc.)
```

<sub>OWASP NodeGoat に対して <code>ship-safe investigate</code> を実行した実際の出力。汚染された値はルートファイルで分割代入され、3 ディレクトリ離れた DAO に渡されています。</sub>

まずは 1 つのコマンドから:

```bash
npx ship-safe
```

サインアップ不要。スキャンにAPIキーは不要です。コアチェックはオフラインで動作します。AIを活用したレッドチームモードは、利用可能な場合に設定済みのプロバイダーを使用します。

完全にローカルなスキャンを保証するには `--no-ai` を使用してください。プロバイダーを利用した分類、詳細分析、およびGPT-Redは、ベストエフォートの認証情報マスキング後に、選択したプロバイダーへ直接、限定的なコンテキストを送信します。正確な境界とコンテキスト制限については[セキュリティとデータフロー](https://shipsafe.sh/security)を参照してください。

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/49363/75988a5baca705edcd06c5d39049d35be36f660fad2362de6700cf40eb72d2dd.gif" alt="Ship Safe REPL デモ" width="800" />
</p>

---

## クイックスタート

22.x系のNode.js 22.13以降、またはNode.js 24以降が必要です。Node 18および20は、現在の開発バージョンではサポートされなくなりました。

```bash
# Interactive REPL: scan, fix, and ask questions in one session
npx ship-safe

# Full audit: secrets + 31 agents + deps + remediation plan
npx ship-safe audit .

# Investigate: confirmed / likely / unresolved / refuted, with the evidence
npx ship-safe investigate .
npx ship-safe investigate . --all       # also detail unresolved and refuted
npx ship-safe investigate . --verify    # probe leaked keys against their providers

# Before you open an unfamiliar folder with an agent: what runs on open?
npx ship-safe trust ~/Downloads/take-home
npx ship-safe trust . --json

# What can an AI agent working in this repo actually reach?
npx ship-safe capabilities .

# AI agent red-team scenarios for agent-readable content
npx ship-safe red-team . --gpt-red

# Interactive fix agent: plan, diff, approve, inspect the static rescan
npx ship-safe agent .
npx ship-safe agent . --severity critical   # critical findings only
npx ship-safe agent . --branch --pr         # fix on a branch + open a PR

# Undo the last fix
npx ship-safe undo

# CI/CD mode — fails on any critical finding
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high              # stricter: critical or high

# Gate on evidence instead of severity: block only what was established
npx ship-safe ci . --fail-on-verdict confirmed
npx ship-safe ci . --ignore-refuted            # do not block on what was argued away
```

プルリクエストでは、信頼できるベーススキャンとヘッドスキャンを比較することで、既存のリポジトリの負債を可視化したまま、無関係な変更をブロックしないようにします:

```bash
# On the trusted base revision
npx ship-safe ci . --fail-on none --no-deps \
  --write-baseline-report /tmp/ship-safe-base.json

# On the pull request head
npx ship-safe ci . --base-report /tmp/ship-safe-base.json --fail-on high
```

ベース成果物には、ハッシュ化された検出結果の識別子、相対パス、およびルールのメタデータが含まれます。生のマッチしたシークレットは保存されません。PRの結果は検出結果を導入済み、解決済み、未変更、または不確定として分類します。曖昧なマッチは表示されますが、プルリクエストをブロックしません。

### 機械可読レポートの契約

`scan --json`、`audit --json`、および `ci --json` には `schemaVersion: 1`、Ship Safe のバージョン、および UTC の `generatedAt` タイムスタンプが含まれます。検出結果のパスはデフォルトでプロジェクト相対となっており、ローカルディレクトリ名を漏らすことなくワークステーションと CI の間でレポートを移動できます。コンシューマが明示的にホストパスを必要とする場合にのみ `--absolute-paths` を使用してください。SARIF レポートはツールメタデータに同じパッケージバージョンを含みます。

## Ship Safe が検出するもの

| 領域 | 例 |
|------|----------|
| AI および LLM セキュリティ | プロンプトインジェクション、エージェントハイジャック、過剰な権限、メモリポイズニング、RAG ポイズニング、安全でないツール呼び出し |
| MCP およびエージェント設定 | 過度に広範なツール権限、汚染されたレジストリ、信頼できないトランスポート、危険な許可リスト |
| アプリケーションセキュリティ | SQL/NoSQL インジェクション、XSS、SSRF、認証バイパス、パストラバーサル、安全でない API ルート |
| シークレットおよびコンプライアンス | API キー、トークン、認証情報、PII、git 履歴に漏洩したシークレット |
| サプライチェーン | タイポスクワッティング、依存関係の混同、危険なインストールスクリプト、固定されていない AI アクション |
| CI/CD | パイプラインのポイズニング、固定されていない GitHub Actions、シークレットのログ出力、安全でないワークフロートリガー |

## 仕組み

1. **ローカルでスキャン** - Ship Safe は対象を絞ったエージェントでリポジトリを検査し、該当しないチェックをスキップします。
2. **各検出結果を調査** - 別々のパスがそれが本物かどうかを判断し、安価なものが高価なものを覆さないように順位付けされます。トレースされたデータパスは同じファイルに対するモデルの読み取りより上位に位置し、認証済みのプローブはその両方より上位に位置します。
3. **証拠を読む** - 検出結果は確認済み、可能性あり、未解決、または反証済みに解決され、それぞれが結論の根拠となった行を引用するため、重大度ラベルではなくステップに対して異議を唱えることができます。
4. **制御しながら修正** - エージェントは計画と差分を提案し、書き込み前に確認を求め、静的な再スキャンの証拠を報告し、変更を可逆に保ちます。検出器の消失は独立した再テストではありません。[修正結果](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md)を参照してください。
5. **CI でゲート** - `ship-safe ci` を使用してリスクのあるビルドを失敗させ、SARIF を GitHub コードスキャンにアップロードします。

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/49363/31125a0161ee16c772304e3097cdea464c8988cdc8e818ebf8356506fa1f1314.gif" alt="Ship Safe エージェントのデモ" width="800" />
</p>

---

## 「コーディングエージェントにリポジトリをレビューさせればいいのでは?」

できますし、そうすべきです。実際の問題を見つけるでしょう。しかし、自分の作業について構造的に答えられない3つの問いがあります。

**このコードを書いたエージェントは自分の宿題を自分で採点しただけではないか?** 作者に作者がミスをしたかどうかを尋ねることはレビューではありません。Ship Safe は別の手法を持つ別のレビュアーであり、公の場で自分自身と意見を戦わせます。データフローのトレースはヒューリスティックパスを覆し、ライブプローブはその両方を覆します。

**到達できるものを見ることができるか?** リポジトリをレビューするコーディングエージェントは、MCP サーバー設定を読むことができず、起動時に付与された権限を列挙することもできず、まさにその到達範囲が問われている当事者です。`ship-safe capabilities` はそれらすべてを外部から読み取り、単独では目立たないが組み合わさると危険な組み合わせを報告します:

```
  CRITICAL  Repository-controlled instructions reach an unattended write capability
    1. CLAUDE.md is read as instructions and can be changed by anyone who lands a commit
       CLAUDE.md:1
    2. Claude Code runs without per-action approval
       .claude/settings.json:2
    3. shell execute granted: Bash(git push:*)
       .claude/settings.json:3
    4. filesystem write granted: Write
       .claude/settings.json:3
    5. mcp-tool write granted: mcp__github__create_pull_request
       .claude/settings.json:3
    Impact: Text committed to this repository can direct the agent to write files
            or run commands with no human in the loop.
    Boundary: Require approval for write and execute tools during sessions on
              untrusted branches, or remove the pre-granted entries.
```

そうした行はそれぞれ単独では目立たない。しかし合わせると、プルリクエストから特権書き込みに至る経路となり、単一ファイルのレビューでは見抜けない。なぜなら、その経路を含む単一ファイルは存在しないからだ。

**一貫しているか、そして改善したことを証明できるか?** 二度尋ねれば、二つの答えが返ってくる。Ship Safe のエンジンは決定論的であり、その結論は CI において、パターン網羅率ではなく*結論の品質*を採点するベンチマークでゲートされている。すなわち、既知の真の検出結果をいくつ確定できるか、既知のノイズをどれだけ反証できるか、そして真の検出結果を誤って反証してしまわないか、である。最後の数値の予算はゼロだ。それは脆弱性を静かに見逃す唯一のエラークラスである。[benchmarks/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks) を参照。

## 開発者が使う理由

- **AI ネイティブアプリ向けに設計**: エージェント、MCP サーバー、プロンプト、RAG フロー、マネージドエージェント設定、AI を活用した CI におけるリスクを検出する。
- **AI クライアントと連携**: ローカル stdio サーバーを通じて、Ship Safe を Codex、Claude Desktop、Cursor、Windsurf、その他の MCP クライアントに公開できる。
- **高速なローカルフィードバック**: コードをホスト型スキャナーに送ることなく、PR の前、レビュー中、または CI 内で実行できる。
- **修正をレビュー可能**: 提案されるすべての変更は、ファイルに適用される前に diff として表示される。
- **あなたのスタックと連携**: JavaScript、TypeScript、Python、設定ファイル、インフラストラクチャファイル、GitHub Actions などに対応。
- **オープンソースのコア**: ドキュメント、サンプル、成長中のエージェントシステムを備えた MIT ライセンスの CLI。

## 無料 CLI、有料のチームワークフロー

オープンソース CLI は、任意のリポジトリをローカルでスキャンする最速の方法だ。同じスキャナーの周囲にホスト型ワークフローが必要になったらアップグレードしよう:

| ニーズ | 利用するもの |
|------|-----|
| ローカルスキャン、監査、エージェント支援による修正 | 無料 CLI |
| スキャン履歴、クラウドダッシュボード、PDF レポート | Pro |
| 共有ワークスペース、PR Guardian、チームレポート、コラボレーション | Team |

プランの比較は [shipsafe.sh/pricing](https://shipsafe.sh/pricing) を参照。

Ship Safe Cloud は、スキャン履歴、PR Guardian、請求、チームワークフロー向けのホスト型ダッシュボードであり、商用製品のコードとホスト型インフラストラクチャのワークフローを含むため、プライベートリポジトリで開発されている。公開されている `ship-safe` リポジトリは、MIT ライセンスの CLI、セキュリティエージェント、ルール、フィクスチャ、CI 統合、ドキュメントに引き続き焦点を当てている。リポジトリの境界については [Ship Safe Cloud](https://github.com/asamassekou10/ship-safe/blob/main/docs/cloud.md) を参照。

---

## セキュリティエージェント

すべてのエージェントは並列で実行される。それぞれが無関係なプロジェクトを自動的にスキップする。

| エージェント | カテゴリ | 検出対象 |
|-------|----------|-----------------|
| **InjectionTester** | コード脆弱性 | SQL/NoSQLインジェクション、コマンドインジェクション、XSS、パストラバーサル、XXE、ReDoS、プロトタイプ汚染 |
| **AuthBypassAgent** | 認証 | JWTの欠陥(alg:none、弱いシークレット)、CSRF、OAuthの設定ミス、BOLA/IDOR、TLSバイパス |
| **SSRFProber** | SSRF | fetch/axiosにおけるユーザー入力、クラウドメタデータエンドポイント、内部IP |
| **SupplyChainAudit** | サプライチェーン | タイポスクワッティング、ワイルドカードバージョン、不審なインストールスクリプト、依存関係の混同 |
| **ConfigAuditor** | 設定 | Docker(rootユーザー、:latest)、Terraform、Kubernetes、CORS、CSP、Firebase、Nginx |
| **SupabaseRLSAgent** | 認証 | クライアントコード内のservice_roleキー、RLSのないテーブル、anonキーによる挿入 |
| **LLMRedTeam** | AI/LLM | OWASP LLM Top 10:プロンプトインジェクション、過剰な権限付与、システムプロンプトの漏洩 |
| **MCPSecurityAgent** | AI/LLM | MCPサーバーの誤用、ツールポイズニング、タイポスクワッティング、未検証の入力 |
| **A2ASecurityAgent** | AI/LLM | A2Aエージェントカードのポイズニング、認証の欠如、平文エンドポイント、安全でないプッシュコールバック、ピン留めされていないリモートカード([カバレッジ](https://github.com/asamassekou10/ship-safe/blob/main/docs/a2a-security.md)) |
| **AgenticSecurityAgent** | AI/LLM | OWASP Agentic AI Top 10:エージェントハイジャック、権限昇格、Kimi K3/OpenAI互換のツール呼び出しの誤用 |
| **RAGSecurityAgent** | AI/LLM | コンテキストインジェクション、ドキュメントポイズニング、ベクターDBのアクセス制御 |
| **MemoryPoisoningAgent** | AI/LLM | エージェントのメモリファイルへの命令インジェクション、隠しUnicodeペイロード(ASI-01、ASI-05) |
| **PIIComplianceAgent** | コンプライアンス | ソースコード内のSSN、クレジットカード、メールアドレス、電話番号 |
| **VibeCodingAgent** | コード脆弱性 | AI生成コードのアンチパターン:バリデーションなし、空のcatch、TODO認証 |
| **ExceptionHandlerAgent** | コード脆弱性 | 空のcatch、未処理のrejection、漏洩したスタックトレース(OWASP A10:2025) |
| **AgentConfigScanner** | AI/LLM | .cursorrules、CLAUDE.mdへのプロンプトインジェクション、悪意あるClaude Codeフック |
| **MobileScanner** | モバイル | OWASP Mobile Top 10 2024:安全でないストレージ、WebViewインジェクション、デバッグモード |
| **GitHistoryScanner** | シークレット | gitコミット履歴に漏洩したシークレット |
| **CICDScanner** | CI/CD | パイプラインポイズニング、ピン留めされていないアクション、シークレットのログ出力(OWASP CI/CD Top 10) |
| **APIFuzzer** | API | 認証なしのルート、マスアサインメント、GraphQLイントロスペクション、デバッグエンドポイント |
| **ManagedAgentScanner** | AI/LLM | Claude Managed Agentの設定ミス:always_allowポリシー、無制限のネットワーキング(ASI-03〜ASI-07) |
| **HermesSecurityAgent** | AI/LLM | ツールレジストリのポイズニング、関数呼び出しインジェクション、スキル権限のドリフト(ASI-01〜ASI-10) |
| **AgentAttestationAgent** | サプライチェーン | ピン留めされていないエージェントバージョン、整合性ハッシュの欠如、署名されていないマニフェスト(ASI-10、SLSA L0) |
| **AgenticSupplyChainAgent** | サプライチェーン | 過剰な権限を持つAI CIアクション、OAuthスコープの肥大化、署名されていないAI Webhookレシーバー(ASI-02、ASI-06) |
| **RobloxSecurityAgent** | サプライチェーン | 悪意あるRoblox/Luau Toolboxアセット(実行時アセットインジェクション、`rbxassetid://`ローダー、`HttpEnabled`、インスタンス属性に隠されたペイロード) |
| **ModelScanAgent** | サプライチェーン | MLモデルの重みに含まれるコード実行ペイロード(`.pt`/`.pkl`/`.ckpt`内のpickleオペコード)、`weights_only`なしの`torch.load`、スキャナー回避アーカイブ(CWE-502、CWE-506) |
| **TrustBoundaryAgent** | エージェント型 | GhostApprovalシンボリックリンク攻撃(`~/.ssh`/`~/.aws`/`.env`への設定名リンク)、ツリー外へ脱出するリポジトリのシンボリックリンク、エージェント向けドキュメント内のFriendly Fireによるレビュー時実行命令(CWE-59、CWE-61) |
| **SlopSquatAgent** | サプライチェーン | ハルシネーション/ファントムパッケージのインポート(スロップスクワッティング)— 宣言・インストール・組み込みのいずれでもないベアインポート、およびAIがハルシネーションした既知のパッケージ名(CWE-1357) |
| **ClickFixAgent** | サプライチェーン | ClickFix / 偽CAPTCHAの貼り付け実行型ルアー(偽エラー + Win+R/Ctrl+V/コマンドバーのキーストローク、PowerShellクレードル)、および偽インストーラーのnpmライフサイクルスクリプト(CWE-1357、CWE-506) |
| **InstallGuardAgent** | サプライチェーン | ライフサイクルスクリプトにおけるnpmワームの挙動(認証情報の収集、環境変数の外部送信、破壊的な`rm -rf`、難読化された`node -e`)および武器化された`binding.gyp`のnode-gypアクション(CWE-506、CWE-829) |

**調査パス**、それぞれの証拠が互いを上回る順序で:

| パス | ランク | 何を確定するか |
|------|------|---------------------|
| **VerifierAgent** | heuristic | 検出結果の周辺のパターンチェック。「likely」以上は決して述べない |
| **DeepAnalyzer** | analysis | 検出結果とそのファイルに対するLLMのテイント読み取り。引用は検証済み |
| **DataflowInvestigator** | dataflow | 値をその起源まで、1つの関数境界を越えて他のファイルへと追跡する。JavaScript、TypeScript、Python |
| **AbsenceInvestigator** | presence | ルールが欠落していると主張する制御を、プロジェクトまたはハンドラ内で検索する |
| **LiteralContextInvestigator** | presence | 書き込まれた値に関する検出結果を、その周囲(散文、ヘルプ文字列、予約アドレス)によって判断する |
| **CapabilityGraph** | chain | 単一ファイルには含まれない設定から攻撃チェーンを構築する |
| **RedosReproducer** | reproduction | フラグ付けされたパターンを、期限付きのワーカー内で生成入力に対して実行する |
| **SecretsVerifier** | reproduction | 漏洩したキーをそのプロバイダに提示する。オプトイン: これはキーを開示する |

引用されたファイルや行が解決できない主張は記録されるが、判定を決定することは決してない。意見が一致しない同ランクの2つのパスは、どちらか恐ろしい方の判定ではなく、未解決に解決される。

**その他:** ScoringEngine

---

## REPL

```
$ ship-safe

  ███████╗██╗  ██╗██╗██████╗     ███████╗ █████╗ ███████╗███████╗
  ...

  v9.4.1  ·  DeepSeek  ·  ~/my-project

  /scan to find issues  ·  /agent to fix them  ·  /help for more

shipsafe ›
```

| コマンド | 実行内容 |
|---------|-------------|
| `/scan` | プロジェクトを再スキャンする |
| `/agent` | インタラクティブな修正ループを実行する |
| `/findings` | 最後のスキャンで検出された指摘を一覧表示する |
| `/show <n>` | 指摘 n の詳細を表示する |
| `/plan <n>` | 指摘 n の修正計画をプレビューする(書き込みなし) |
| `/undo [--all]` | 最後の修正(またはすべての修正)を元に戻す |
| `/share` | スキャンレポートを公開 URL として公開する(7 日間) |
| `/diff` | git ワーキングツリーの差分を表示する |
| `/provider <name>` | セッション中に LLM プロバイダーを切り替える |
| `/quit` | 終了する(`Ctrl-D` または `Ctrl-C` でも可) |

`/` で始まらない入力は、最新のスキャン結果をコンテキストとして、自由形式の質問として LLM に送信されます。

---

## CI/CD

```yaml
# .github/workflows/security.yml
name: Security Audit
on: [push, pull_request]
jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Security gate
        run: npx ship-safe ci . --sarif results.sarif
      - uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: results.sarif
```

GitLab CI 版は [docs/examples/gitlab-security-workflow.yml](https://github.com/asamassekou10/ship-safe/blob/main/docs/examples/gitlab-security-workflow.yml) にあります。

### インライン PR 検出結果を伴う GitHub Action

変更された行に critical および high の検出結果を添付したい場合は、`pull_request` ワークフローから Action を使用してください。フォークされたコントリビューションでは、このパスに `pull_request_target` を含めないでください。チェックアウトに信頼できないコードが含まれる可能性があるため、Ship Safe はこの特権的な組み合わせを拒否します。

```yaml
name: Ship Safe
on:
  pull_request:

permissions:
  contents: read
  pull-requests: write
  security-events: write

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: asamassekou10/[email protected]
        with:
          fail-on: high
          inline: true
```

インラインコメントはオプトイン方式で、重大度が critical/high の検出結果にのみ投稿されます。ジョブを再実行すると、重複したインラインコメントを作成することなくサマリーが更新されます。

---

## LLM サポート

任意のプロバイダーで動作します — 環境変数から自動検出されます。`--provider <name>` で上書きできます。

Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · 任意の OpenAI 互換エンドポイント

Kimi は `MOONSHOT_API_KEY` または `KIMI_API_KEY` を介してデフォルトで `kimi-k3` を使用します。長コンテキストの GPT-Red および深層分析の実行には `--provider kimi --model kimi-k3` を使用してください。

Kimi K3 固有の長コンテキストレッドチーミングの場合:

```bash
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
```

Ship Safe はまた、Kimi K3 / OpenAI 互換のツール呼び出し実装について、プロンプトコンテキストからの動的なツール読み込み、ツール許可リストの欠如、信頼できない入力に対する強制ツール呼び出し、および元のアシスタントツール呼び出しメッセージなしでのツール結果の再生を検査します。

コアスキャンに API キーは不要です。AI 分類と `red-team --gpt-red` は、利用可能な場合に設定済みのプロバイダーを使用し、GPT-Red チェックには決定論的なオフラインフォールバックを備えています。

---

## 誤検知の抑制

```python
password = get_password()  # ship-safe-ignore
```

`critical` の検出結果は常に報告されます。インラインコメントでそれを隠すことはできず、抑制しようとする試みはスキャンに記録されます。このコメントは、人間が誤検知を除外するためのものであり、AI エージェントを含め、ソースの一行を書き込めるものはコメントも書き込めるため、最も高い重大度ではこれを尊重しません。すべての抑制はカウントされるため、検出結果を黙らせたスキャンが、何もなかったスキャンのように見えることは決してありません。

通常のコードルールは、Markdown の散文やフェンス付きコード例をデプロイされたソースとして評価しません。シークレットは引き続きすべての場所でスキャンされ、`AGENTS.md` や `CLAUDE.md` などのエージェントが読み取れるファイルは、専用のプロンプトインジェクションおよび信頼境界のチェックを維持します。フェンス付きの例を意図的にレビューするには、`scan`、`audit`、または `ci` とともに `--include-doc-examples` を使用してください。

```gitignore
# .ship-safeignore
tests/fixtures/
docs/
```

### どれくらいノイズが多いのか?

再現率はスキャナーの半分に過ぎません。すべてを検出するツールはすべてを捕捉しますが役に立たないため、Ship Safe が既知のアクティブな脆弱性がない成熟したプロジェクトで報告する内容も追跡しています。これらは生の検出結果であり、確認された欠陥ではありません。

| プロジェクト | 生の検出結果 | 重大 | スコア | グレード |
|---|---:|---:|---:|:---:|
| [express](https://github.com/expressjs/express) | 10 | 0 | 88.2 | B |
| [requests](https://github.com/psf/requests) | 7 | 0 | 95.5 | A |
| [flask](https://github.com/pallets/flask) | 17 | 0 | 81.4 | B |
| [chalk](https://github.com/chalk/chalk) | 4 | 0 | 89.4 | B |

元の4つを合計すると生の検出結果は38件で、v9.6.3以前の1,031件から減少しています。現在の5プロジェクトのクリーンコーパスには Hermes Agent も含まれており、662件の検出結果(うち66件が重大)を報告しています。どちらの数値も誤検知率や精度の主張ではありません。自動調査のラベルと残りの作業量はベンチマークに記載されています。NodeGoat と DVWA に対する検出下限のチェックは引き続き合格しています。

コーパスはコミットで固定され、1つのコマンドで再現可能で、制限事項も記載されています:
**[benchmarks/false-positives/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks/false-positives)**

### Semgrep、Gitleaks、Trivy、CodeQL とどう比較されますか?

Ship Safe はそれらの代わりではなく、併用して実行してください。CodeQL は Ship Safe が試みない手続き間のテイント解析を行い、Gitleaks はシークレットのスペシャリストであり、Trivy には実際の CVE データベースが背後にあります。

Ship Safe はより狭い問いをカバーします:AI コーディングエージェントがあなたのリポジトリ、CI、ローカルツール設定に何をしたか、という問いです。MCP クライアント設定、エージェントメモリのポイズニング、ハルシネーションによるパッケージインポート、AIBOM は、他の4つに同等の公開ルールが見つからなかった領域です。

---

[Read more](https://github.com/asamassekou10/ship-safe)
ツールをダウンロード