LoginSignup
3
0

はじめに

セキュリティ対策は、出来ていなくても動作に問題が生じることはなく、取り合えず、動いているから、問題ないなんて考えていると、意外な所で、痛い目に合います。設計漏れなんかがそれにあたるのでは、ないでしょうか?そこで、そうならない為に、エンジニアとして、最低限、知っておきたい10種類の脆弱性、攻撃例、対策方法について、まとめました。今後、システムを構築する際の参考にして頂けましたら、幸いです。

1. SQLインジェクション (SQL Injection)

脆弱性
アプリケーションがユーザー入力を適切に検証せずにSQLクエリに組み込む場合、攻撃者が任意のSQLコードを実行できる脆弱性。

攻撃例
攻撃者がログインフォームに ' OR '1'='1 などのSQLコードを入力し、データベースに不正アクセスする。

対策方法

  • パラメータ化されたクエリを使用する。
  • 入力データの検証とエスケープ処理を適切に行う。
  • 権限管理を徹底する。
  • 最新のバージョンのソフトウェアを使用する。

2. クロスサイトスクリプティング (XSS)

脆弱性
ウェブアプリケーションがユーザー入力を適切にエスケープせずにHTMLコンテンツとして表示する場合、攻撃者が悪意のあるスクリプトを実行できる脆弱性。

攻撃例
攻撃者がコメント欄に <script>alert('XSS');</script> のようなスクリプトを入力し、他のユーザーがそのページを閲覧した際にスクリプトが実行される。

対策方法

  • 入力データの検証とエスケープ処理を適切に行う。
  • コンテンツセキュリティポリシー(CSP)を導入する。
  • 最新のバージョンのソフトウェアを使用する。

3. クロスサイトリクエストフォージェリ (CSRF)

脆弱性
ユーザーが認証された状態で、攻撃者がユーザーの意図しないリクエストを送信させる脆弱性。

攻撃例
攻撃者がユーザーに悪意のあるリンクをクリックさせ、ユーザーのアカウントで不正な操作(例:パスワード変更、送金)を行わせる。

対策方法

  • CSRFトークンを使用する。
  • リファラーチェックを行う。
  • セッションの有効期限を短く設定する。

4. バッファオーバーフロー (Buffer Overflow)

脆弱性
プログラムが固定長のバッファに対して過剰なデータを書き込む場合、メモリの他の部分にデータが上書きされる脆弱性。

攻撃例
攻撃者が特定の入力を通じてバッファをオーバーフローさせ、任意のコードを実行する。

対策方法

  • 入力データの検証と範囲チェックを行う。
  • 安全なプログラミング言語を使用する。
  • 最新のバージョンのソフトウェアを使用する。

5. ディレクトリトラバーサル (Directory Traversal)

脆弱性
アプリケーションがユーザー入力を適切に検証せずにファイルパスとして使用する場合、攻撃者がシステム上の任意のファイルにアクセスできる脆弱性。

攻撃例
攻撃者が ../../etc/passwd のようなパスを入力し、システムの重要なファイルにアクセスする。

対策方法

  • 入力データの検証を行う。
  • パスの正規化を行う。
  • 脆弱性対策パッチを適用する。
  • ファイアウォールを設定する。

6. セッションハイジャック (Session Hijacking)

脆弱性
セッションIDが盗まれることで、攻撃者が正当なユーザーとしてシステムにアクセスできる脆弱性。

攻撃例
攻撃者がネットワークトラフィックを盗聴してセッションIDを取得し、そのIDを使ってユーザーのセッションを乗っ取る。

対策方法

  • HTTPSを使用する。
  • Cookieの設定を「常に削除する」に設定する。
  • 脆弱性対策パッチを適用する。
  • ファイアウォールを設定する。
  • 二段階認証を利用する。

7. マルウェア (Malware)

脆弱性
システムやアプリケーションに対して悪意のあるソフトウェアがインストールされる脆弱性。

攻撃例
攻撃者がフィッシングメールを通じてマルウェアを配布し、ユーザーのシステムにインストールさせる。

対策方法

  • セキュリティ対策ソフトを導入する。
  • OSやソフトウェアを最新の状態に保つ。
  • 怪しいメールや添付ファイルを開かない。
  • 不審なWebサイトにアクセスしない。
  • パスワードを使い分ける。
  • ファイアウォールを設定する。

8. フィッシング (Phishing)

脆弱性
ユーザーが偽のウェブサイトやメールに騙されて個人情報を提供してしまう脆弱性。

攻撃例
攻撃者が銀行のログインページを模倣したウェブサイトを作成し、ユーザーにログイン情報を入力させる。

対策方法

  • 送信者やURLの正当性を確認する。
  • 公式WebサイトのURLを確認してからアクセスする。
  • フィッシング対策ソフトを導入する。

9. ランサムウェア (Ransomware)

脆弱性
コンピュータシステムを暗号化し、使用不能にしたうえで、復旧の対価として身代金を要求する悪質なソフトウェア。

攻撃例
攻撃者がリモートコード実行(RCE)脆弱性を悪用してランサムウェアをインストールする。

対策方法

  • バックアップを定期的に行う。
  • 最新のセキュリティ対策ソフトを導入する。
  • 従業員へのセキュリティ教育を徹底する。

10. ブルートフォース攻撃 (Brute Force Attack)

脆弱性
パスワードなどの認証情報を推測するために、様々な組み合わせを自動的に試行する攻撃。

攻撃例
攻撃者が自動化ツールを使用して、パスワードを推測し続ける。

対策方法

  • 強力なパスワードを設定する。
  • 二段階認証を有効にする。
  • アカウントロックアウト機能を有効にする。

これらの脆弱性と攻撃の例を理解し、適切な対策を講じることで、システムやアプリケーションのセキュリティを強化することができます。

ご参考 ハンズオンで攻撃の流れを確認することも出来ます

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0