コア機能
- 大規模言語モデル駆動: 正規表現で「脆弱性っぽい形」を探すのではなく、コードのセマンティクスそのものを読みます——ある値が攻撃者操作可能か、ある呼び出しが本当に危険な sink に到達するか、チームが書いた独自のユーティリティメソッドがリスクを本当に無効化しているか。
- マルチ Agent の相互検証: すべての検出結果は、複数の Agent が異なる角度から質疑と裏取りを行った上で提示されます。誤報を抑え、重大な取りこぼしを防ぎます。
- 段階的な設計: 高速なチェックはコーディングループ内、タスク終了時にセマンティックな差分スキャン、Push 前にクロスファイルのデータフロー解析、リポジトリ全体の監査はコマンド 1 本。
各段がどう連携するか
セキュリティと速度はしばしば矛盾します——深くスキャンすれば遅く、速くすれば浅い。階層化の意味は、それぞれの強度のチェックを適切なタイミングに置くことにあります。速さが必要な場面では速く、深さが必要な場面では深く。
コーディングループ内のインラインチェックから、差分単位のレビュー、Push 前の深い監査、オンデマンドのリポジトリ全体スキャンまで——セキュリティは、キーボードを叩くたび、コミットするたびに動く既定機能になります。
Code Security を有効にする
- Qoder を起動し、Settings を開きます。
- サイドバーから Security を選択します。
- Scanning Tiers で Static Check (L1)、Lightweight Scan (L2)、Deep Scan (L3) の各トグルを確認します。
Credits の目安
L2 と L3 のスキャンは Credits を消費します——Credits が尽きるとスキャンはブロックされます。L1 Static Check は無料です。詳細は Credits を参照してください。 参考消費量(社内テストデータに基づく統計。実際の消費はコードのロジック複雑度、脆弱性数などの要因で変動します):- Lightweight Scan (L2):500 行あたり約 5 Qoder Credit
- Deep Scan (L3):500 行あたり約 20 Qoder Credit
Scanning Tiers
Static Check(L1)
現在のタスクで生成されたコードが対象。 高リスクなパターンマッチによって、危険な関数呼び出しなど典型的なリスクを即座に検出し、自動的に修復します。- 実行タイミング:セッション内でコード書き込みの各ステップ直後に自動実行されます。手動トリガーは不要で、確認も求められません。
- 表示方法:検出結果は現在のチャット内にインライン表示されます。結果はセッションコンテキストに直接フィードバックされ、モデルが次の修正で処理します。
- 使いどころ:日常の AI 生成コードのループ。モデルが密かに
eval()を使ったり、実際の API キーをコンフィグに貼り付けたりすることがあります——L1 はこうした明らかなリスクがファイルに落ちるのを防ぐ、常時 ON のベースラインです。
Lightweight Scan(L2)
増分コードが対象。 コードのセマンティクスを深く理解し、SQL インジェクション、リモートコマンド実行、機密情報の漏洩などのセキュリティリスクを精度高く識別します。-
実行タイミング:単一のコーディングタスクが完了に近づいたタイミングで推奨されます——Qoder がチャットフローの適切な瞬間に推奨カードを表示します:
Scan your code for hidden risks
クリックすると次のコマンドが自動入力されます:自分でこのコマンドを打つことも、自然言語で依頼することもできます(「軽量スキャンを実行して」「この変更にリスクがないか見て」)。スキャンしたくなければカードを無視してください——他のフローには影響しません。 - 仕組みの例:リクエストパラメータをそのままシステムコマンドに文字列連結する箇所を書いたとします。L2 は「このパラメータは攻撃者が操作できる」と「この呼び出しが本当にコマンドを実行する」を同時に理解し、コマンドインジェクションと判定します。正規表現ベースのスキャナではこの 2 点の橋渡しができません。
- 表示方法:問題箇所、リスクの説明、修復案がチャット内に表示され、右側の Review パネルで差分を確認できます。
- 使いどころ:差分の仕上げ段階で潜り込むリスクを掴む——書いたばかりの SQL 文字列、シェルに流し込んだリクエストパラメータ、設定値に紛れ込んだ API キー。
Deep Scan(L3)
増分コードを対象に、ファイル・関数を跨いで完全なデータフローを追跡します。 単一ファイル視点では見えない、隠れた関連脆弱性を掘り起こし、より全面的に分析します。- 実行タイミング:通常、コミット / Push 前に モデルが判断して推奨します。Push 意図をセッション内で検出した場合、まずセキュリティスキャンを実行するかを Ask Question カードで確認することがあります。スキャン意図がすでに明確な場合はそのまま実行され、確認は表示されません。
- その他の起動方法:Quest ウィンドウで、Commit ドロップダウンの Scan & Push(L3 が有効なとき表示)——クリックで
/security-scan Run a deep scan and pushが自動入力されます。 - 仕組みの例:外部パラメータが複数ファイルをまたいで SQL 文字列連結の場所まで流れ、途中でチーム独自のサニタイズ関数を通過するとします。L3 はそのメソッドの実装まで読み込み、シングルクォートしかフィルタしていないことに気づきます——このパラメータは
order by句に連結される位置に到達しており、そこではシングルクォートフィルタは効かない——つまりインジェクションは依然として成立、と判断します。 - 表示方法:スキャン結果はチャットフローに表示されます——具体的な形式はモデルが判断しますが、通常は重要度、位置、説明、修復案が含まれます。必要に応じて Ask Question カードが続き、Agent に修復させるかスキップするかを選べます。
- 使いどころ:コードがローカルを離れる前の最後のチェックポイント。L3 は「単一ファイルで見ると安全に見えるが、繋げて見ると危険」というクラスを得意とします——カスタムサニタイズ関数を通り抜ける SQL インジェクションチェーン、デコード境界をまたぐパストラバーサル、複数ファイルを渡らないと成立しないテイント伝播。
Full Scan
リポジトリ全体の監査向け。 チャットで 2 つのスラッシュコマンドを連結します——/security-scan でスキャン、/canvas で結果を可視化レポートに描画:
Full Scan はリポジトリ全体を対象とするため、実行時間と Credits 消費が大きくなる可能性があります。単一の
/security-scan 呼び出しは最大 10,000 行までです——それを超える場合はディレクトリまたはコミット範囲で分割してください。手動スキャン
自動トリガーや Full Scan 以外にも、いつでも自分で範囲を絞ったスキャンを開始できます。-
スラッシュコマンド:チャットで
/security-scanを入力し、やりたいことを説明します。例: -
自然言語:「コードをスキャンして」「セキュリティリスクをチェック」「Deep Scan を実行」「
mydirディレクトリをスキャン」——Agent が適切な範囲と層にマッピングします。