高度な脆弱性検出
リクエストからデータベースまでデータの流れを追跡し、パターンマッチ型のリンターでは見逃すインジェクション、アクセス制御の不備、シークレット漏えい、SSRF、ロジックの欠陥を検出します。すべての指摘はCWEに対応付けられます。
ユーザー検索のSQLインジェクション
req.query.name がクエリに直接連結されているため、誰でもusersテーブルを読み取り・削除できます。
41 export async function search(req) {- 42 const q = `SELECT * FROM users WHERE name = '${req.query.name}'`;+ 42 const q = 'SELECT * FROM users WHERE name = $1';+ 43 return db.query(q, [req.query.name]);シニア監査人の深さを、マージキューのスピードで。
リクエストからデータベースまでデータの流れを追跡し、パターンマッチ型のリンターでは見逃すインジェクション、アクセス制御の不備、シークレット漏えい、SSRF、ロジックの欠陥を検出します。すべての指摘はCWEに対応付けられます。
各指摘には、実際のコードに合わせた具体的なパッチと、それが防ぐ攻撃手法が付属します。読むのは説明ではなく差分です。
監査はシニアセキュリティ監査人の指示のもとClaude Fable 5.1で実行されます。根拠となるコードを引用し、実際の悪用可能性で深刻度を評価し、確信度を正直に示します。
説明できるリスクスコアと、数分で対応できる指摘事項。
acme/storefront · サンプルレポート · 例示データ
各指摘には該当行、CWE分類、パッチが含まれます。クリックで展開できます。
lib/billing.ts:3
- const stripe = new Stripe("sk_live_51H…");
+ const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!); // and rotate the leaked key
app/api/invoices/[id]/route.ts:12
- const invoice = await db.invoice.findUnique({ where: { id } });
+ const invoice = await db.invoice.findFirst({ where: { id, userId: session.user.id } });
app/login/page.tsx:27
- router.push(searchParams.get('next') ?? '/');
+ router.push(safeRelativePath(searchParams.get('next')));