💭

Day 3: Webアプリケーションセキュリティ入門 - 攻撃的セキュリティ入門

2024/11/14に公開

はじめに

今では、Webアプリケーションは仕事ではもちろん生活にも欠かせない存在です。Gmailでメールを確認したり、Amazonで買い物をしたりと、さまざまなサービスをブラウザ(SafariやGoogle Chromeなど)を使って利用できるのでとても便利です。しかし、その便利さの裏にはセキュリティリスクも潜んでいます。この記事では、Webアプリの仕組みや弱点について理解し、どんなリスクがあり、どのようなことを学ぶべきか整理していきます。


Webアプリケーションの仕組み

Webアプリケーションは、リモートサーバー(インターネットを通じてアクセスできるサーバー)上で動作し、ブラウザを通して利用することができます。たとえば、ショッピングサイトで商品を探したり購入したりする際、サーバーがデータを処理し、その結果をユーザーに返しています。

オンラインショッピングサイトを例に見た脆弱性と問題

Amazonのようなオンラインショッピングサイトを例にとってみます。こうしたWebアプリには、さまざまな情報が保存されています。

  • 商品データ:商品名、価格、画像、説明など
  • ユーザーデータ:名前、住所、電話番号など
  • 購入データ:購入履歴や支払い情報など

このようにして多くの情報を扱うアプリケーションにおいて、攻撃者がアプリの脆弱性を突くと、以下のような問題が発生する可能性があると考えています。

  • 商品情報が改ざんされ、ブランドイメージに悪影響が出る
  • ユーザー情報が悪用される
  • クレジットカード情報が不正利用され、金銭的な被害が発生する

もちろんのこと、こういったリスクは、運営者やユーザーにとって大きな問題を引き起こしかねません。

Webアプリケーションに潜む主なセキュリティリスク

ここでは、Webアプリケーションにおける代表的なセキュリティリスクを簡単に紹介します。現段階では、各項目の内容を知っても全貌が見えませんが、具体的な内容は別の記事でさらに掘り下げていきます。

1. ログインに関するリスク

  • ブルートフォース攻撃:攻撃者が自動ツールで大量のパスワードを試し、不正にログインを試みる手法です。また、パスワードを固定して大量のユーザー名を試すリバースブルートフォース攻撃や、辞書にある単語を試す辞書攻撃などもあります。
  • 弱いパスワード:簡単に推測できるパスワードはブルートフォース攻撃の標的となりやすいため、複雑で長いパスワードを設定する必要があります。
  • パスワードのプレーンテキスト保存:暗号化されていないパスワードが流出すると誰でも読めてしまうため、パスワードをデータベースに保存する際は必ず暗号化が必要です。

2. SQLインジェクション攻撃

SQLインジェクションは、データベースに不正な命令を送り込んでデータを盗んだり改ざんしたりする攻撃です。検索欄などに悪意のあるコードが入力されると、通常アクセスできないデータが取得される可能性があります。

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

XSSは、Webページに悪意あるスクリプトを埋め込むことで、他のユーザーの情報を盗む攻撃です。例えば、コメント欄にスクリプトを仕込むことで、他のユーザーがアクセスした際に個人情報を盗まれる可能性があります。

4. 暗号化の不備

支払い情報や個人データが暗号化されずに送信されていると、通信途中で情報が盗まれるリスクがあります。安全な通信を行うために、HTTPSの使用や強力な暗号化技術を採用しましょう。

5. アクセス制御の不備

アクセス制御は、各ユーザーが利用できる機能やデータを制限する仕組みです。例えば、ユーザーが商品の価格を見られても変更できないようにすることで、データの安全性を保ちます。設定が不適切だと、意図しないデータ漏洩や不正アクセスの原因になります。


イメージを描いて理解を深める

自由に手を動かして図を書いてみましょう。自分なりの理解が深まったり記憶に残りやすくなります。

※ペンタブを買って筆者の図を載せる予定


小テスト

Q1: Webアプリケーションはどこで動作するアプリケーションですか?
A1:
a) ローカルコンピュータ
b) リモートサーバー
c) クラウドストレージ
d) インターネットブラウザ

Q2: SQLインジェクション攻撃はどのような目的で行われますか?
A2:
a) データを暗号化するため
b) データベースからデータを盗み出したり改ざんしたりするため
c) ユーザーにスパムを送るため
d) ウイルスをインストールするため

Q3: クロスサイトスクリプティング(XSS)は、どのような攻撃ですか?
A3:
a) ウェブページに悪意あるスクリプトを埋め込み、他のユーザーの情報を盗む攻撃
b) データベースから不正にデータを取り出す攻撃
c) パスワードを推測してログインする攻撃
d) ネットワーク上の通信を傍受する攻撃

Q4: ブルートフォース攻撃とは何ですか?
A4:
a) 膨大な量のパスワードを試してログインを試みる攻撃
b) ウイルスを広める攻撃
c) サイトのデザインを改ざんする攻撃
d) 他のユーザーの情報を盗む攻撃

Q5: HTTPSの使用が重要なのはなぜですか?
A5:
a) ウェブページの読み込みが速くなるため
b) 通信が暗号化されていて、データが安全にやり取りされるため
c) より多くのデバイスに対応するため
d) 他のユーザーがアクセスできないため


解答

Q1: b) リモートサーバー
Q2: b) データベースからデータを盗み出したり改ざんしたりするため
Q3: a) ウェブページに悪意あるスクリプトを埋め込み、他のユーザーの情報を盗む攻撃
Q4: a) 膨大な量のパスワードを試してログインを試みる攻撃
Q5: b) 通信が暗号化されていて、データが安全にやり取りされるため


まとめ

Webアプリケーションは非常に便利ですが、その分、セキュリティリスクも潜んでいます。特に個人情報や取引データを扱うオンラインショッピングサイトなどは、攻撃者にとって魅力的なターゲットです。攻撃的セキュリティの視点からWebアプリケーションの脆弱性やリスクを理解し、基本的な防御策を学ぶ必要があります。

Discussion