Day 3: Webアプリケーションセキュリティ入門 - 攻撃的セキュリティ入門
はじめに
今では、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