ソフトウェア変更のコントロールレイヤーを構築するため、1億4,300万ドルを調達しました。詳しく見る: ソフトウェア変更のコントロールレイヤーを構築するため、1億4,300万ドルを調達しました。

CodeRabbit Security

ルールではなく、論理で守る継続的なコードセキュリティ

AIによる攻撃が当たり前な時代のために設計

世界中の17,000のエンジニアリングチームに信頼されるチームが手がけています。

NVIDIA全体でCodeRabbitを利用しています

Jensen Huang,Founder & CEO,NVIDIA
Watch the NVIDIA customer story in a new tab

新しい脅威に古いルールは通用しない

これまでのツールは、AIを使う攻撃者がいる世界を前提としていません

2018847
20261日未満

脆弱性の公開から、1日足らずで攻撃手段が登場

WSJ · Zero-Day Clock

攻撃パターンは変化しています

ツールは、未知のリスクを捕捉しなければなりません

AIには、AIで対抗

エージェントが論理立てて説明し、そして修正する。すべてPRの中で完結。

攻撃者のように考えるエージェント

ファイル、サービス、信頼境界をまたいで悪用可能な経路をたどり、今までにない脆弱性を見つけ出します。

継続的なセキュリティ監視

すべてのリポジトリ、PRで、セキュリティ脆弱性をほぼリアルタイムで検出して対処します。

検証でノイズを削減

到達可能性、悪用可能性、影響範囲を確認し、本当に対処すべきリスクだけを提示します。

脆弱性を自動で修復

検出した問題の修正案まで作成し、あとはマージするだけです。

エージェント型ツールだから発見できる脆弱性

エージェント型ツールは攻撃対象領域全体を推論し、複雑な脆弱性を検出

api/invoices.tsIllustrative
1router.get('/invoices/:id', async (req, res) => {
2 const invoice = await db.invoices
3 .findById(req.params.id);
4 return res.json(invoice);
5});
6
7
8

アクセス制御 · 高

セッションのユーザーと請求書を結び付ける所有権チェックがありません。ログイン済みであれば誰でも、IDを順に変えるだけですべての請求書を読み取れます。

IDOR

オブジェクト参照を、1つのハンドラー内だけでなくサービスをまたいで検証

agents/support-bot.tsIllustrative
1const reply = await llm.complete(`
2 You are a support agent with tools.
3 Ticket: ${ticket.body}
4`, { tools: [refundTool, lookupTool] });
5
6
7
8

LLMセキュリティ · 重大

チケットの本文が、ツール呼び出し用のプロンプトにそのまま埋め込まれています。細工されたチケットは、別の顧客の注文に対してrefundToolを実行するようエージェントを誘導できます。

プロンプトインジェクション

信頼できないテキストがプロンプトやツール呼び出し、エージェントの判断に影響

checkout/confirm.tsIllustrative
1const total = cart.lockTotal();
2await payments.charge(card, total);
3applyCoupon(order, req.body.coupon);
4await order.confirm();
5
6
7
8

ビジネスロジック · 高

クーポンが、合計金額を請求した後に適用されています。この処理を再送信すると、すでに確定した支払いに対して割引分が払い戻されます。

ロジックの欠陥

そのコードが本来何をすべきかを推論して初めて悪用の経路が可視化

search/query.tsIllustrative
1const sort = sanitizeHtml(req.query.sort);
2const rows = await db.raw(
3 `SELECT * FROM repos ORDER BY ${sort}`
4);
5
6
7
8

データフロー · 重大

入力は1つ上流のファイルで、SQLではなくHTML向けにエスケープされています。ORDER BYの文字列連結はインジェクション可能なままです。

インジェクションの連鎖

汚染された入力が、ヘルパーや各レイヤーをまたいで最終的に到達するクエリまで追跡

preview/image.tsIllustrative
1const { url } = req.body;
2const img = await fetch(url);
3res.type('png').send(await img.buffer());
4
5
6
7
8

サーバーサイド · 高

ユーザーが指定したURLをサーバー側で取得しています。クラウドのメタデータを含む内部エンドポイントに到達できてしまいます。

SSRF

ユーザー入力によって内部通信を操作できてしまう、リクエストの組み立て

wallet/withdraw.tsIllustrative
1const balance = await wallet.balance(user);
2if (balance >= amount) {
3 await wallet.debit(user, amount);
4}
5
6
7
8

並行処理 · 高

残高の確認と引き落としがアトミックではありません。並列に実行された2件の出金がどちらもチェックを通過し、残高がマイナスになります。

競合状態

並列リクエストで、チェックから実行までのわずかな隙に攻撃者が勝ってしまう

仕組み

2通りのスキャン方法

すべてのPRに追従する、継続的なモニタリング

PRスキャン

マージ前に自動でレビューし、PR上にインラインで指摘

Deep Scan

エージェントがコードベース全体をオンデマンド、またはスケジュールで調査

攻撃対象領域を可視化し、文脈とともに捕捉

リアルタイムセキュリティポスチャマップで、自社のリスクをひと目で把握

repository posture
high/criticalmedium検証済み未走査
core78/78
api42/42
auth12/14
workers9/9

ノイズではなく、本当のリスクを検出

すべての検出結果は、あなたに届く前に3つの分析を通過

到達可能性

そもそもそこに到達できるのか。攻撃者が到達できない検出結果は、深刻度を低に抑制

悪用可能性

本当に悪用できるのか。検証パスが、悪用の難易度が極めて高い検出結果を除外

影響範囲

どこまで影響が及ぶのか。エージェントが、悪用された場合の影響と深刻度を明確に提示

あなた自身のコードで確かめてください。

よくある質問