- セキュリティ
- OWASP
- チェックリスト
2026年版:コードレビューで必ず探すべき脆弱性トップ10
すべてのコードレビューで確認すべき10種類の脆弱性を、OWASP Top 10とCWEに対応づけ、それぞれの修正方法とともに紹介する実践チェックリスト。
· 9分で読めます · Lina Source LLC
侵害の大半は、今でも一握りのよく知られたバグの種類から始まります。フレームワークは安全になりましたが、ミスの場所が移っただけです。APIハンドラー、バックグラウンドジョブ、インフラのコード、そしてサービス間をつなぐグルーコードへと。ここでは、私たちが監査のたびに最初に確認する項目を、CodeAuditAgentのレポートに表示されるCWEとあわせて紹介します。
1. アクセス制御の不備(CWE-639、CWE-862)
深刻な指摘の中で群を抜いて多いのがこれです。エンドポイントがIDでレコードを読み込む際に、それが呼び出し元のものかを確認していないケースです。認証は相手が誰かを教えてくれるだけで、認可はすべてのクエリで毎回行う必要があります。
// Scope every lookup to the owner
const invoice = await db.invoice.findFirst({
where: { id, userId: session.user.id },
});2. インジェクション(CWE-89、CWE-78)
文字列連結で組み立てたSQL、シェルコマンド、テンプレート式は今もあちこちに残っています。多くの場合、パフォーマンスのために誰かが手書きした一つのクエリに潜んでいます。クエリはパラメータ化し、引数は配列で渡してください。入力値を連結してはいけません。
3. ハードコードされたシークレット(CWE-798)
リポジトリにコミットされたAPIキー、実は本番で有効だったテスト用トークン、設定ファイル内の秘密鍵。これらは環境変数やシークレットマネージャーに移し、一度でもコミットされたものはすべてローテーションしてください。該当行を削除しても履歴は消えません。
4. サーバーサイドリクエストフォージェリ(CWE-918)
Webhook、リンクプレビュー、インポートなど、ユーザーが指定したURLを取得する機能は、内部ネットワークやクラウドのメタデータエンドポイントに向けられる恐れがあります。ホストを許可リストで制限し、名前解決したIPを確認したうえで、プライベートアドレス範囲をブロックしてください。
5. クロスサイトスクリプティング(CWE-79)
モダンなフレームワークはデフォルトでエスケープするため、XSSは今やエスケープの抜け道に潜んでいます。生のHTMLを渡すprops、Markdownレンダラー、href属性に埋め込まれたURLなどです。HTMLは実績のあるライブラリでサニタイズし、javascript: URLは拒否してください。
6. 安全でないデシリアライゼーションとeval(CWE-502、CWE-95)
Pickle、YAMLのload、Javaのオブジェクトストリーム、動的なevalは、データをコードに変えてしまいます。代わりに安全なローダーと、スキーマで検証したJSONを使ってください。
7. 脆弱な暗号(CWE-327、CWE-330)
パスワードへのMD5やSHA-1の使用、固定のIV、トークン生成へのMath.random()の使用。パスワードには専用に設計されたハッシュ(Argon2id、bcrypt、scrypt)を、乱数には暗号論的に安全な乱数源を使ってください。
8. オープンリダイレクト(CWE-601)
任意のURLを受け付けるnextやreturnToパラメータがあると、自社ドメインがフィッシングの信頼された踏み台になってしまいます。受け付けるのは同一オリジンの相対パスだけにしてください。
9. レート制限の欠如(CWE-307、CWE-770)
ログイン、パスワードリセット、OTP、そしてコストが発生するあらゆるエンドポイント(メール、SMS、AI呼び出し)には、ユーザー単位とIP単位の制限が必要です。制限がなければ、ブルートフォース攻撃や高額請求を狙った攻撃はいとも簡単に成立します。
10. セキュリティ設定の不備(CWE-16)
認証情報付きのワイルドカードCORS、本番環境でのデバッグモード、詳細すぎるスタックトレース、緩すぎるバケットポリシー。これらは設定ファイルに存在するため、コードレビューではバグに見えにくいものです。だからこそ、コードと同じようにレビューすべきなのです。
このリストの使い方
- 1〜3の項目はすべてのプルリクエストで確認しましょう。影響が最も大きく、しかも最も見落としやすい項目です。
- インフラやCIの設定も、レビュー対象のコードとして扱いましょう。
- すべての指摘にCWEを記録し、修正の追跡や傾向の測定ができるようにしましょう。