Cyber Security Academy · レッスン

安全なコードレビューのテクニック

コードレビューで、データフロー、信頼境界、危険なAPI、欠落している制御などのセキュリティ問題を特定します。

レッスン 4/413 ステップ

「安全なコードレビューのテクニック」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

セキュアコードレビューの目的

セキュアコードレビューでは、デプロイ前にソースコードのセキュリティ脆弱性を特定します。機能コードレビューとは異なり、正確性やスタイルではなく、信頼境界、データフロー、危険なAPI、欠落している管理策、セキュリティロジックのエラーに焦点を当てます。

手動レビューと自動レビュー

自動SASTツール(Semgrep、SonarQube、CodeQL)は既知のパターンを迅速に検出できますが、ビジネスロジックの欠陥、複数コンポーネントにまたがる複雑な脆弱性、コンテキスト依存の問題を見逃します。手動レビューは自動化で見逃す問題を検出します。両方が必要です。

エントリーポイント分析

セキュリティレビューでは、まずすべてのエントリーポイントを洗い出します。HTTPエンドポイント、メッセージキューのハンドラー、ファイルアップロード、スケジュールジョブ、Webhook、CLI引数などです。外部データを受け取る各エントリーポイントは、精査が必要な潜在的なインジェクションポイントです。

データフローの追跡

ユーザーが制御するデータを、エントリーポイントからアプリケーション内を通って最終的に使用される箇所まで追跡します。データベースクエリに到達しますか。シェルコマンドに到達しますか。HTMLテンプレートに到達しますか。API呼び出しに到達しますか。データフローを追い、各変換およびサニタイズの手順を確認します。

信頼境界の分析

セキュリティ上の判断は、信頼境界、つまりデータが信頼性の低いコンテキスト(HTTPリクエスト)から、より信頼できるコンテキスト(データベース、OS)へ移動する箇所で行われます。信頼境界を越えるすべてのデータについて、検証、サニタイズ、または認可を行う必要があります。

危険なAPIチェックリスト

次の使用箇所に注意します。eval()、exec()、system()、shell_exec()、innerHTML、dangerouslySetInnerHTML、deserialize()、pickle.loads()、Runtime.exec()、ProcessBuilder、エンティティ展開を無効にしていないXMLパーサー、高レベルAPIを使わずに直接使用している暗号プリミティブ。

認証と認可のレビュー

次の点を確認します。すべての機密性の高いエンドポイントが認証で保護されていますか。すべての操作について、サーバー側で認可を確認していますか。IDパラメーターを変更することで、別のユーザーのデータにアクセスできませんか(IDOR)。機密性の高い操作はCSRFから保護されていますか。

エラー処理のレビュー

例外を黙って握りつぶすcatchブロックを探します。ユーザーに表示するエラーメッセージから、内部パス、スタックトレース、データベース構造が漏洩しないことを確認します。セキュリティ例外(AuthenticationException)が記録され、静かに無視されていないことを確認します。

暗号処理のレビュー

次の点に注意します。パスワードのハッシュ化にMD5またはSHA-1を使用している(bcryptまたはArgon2を使用します)、対称鍵またはIVをハードコードしている、ECBモードで暗号化している(GCMまたはHMAC付きCBCを使用します)、独自の暗号実装を使用している、暗号学的に安全でない乱数生成器を使用している。

依存関係と設定のレビュー

package.jsonまたはpom.xmlを確認し、依存関係が古くなっていないか確認します。アプリケーション設定では、本番環境でデバッグモードが有効になっていないか、詳細なエラーページが表示されないか、管理者の認証情報が設定ファイルに含まれていないか、セキュリティヘッダー(HSTS、CSP、X-Frame-Options)が欠落していないかを確認します。

ツール:SemgrepとCodeQL

Semgrepのルールは、意味を考慮しながら構文パターンに一致します。コードベース固有のパターンには、カスタムルールを作成します。CodeQLはコードをデータとして扱います。ASTに対するクエリを記述し、ファイルや関数呼び出しをまたいで、ソースからシンクまでのデータフローを検出します。

理解度チェック

IDOR脆弱性とは何ですか。コードレビューでは、どの箇所を探しますか。

まとめ

効果的なセキュアコードレビューでは、エントリーポイントの洗い出し、データフローの追跡、信頼境界の分析、危険なAPIの検出、自動SASTツールを組み合わせます。機能レビューでは見逃されるセキュリティ問題、特にビジネスロジックの欠陥や巧妙な認可の欠落を検出できます。

無料で開始

AI チューターと学ぶ Cyber Security Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
76
レッスン
303

よくある質問

「安全なコードレビューのテクニック」レッスンは無料ですか?

はい。「安全なコードレビューのテクニック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「安全なコードレビューのテクニック」で何を学びますか?

コードレビューで、データフロー、信頼境界、危険なAPI、欠落している制御などのセキュリティ問題を特定します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「安全なコードレビューのテクニック」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 入力検証と出力エンコーディング
  2. 安全な依存関係管理
  3. OWASP ASVS:アプリケーションセキュリティ検証標準
  4. 安全なコードレビューのテクニック
← Cyber Security Academyに戻る