Skip to main content

はじめに

Corgea CLIは、コードのセキュリティ脆弱性を見つけて修正する強力な開発者ツールです。当社のAI搭載スキャナー(BLAST)とプラットフォームを用いて、Corgeaはビジネスロジックの欠陥、認証の脆弱性、その他見つけにくいバグなどの複雑なセキュリティ問題を特定します。CLIはコードベースのスキャン、検出結果の検査、修正とのやり取りなど、優れた開発者体験を念頭に置いて設計されたコマンドを提供します。
AIコーディングエージェントを強化。 Corgea CLIは、エージェント連携の基盤でもあります。Corgea Agent Skillをインストールすると、AIエージェント(Cursor、Claude Code、Copilotなど)がユーザーに代わって脆弱性をスキャン、トリアージ、修正できます。

機能

  • 複数スキャナーのサポート:BLAST(当社のAI搭載スキャナー)でスキャンし、Semgrep、Snyk、Checkmarx、CodeQL、Fortify、Coverityのレポートをアップロードできます。
  • 問題管理:セキュリティの検出結果を一覧表示、確認、管理できます。
  • 修正機能との連携:ターミナルからAIが生成した脆弱性の修正を表示して適用できます。
  • 依存関係スキャン: corgea depsを使用して、オフラインの依存関係インベントリの作成、依存関係グラフの確認、SBOMの生成、依存関係ポリシーの評価を行えます。
  • パッケージアドバイザリーチェック:npmやPyPIのパッケージを選択またはインストールする前に、既知のアドバイザリを確認できます。
  • パッケージマネージャーのインストールゲート: npmyarnpnpmpipuvによるインストールを事前に検査し、既知の脆弱性があるパッケージ、悪意のあるパッケージ、公開直後で疑わしいパッケージの導入を防ぎます。詳細はパッケージマネージャーのインストールゲートを参照してください。
  • 柔軟な出力:人間が読みやすい形式とJSON形式の両方をサポートし、CIとの連携を容易にします。
  • CI/CD連携:重大度やカスタムブロッキングルールに基づいてビルドを失敗させることができます。
  • スキャン管理:プロジェクト全体のスキャン進捗と結果を追跡できます。
  • Agent Skillsインストール:Corgeaレジストリから承認されたAgent Skillsをサポートされたコーディングエージェントにインストールします。

前提条件

  • Corgeaアカウント:アクティブなCorgeaアカウント。
  • 認証用トークン:有効なCorgea APIトークンまたはJWTアクセストークン。
オフラインの corgea deps scangraphexplaindiffsbompolicy init コマンドは、Corgeaアカウント、トークン、設定、ネットワークアクセスを必要としません。

インストールガイド

npmでインストール

npmパッケージは、対応プラットフォーム向けのネイティブバイナリをバンドルし、実行時にOSやアーキテクチャに適したバイナリを選択します。

uvでインストール

Pythonユーザーには、このインストール方法を推奨します。uv tool installはPyPIパッケージから独立したツール環境を作成し、CLIをPATH上のcorgeaコマンドとして利用できるようにします。
uvからツールディレクトリがPATHに含まれていないと報告された場合は、次のコマンドを実行します。

pipでインストール

uvを使わない場合は、Pythonのパッケージインストーラーpipを使ってCorgea CLIをインストールすることができます。
このコマンドはPyPI(Python Package Index)からCorgea CLIパッケージを取得し、システムにインストールします。パッケージの詳細はPyPIのページを参照してください。

Homebrewでインストール

HomebrewでCorgea CLIツールをインストールするには、まずCorgea Tapを追加し、その後CLIをインストールしてください:

手動でインストール

最新リリースからプラットフォームのアーカイブをダウンロードし、解凍してcorgeaバイナリをPATHに移してください。以下のlatest/downloadURLは常に最新のリリースに割り当てられています。
静的リンクされたLinuxビルドもcorgea-x86_64-unknown-linux-musl.zipとして公開されています。

認証

CLIでログイン

CLIで認証するには、以下のコマンドを使用します。これにより、CLIを承認するためのウェブアプリケーションにリダイレクトされます:

カスタムスコープでログイン(シングルテナントインスタンスの顧客向け)

ヒント: あなたの会社の範囲はCorgeaのサブドメインです。例えば: https://your-company.corgea.app

トークン(APIトークンまたはJWT)でログイン

自動化されたパイプラインやCI/CD環境では、信頼性が高く非対話的なログインフローのためにトークン認証を活用してください。Corgea APIトークンかJWTアクセストークンのいずれかを渡すことができます:
また、環境変数でトークンを設定することもできます:

シングルテナントインスタンスを指定

シングルテナントインスタンスを使用している顧客は、CLIを --url オプションで特定のインスタンスを指すように設定する必要があります。
また、環境変数でURLを設定すると、CLIが自動的に検出します:

使用法

コマンドとオプション

パッケージアドバイザリーの確認

npmやPyPIのパッケージを選択またはインストールする前に、corgea advisories checkで既知のアドバイザリを確認します。パッケージ名のみを指定するとアドバイザリ履歴が表示され、正確なバージョンを追加するとそのリリースに対する判定が表示されます。
エコシステムにはnpmまたはpypiを指定できます(pipも別名として使用できます)。npmのバージョンには1.2.3のような完全かつ正確なバージョンが必要です。範囲、タグ、部分バージョンには対応していません。PyPIのチェックでは、package@versionまたはpip形式のpackage==version構文を使用できます。 パッケージ名のみを指定した結果では、バージョンを選択する前にアドバイザリの履歴を確認できます。正確なバージョンを指定した結果には、既知のアドバイザリの詳細、利用可能な場合は修正済みバージョンの情報、報告されたすべてのアドバイザリに修正がある場合は安全な推奨バージョンが含まれます。このコマンドは読み取り専用で、ネットワークアクセスが必要です。実際のインストール制御はパッケージマネージャーのインストールゲートで行います。 機械可読なスキーマバージョン1のレスポンスを取得するには、--jsonを使用します。アドバイザリが見つからない場合の終了コードは0、見つかった場合は1、エラーの場合は2です。アドバイザリデータベースに存在しないパッケージは、終了コード0で終了します。

パッケージマネージャーインストールゲート

依存関係をインストールする前にCorgeaのチェックを実行するには、対応するパッケージマネージャーのコマンドをcorgea npmcorgea yarncorgea pnpmcorgea pipcorgea uv経由で実行します。
Corgeaは解決された各バージョンを公開脆弱性データと照合し、異常に新しいリリースをrecency gateでブロックします。脆弱なバージョン、悪意のあるバージョン、新しすぎるバージョンは、パッケージマネージャーの起動前にインストールが阻止されます。ラッパーのフラグは、パッケージマネージャー名とコマンドの間に指定します(例:corgea pip --force install requests)。 公開日の新しさに基づくゲート。 脆弱性データの確認に加えて、Corgeaは指定されたインストール対象の解決済みバージョンが所定の期間内に公開されている場合にブロックします。これにより、アドバイザリフィードに情報が反映される前でも、公開直後のタイポスクワッティングや乗っ取りを検出できます。この機能はデフォルトで有効で、期間は14日間です。~/.corgea/config.tomlで設定するか(recency_gate = falseで無効化、recency_threshold_daysで期間を変更)、環境変数CORGEA_RECENCY_GATECORGEA_RECENCY_THRESHOLD_DAYSを使用します。公開日を特定できないパッケージはこのゲートの対象になりません。脆弱または悪意ありという判定は公開日の新しさより優先され、--forceを指定するとその1回のインストールに限りゲートを回避できます。 カバレッジ。 pip installnpm installでは、推移的依存関係を含むインストール予定のパッケージ一式を解決するため、脆弱な推移的依存関係があるとコマンドをブロックします。ドライランによる依存関係の解決に失敗した場合、Corgeaは警告を表示し、指定された対象のみのチェックに切り替えます。npm ciはプロジェクトのロックファイル、uv syncuv.lockを基にチェックするため、コマンドにパッケージ名が含まれていなくても、ロックされたパッケージ一式が検査されます。uvゲートは、対象を指定したuv add ...uv pip install ...もチェックします。uv lockはパッケージをインストールしないため、そのまま実行されます。yarnpnpmは安全なドライランリゾルバーがないため、指定された対象のみをチェックします。 パッケージ名を指定しないインストール。 パッケージ名を指定しないnpm installは、プロジェクトのpackage.jsonを基にチェックされます。パッケージ名を指定しないyarnpnpm、およびインストール形式のuvコマンドは事前にチェックできないため、Corgeaは注意事項を表示して、チェックせずに実行します。
パブリックモードと認証モード。 トークンがない場合、ゲートはパブリックモードで動作します。脆弱または悪意のあるパッケージはブロックしますが、検証不能なパッケージや照会エラーでは警告だけを表示し、インストールを続行します(同じエラーが繰り返された場合は1行にまとめます)。デフォルトの脆弱性APIでCORGEA_TOKENまたはcorgea loginのトークンを使用すると、ゲートは認証モードで動作し、フェイルクローズになります。検証不能なパッケージ、依存関係の解決失敗、脆弱性APIの停止、および通常は依存関係ツリー全体を解決するマネージャー(pipnpmuv)でのツリーカバレッジ低下は、--forceを指定しない限りインストールをブロックします。 カスタム脆弱性API。 CORGEA_VULN_API_URLでカスタムエンドポイントを指定した場合、Corgeaはそのエンドポイントにトークンを送信しないため、ゲートはパブリックモードのままです。信頼できるエンドポイントに対して認証モードのチェックを有効にするには、CORGEA_VULN_API_SEND_TOKEN_TO_CUSTOM_URL=1を設定します。 外部管理のPython環境。 pipでは、レジストリをチェックする前に、外部管理環境(PEP 668)へのインストールを拒否します。仮想環境を有効にするか、--forceを指定して回避します。 Corgeaは、PATHにある対応パッケージマネージャーを実行します。corgea pip ...では、pipが見つからない場合にpip3を試します。どちらも存在しない場合、CLIは不足しているバイナリ名を表示し、終了コード127で終了します。 検出結果。 解決済みパッケージが脆弱な場合、ツリーの検出結果はその発生源を示します:
  • (from requirements) — PIP要件ファイルを通じて要求される。
  • (already in package.json) — すでに直接的なnpm依存関係。
  • (transitive) — 別の依存関係を通じて引き込まれる。
指定したパッケージ自体に問題がなくても、解決済みの依存関係ツリーに脆弱なパッケージが含まれている場合、既存のツリーが拒否理由として示されます。アドバイザリの行には、公開されている修正済みバージョン、または既知の修正済みバージョンがないことが表示されます。パッケージのすべてのアドバイザリに修正情報がある場合はsafe version: axios@0.21.2が表示され、脆弱なnpm直接依存関係ではfix with: corgea npm install package-name@version (advertised fix)が表示される場合もあります。脆弱性の件数と終了動作は、最初に指定したインストール対象に従います。 JSON出力。 --jsonは標準出力にレポートを1件返します。Corgeaが標準出力を占有できるよう、パッケージマネージャーの標準出力は標準エラー出力へリダイレクトされます。スキーマバージョン2では、managersubcommandargsrecency_threshold_days(現在の期間。ゲートが無効な場合はnull。各結果のage_secondsと組み合わせて使用)、namedtreeに分けた件数を含むsummaryverdict_moderesults配列が報告されます。依存関係ツリーを解決した場合はtreeオブジェクトも含まれます。ツリー内の各エントリのoriginは、requestedpre-existingtransitiveのいずれかです。既知の悪意のあるパッケージでは、固有の判定statusであるmalicious、一致項目ごとのmalwareブール値、各集計オブジェクト内の独立したmalicious件数が報告されます。こうしたパッケージはアップグレードではなく削除する必要があるため、remediationは常にnullです。脆弱なパッケージについては、すべてのアドバイザリを解決できる場合に限り、安全なバージョンが引き続き報告されます。

Agent Skillsのインストール

Corgeaレジストリから承認されたスキルをコーディングエージェントのスキルディレクトリにインストールしてください:
対応エージェントIDは cursorclaude-codecodexgithub-copilotgemini-cliwindsurfopencodeuniversalです。 --scope project を使って現在のリポジトリにインストールし、 --scope user でユーザーアカウントにインストールし、 --dir でカスタムスキルディレクトリにインストールしてください。 特定のバージョンをインストールするには、スキル名に付け加えてください:
また、将来のインストールのためにデフォルトのエージェントを保存することもできます:

スキャンレポートをアップロード

スキャンレポートをSTDINまたはファイル(JSON、SARIF、FPR、またはCoverity XML)でCorgeaにアップロードしてください:
Corgeaに表示されるアップロード済みレポートのプロジェクト名を指定するには、--project-nameを使用します。省略した場合、CLIはGitリポジトリ名を使用し、取得できなければ現在のディレクトリ名を使用します。
大規模なレポートの場合、CLIはデータをチャンク単位でアップロードします。チャンクアップロード中はサーバー側の進捗を検証し、サーバーから予期しないオフセットが返された場合や、スキャンIDが返されずにアップロードが完了した場合は、ゼロ以外の終了コードで終了します。

コードベースをスキャンする

デフォルトのBLASTスキャナーで現在のディレクトリをスキャンするには:
別のスキャナー、例えばSemgrepを指定する場合:
--fail-onには、CRHIMELOmaliciousの条件をカンマ区切りで1つ以上指定できます。重大度の条件は指定した重大度以上の検出結果に一致します。たとえば、MEHICRの検出結果にも一致します。maliciousは、悪意ありと分類された依存関係の検出結果に一致します。指定した条件のいずれかに一致すると、コマンドはゼロ以外の終了コードで終了します。 例:
あるいはウェブアプリで定義されたブロッキングルールに基づいて失敗する場合もあります:
デフォルトでは、スキャンコマンドはプロジェクト全体をスキャンします。コミット前の変更だけをスキャンするには、--only-uncommittedオプションを使用します。
--targetオプションを使用すると、特定のファイルやプロジェクトの一部だけを対象にできます(BLASTスキャンのみ)。カンマ区切りで複数の値を指定でき、ファイルパス、ディレクトリパス、Globパターン、Gitセレクター、標準入力をサポートしています。 例:
--excludeオプションでBLASTスキャンからファイルを除外できます。これはカンマ区切られたグロブパターンを受け入れ、--targetの有無にかかわらず使用できます。
注意: --only-uncommitted--target は併用できません。 BLASTスキャンでファイルをスキップするには、--excludeにカンマ区切りのGlobパターンを指定します。--targetと組み合わせて、対象の一部をスキャンしながら、その中でパターンに一致するファイルを除外することもできます。
Corgeaで表示されているプロジェクト名を制御するには、 --project-nameを使用します。省略すると、CLIは利用可能な場合にgitリポジトリ名をデフォルトで使い、現在のディレクトリ名に戻します。
BLASTスキャンにカスタムメタデータを付加するには、KEY=VALUEのペアごとに--metadataを繰り返し指定します。これらの値はスキャンと、JSON形式のスキャン一覧出力に含まれます。
--metadataはBLASTスキャナーのみで使用できます。各エントリには空でないキーが必要です。同じキーを複数回指定した場合は、最後の値が使用されます。 通常のBLASTスキャンは複数のスキャンを含みます:
  • Blast Base AIスキャン
  • PolicyIQスキャン
  • 悪意のあるコード検出スキャン
  • シークレット検出スキャン
  • 個人識別情報(PII)検出スキャン
会社のアカウントプランで有効になっている場合、デフォルトではこれらのスキャンがすべて実行されます。--scan-typeオプションを使用すると、1つ以上のスキャンタイプだけを対象にできます。
複数のタイプを指定する場合:
PolicyIQスキャンで特定のポリシーだけを対象にするには、--policyオプションに1つ以上のポリシーIDを指定します。

スキャンレポートをエクスポート

Corgea CLIではスキャン結果をファイルにエクスポートできます。これは特にCIパイプライン内で実行する場合に便利です。--out-formatオプションと--out-fileオプションを使用します。
CLIは現在、HTML、JSON、SARIF、Markdownを出力形式としてサポートしています。

依存関係インベントリ

corgea depsを使用して、npm、Python、Javaのマニフェストとロックファイルからオフラインの依存関係インベントリを作成します。このコマンドは依存関係のバージョン固定ポリシーを評価し、検出結果に基づいてCIを失敗させることができます。ログインやネットワークアクセスは必要ありません。
一般的な依存関係インベントリコマンド:
scangraphexplaindiffpolicy initのターミナル出力は、--format humanagentjsonquietのいずれかで制御できます。エージェント環境が検出された場合、corgea depsはデフォルトで簡潔なagent形式を使用します。通常のターミナル出力を使用するには、--format humanを指定します。 corgea deps scanでレポートをエクスポートする場合は、--out-format tablejsonsarifのいずれかを使用し、必要に応じて--out-fileを指定します。同じdeps scanコマンドで--format--out-formatを併用することはできません。 依存関係ポリシーをカスタマイズするには、.corgea/deps.ymlを初期化します。
生成されたポリシーでは、ロックファイルを必須にするか、ロックファイルの欠落や更新漏れをエラーにするか、およびワイルドカード、latest、SemVer範囲を使用する直接依存関係を報告するかを制御できます。CIの例、ポリシー設定、トラブルシューティングについては、依存関係スキャンを参照してください。

スキャンを待つ

最新の進行中のスキャンを待つために:
または、待つスキャンIDを指定することもできます:

スキャン、問題、SCA問題の一覧表示

現在のディレクトリに関連するすべてのスキャンを一覧表示するには、次のコマンドを使用します(デフォルトではページ分割されます)。
特定のスキャンの問題を一覧表示するには:
ページ設定も調整できます:
注: --json オプションは、 listinspect などのコマンドでJSON形式の結果を出力するためのもので、統合や自動化に役立ちます。
スキャン表には各スキャンのコミットSHAの先頭8文字が表示され、SHAを取得できない場合はN/Aと表示されます。JSON出力には、Corgeaから返された完全なgit_sha値とスキャンのmetadataが含まれます。 プロジェクトまたはスキャンのSCA問題を一覧表示するには、--sca-issuesまたは短縮形の-cを使用します。
または

スキャンまたは問題の詳細を確認

特定のスキャンを調べる方法:
問題の詳細な出力を確認するには、次のコマンドを実行します。
修正の説明または差分を確認するには:

Gitフックとの連携

コードの品質とセキュリティを確保するために、pre-commitフックを使ってCorgea CLIをGitワークフローに組み込めます。この機能により、コミットやプッシュの前にコードの変更をスキャンできます。pre-commitフックを設定するには、次のコマンドを実行します。
pre-commitフックの設定時に、スキャン設定の入力を求められます。PIIとシークレットをスキャン対象とし、失敗させる重大度をCR、HI、ME、LOに設定するデフォルト構成ですぐにセットアップするには、次のコマンドを実行します。
コミット時に事前コミットチェックを回避するには、以下のコマンドを使用します。

デバッグモード

デバッグログを有効にするには、コマンドを実行する前に CORGEA_DEBUG=1 を設定してください。
デバッグモードを有効にすると、失敗したアップロードリクエストのHTTPステータスとレスポンスボディがデバッグ出力に含まれるため、トラブルシューティングに役立ちます。

追加オプション

さらに多くのオプションやコマンドを使いたい場合は、以下をご利用ください:

リリースノート

リリースノートの全文については、 GitHub リリースページをご覧ください。