【注意】このサイトに記載されていることを他人に試すことは「不正アクセス禁止法」に該当する場合があります。詳しくはこちらから

ハッカーはコード監査を使いソースコードを分析し、セキュリティ上の問題や脆弱性を発見する

ペネトレーションテスト&バグバウンティ

ハッカーの攻撃を防ぎ、システムの安全を高めるためにプログラムのミスや脆弱性を探し、悪用されないようにする作業する必要があります。
デバックと似ていますが、目的が異なります。

コード監査とは

コード監査(Code Audit)とは、ソースコードを詳細に分析し、セキュリティ上の問題や脆弱性を発見するプロセスのことです。これは、システムやアプリケーションが悪用される可能性を最小限に抑えるために重要な作業です。
特に、Ethical Exploit Developer(倫理的なエクスプロイト開発者)にとって、コード監査は「脆弱性を見つけ、それを安全に報告し、セキュリティの向上に貢献する」ための基本的なスキルの一つになります。
 
 

コード監査の目的

コード監査の主な目的は、以下の3つです。
1.脆弱性の発見
アプリケーションやシステムのコードを分析し、攻撃者が悪用できる脆弱性を特定する。
2.セキュリティ強化
発見した脆弱性を修正し、システムの安全性を向上させる。
   
3.攻撃手法の理解
脆弱性を発見することで、攻撃者がどのようにシステムを攻撃できるかを理解する。そして、その知識を活かして、防御策を設計する。
 
 

コード監査の種類について

コード監査には、大きく分けて、手動コード監査と、自動コード監査の2種類があります。

手動コード監査

経験豊富なセキュリティエンジニアが人の目でソースコードを確認し、脆弱性を探す方法です。
主に以下の点をチェックします。
(1)入力バリデーションの不備
・ユーザーの入力が適切に検証されず、そのまま処理されているか。
・SQLインジェクション、XSS、OSコマンドインジェクションのリスクがあるか。
  
(2)認証・認可の問題
・ユーザーの認証(ログイン)が適切に実装されているか。
・権限チェックが適切に行われているか。
 
(3)暗号化の適用
・パスワードや機密データが適切に暗号化されているか。
・弱い暗号アルゴリズムが使用されていないか。
 
(4)エラーハンドリング
・エラーメッセージに機密情報が含まれていないか。
・例外処理が適切に行われているか
 
※手動監査は、精度が高い反面、時間がかかるというデメリットがあります。
 

自動コード監査

自動化されたツールを使って、ソースコードをスキャンし、脆弱性を検出する方法です。
代表的なツールとしては
・Static Analysis Security Testing(SAST)
・SonarQube
・Semgrep
・Checkmarx
・Fortify
  
また、動的分析(DAST)ツールとしては
・OWASP ZAP
・Burp Suite
  
脆弱性スキャナとしては
・Nikto
・OpenVAS
 
※自動監査は、短時間で大量のコードをチェックできるというメリットがありますが、誤検出が多いというデメリットもあります。
 
 

 コード監査の流れ

一般的なコード監査の流れは以下の通りです。
1.ソースコードの準備
・監査対象のプログラムのソースコードを入手する。
・依存ライブラリや設定ファイルも含める。
 
2.コードの静的解析(SAST)
・SASTツールを使い、コードの潜在的な脆弱性をスキャンする。
例:SQLインジェクションの可能性があるコードを探す。
 
3.コードの手動解析
・ツールで検出された脆弱性を人の目で確認する。さらに、ツールでは見つけられないビジネスロジックの欠陥などを探す。
 
4.動的テスト(DAST)
・実際にアプリケーションを動かし、疑わしい部分を攻撃してみる。
例:フォームの入力欄に悪意のあるデータを入れてみる。
 
5.レポート作成
・発見した脆弱性を整理し、対策を提案する。
例:「SQLインジェクションの可能性あり。プリペアドステートメントを使用することで修正可能。」
 
6.修正と再テスト
・開発者が修正後、再度テストを実施する。
・修正が適切に行われたかを確認する。
 
 

ハッカーはコード監査を使いソースコードを分析し、セキュリティ上の問題や脆弱性を発見するのまとめ

倫理的なエクスプロイト開発者が行うコード監査とは、ソースコードを解析し、脆弱性を特定・修正するプロセスです。主に SQLインジェクション、XSS(クロスサイトスクリプティング)、認証の欠陥、暗号化の不備 などをチェックします。
方法として 手動監査(人の目で確認) と 自動監査(ツールを使用) があり、組み合わせて行います。
これにより 攻撃手法を理解し、防御策を設計する能力を高める ことができます。TryHackMe などを活用し、実践しながら学ぶのが効果的ですね。