🔐

サイバー攻撃の種類と対策

2025/03/26に公開

1. サイバー攻撃とは?

サイバー攻撃とは、インターネットやネットワークを通じてシステムやデータに不正なアクセスを行い、情報の盗難・破壊・改ざん・サービスの妨害などを目的とする攻撃のことです。
攻撃者(ハッカー、クラッカー、サイバー犯罪者など)が、個人・企業・政府機関のデータやシステムを標的にすることが多く、金銭的な利益、政治的な目的、単なる愉快犯的な行動など、動機はさまざまです。

2. サイバー攻撃の種類

サイバー攻撃にはさまざまな種類があり、それぞれ異なる目的や手法を持っています。
主な種類を以下に紹介します。

2.1 マルウェア(Malware)攻撃

悪意のあるソフトウェアを使った攻撃の総称で、以下の種類があります。

  • ウイルス(Virus)
    自己増殖し、他のファイルやプログラムに感染する。
  • ワーム(Worm)
    ネットワークを通じて自己増殖する。
  • トロイの木馬(Trojan Horse)
    無害なソフトを装い、バックドアやスパイウェアを仕込む。
  • ランサムウェア(Ransomware)
    ファイルを暗号化し、解除のために身代金を要求する。
  • スパイウェア(Spyware)
    個人情報や機密データを盗み出す。

例:
Webサイトにアクセスすると、知らない間に悪意のあるプログラムがダウンロードされ、ユーザーのPCがウイルス感染する。
被害:
ユーザーの個人情報が盗まれたり、PCがランサムウェアに感染してデータが暗号化される。

2-2. フィッシング(Phishing)

偽のWebサイトやメールを使ってユーザーのIDやパスワード、クレジットカード情報などを盗む手法。

  • スピアフィッシング(Spear Phishing)
    特定の個人や組織を標的にする手法。
  • ビジネスメール詐欺(BEC, Business Email Compromise)
    偽の経営者メールで送金を指示する。

例:
本物の銀行やECサイトを装った偽サイトが作られ、ユーザーがログイン情報を入力すると攻撃者に送信される。
被害:
クレジットカード情報やログインID・パスワードが盗まれ、不正利用される。

2-3. DDoS(Distributed Denial of Service)攻撃

多数のコンピュータから標的のサーバーに大量のリクエストを送信し、サービスを停止させる攻撃。

例:
人気のECサイトに大量のリクエストを送り続け、サーバーをダウンさせる。
被害:
正常なユーザーがサイトにアクセスできなくなり、売上や信頼が低下する。

2-4. ゼロデイ攻撃(Zero-Day Attack)

ソフトウェアの未修正(パッチ未適用)の脆弱性を狙った攻撃。

例:
CMS(例: WordPress)の未修正の脆弱性を悪用し、管理者権限を奪ってサイトを改ざんする。
被害:
サイトが乗っ取られ、マルウェアが仕込まれたり、訪問者の情報が盗まれる。

2-5. SQLインジェクション(SQL Injection)

Webアプリの入力フォームなどに不正なSQL文を挿入し、データベースを操作する攻撃。

例:
Webサイトのログイン画面に '; DROP TABLE users; -- のようなSQL文を入力すると、データベースが破壊される。
被害:
ユーザー情報が漏洩したり、データベースが削除される。

2-6. クロスサイトスクリプティング(XSS, Cross-Site Scripting)

Webサイトに悪意のあるスクリプトを埋め込み、ユーザーのブラウザ上で実行させる攻撃。

例:
ユーザーが投稿できるコメント欄に <script>alert('ハッキング成功!')</script> を入力すると、他のユーザーのブラウザで実行される。
被害:
ユーザーのクッキー情報が盗まれ、不正ログインされる。

2-7. 中間者攻撃(MITM, Man-in-the-Middle Attack)

通信を傍受し、改ざんや盗聴を行う攻撃。例えば、Wi-Fiの盗聴やHTTPSの偽装がある。

例:
公共Wi-FiでECサイトにログインした際、通信が盗聴され、クレジットカード情報が抜き取られる。
被害:
クレジットカードが不正利用される。

2-8. サプライチェーン攻撃

正規のソフトウェアやハードウェアの開発・流通過程で脆弱性を仕込む攻撃。

例:
Webサイトに導入されている広告スクリプトやCDNが改ざんされ、訪問者がマルウェアに感染する。
被害:
企業が直接攻撃されなくても、ユーザーが被害を受ける。

2-9. ログインクレデンシャル攻撃

  • ブルートフォース攻撃(Brute Force Attack):総当たりでパスワードを試す。
    例:
    Webサイトの管理画面(例: example.com/admin)に対し、自動プログラムでパスワードを総当たり攻撃する。
    被害:
    弱いパスワードのアカウントが乗っ取られる。
  • 辞書攻撃(Dictionary Attack):一般的な単語を使ってパスワードを解読する。
    例:
    ユーザーのパスワードが「password123」のような簡単なものだと、辞書にある一般的なパスワードを試すことで突破される。
    被害:
    アカウントが乗っ取られる。
  • クレデンシャルスタッフィング:流出したID・パスワードを使い回して不正ログインを試みる。
    例:
    他のサイトで流出したID・パスワードのリストを使い、大手ECサイトにログインを試みる。
    被害:
    パスワードを使い回しているユーザーのアカウントが不正アクセスされる。

3. サイバー攻撃の対策

3-1. マルウェア(Malware)攻撃

  • ファイルアップロード機能がある場合、アップロードされたファイルの拡張子やMIMEタイプを厳格にチェック。
  • .exe, .js, .php などの危険なファイルをアップロード禁止。
  • Webサイト内でアップロードされたファイルを直接実行させない設定(例: upload ディレクトリに execute 権限を与えない)。
  • ファイルをサンドボックス環境で処理する。

3-2. フィッシング(Phishing)

  • Content-Security-Policy (CSP) を設定し、外部の不正スクリプトを防ぐ。
  • サイト内のリンクを確認し、外部サイトへの遷移を明示する。
  • 外部リンクに rel="noopener noreferrer" を追加し、悪意のあるサイトへのリダイレクトを防ぐ。

3-3. DDoS(Distributed Denial of Service)攻撃

  • Rate Limiting(リクエスト制限) を導入し、一定時間内のリクエスト回数を制限。
  • CDN(Cloudflareなど)を活用し、DDoS攻撃の緩和。
  • APIリクエストの回数を制限する(debounce や throttle を使用)。

3-4. ゼロデイ攻撃(Zero-Day Attack)

  • フレームワークやライブラリの定期的なアップデート
  • WAF(Web Application Firewall)の導入
  • コードレビューとセキュリティテストを定期的に実施
  • React のバージョンを常に最新にする。
  • 外部ライブラリのセキュリティチェック (npm audit を使用)。

3-5. SQLインジェクション(SQL Injection)

  • プリペアドステートメントを使用する(生SQLを使わない)。
  • API側(バックエンド)での対応がメインだが、React 側ではユーザー入力のバリデーションを行う。
  • ユーザー入力を直接SQLに埋め込まない。
  • コード例
//(LaravelのEloquentでSQLインジェクション対策):
$user = User::where('email', $request->input('email'))->first();

// NG例(危険なコード - SQLインジェクションのリスクあり):
$user = DB::select("SELECT * FROM users WHERE email = '".$request->input('email')."'");

3-6. クロスサイトスクリプティング(XSS, Cross-Site Scripting)

  • HTMLエスケープ(htmlspecialchars() など)
  • dangerouslySetInnerHTML を使用しない
  • ユーザーの入力を直接HTMLに反映しない
  • CSP(Content Security Policy)を設定

3-7. 中間者攻撃(MITM, Man-in-the-Middle Attack)

  • HTTPSを強制する(HSTSを設定)
  • 認証情報はPOSTで送信し、GETを避ける
  • API通信ではJWTやOAuthのトークンを使用

3-8. サプライチェーン攻撃

  • CDNや外部ライブラリは信頼できるソースからのみ利用
  • NPM/Yarnのパッケージを定期的にアップデート
  • npm の package-lock.json を固定し、意図しないライブラリの変更を防ぐ
  • パッケージの脆弱性チェック(npm audit, yarn audit)

3-9. ログインクレデンシャル攻撃

ブルートフォース攻撃 & 辞書攻撃対策

  • ログイン試行回数の制限(Rate Limiting)
  • パスワードの複雑性チェック(8文字以上、大文字・小文字・記号を含む)

クレデンシャルスタッフィング対策

  • 2FA(二要素認証)を導入
  • ログイン時にIPやデバイスをチェック
  • 流出したパスワードリストと比較

Discussion