お持ちのWEBサイトSSL化されていますか?最近はHTTPSでないサイトを閲覧するとURLバーに「保護されていない通信」や「安全ではありません」と表示されるようになりました。
では具体的にどのような危険があるのでしょうか。特にSSL化されていないと危険なのが、WordPressで運用されているサイトです。
今回は、実際にSSL化していない仮想のWordPressサイトを作成し、攻撃してみました。これからサイト運営を始める方、SSLを導入していないサイトを運用している方は、是非ご覧ください。
目次
攻撃方法
今回はWordPressを攻撃対象にします。中間者攻撃、MITM攻撃(Man-in-the-middle attack)と呼ばれる、ログイン情報の傍受を行い、不正ログインを可能にする方法を試みます。
PC上で仮想のWordPressを作成し、ローカルサーバーを立ち上げました。
作成したWordPressは特にプラグインなどは入れておらず、作成したてのWordPressで、メールアドレスとログインパスワードのみでログインできる状態になっています。
ログイン情報は
メールアドレス: akiyama@zaty.jp
パスワード: test_password_123456
と設定しました。
ログイン情報の傍受
スマートフォンから立ち上げたサーバーのWordPressにアクセスします。
傍受にあたってSSL化されていないサイトと、SSL化されているサイト2つ用意して傍受した時の内容を比較します。
スマホからWordPressのログイン画面にアクセス
SSL化の有無によって赤い丸の部分に鍵マークがないことがわかります。
SSL化されていない状態でログイン
まずはSSL化されていない状態でログインした直後の通信を傍受してみます。
結果がこちらです。
HTTPという通信が行われており、POSTやGETなどのリクエストがわかる状態です。さらに、よく見るとファイル名なども全て確認できる状態になっています。
下の白い背景の通信内容部分も見てみます。
赤線部分とオレンジ線部分を見ると設定したログイン情報が表示されています。%40は@です。
完全にログイン情報が漏れています。これで攻撃者はログイン情報を手に入れており、ログインページも確認できているので、不正ログイン可能になりました。
SSL化されている状態でログイン
それではSSL化されていると先ほどの通信情報はどのようになるのか見ていきます。
先ほどHTTPと書いてあった部分がTLSになりました。TLSとはSSLの次世代規格で、現在SSL化と呼ばれているものの本質はTLSというセキュリティ通信のことである場合がほとんどです。
SSL化されていないとき見えていたファイル名やリクエストの種類などは見えないことがわかります。
ファイル名やリクエストが正確にわからないので、どの部分がログインの部分かわからないので、通信の一つを選択して、通信内容を見てみます。
先ほど、読める状態で並んでいた文字列部分です。SSL化されている通信では暗号化されているため、何について書いてあるかを把握するのが困難になります。
危険性・リスク
実際に攻撃してみて、WordPressを使用しており、SSL化されていない場合かなり危険であることがわかりました。
それでは、他の危険性とともに踏まえてSSL化されていないデメリットをまとめます。
データの傍受
先ほど紹介した通信傍受のリスクです。しかし、先ほど紹介したのは同一Wi-Fiでの通信の盗聴の一例であり、他にも通信を傍受する方法はあります。主な攻撃として
- ARPスプーフィング
- DNSスプーフィング
- SSLストリッピング
とありますが、SSL化することにより攻撃が困難になります。
信頼性の低下
最近のブラウザーはSSL化されていないサイトを表示した際に、安全ではないサイトとして警告を出します。そのため訪問者がサイトを離れる可能性が高くなります。
SEOに悪影響があり検索されにくくなる
Googleの検索エンジンはSSL化されているサイトを品質の高いWEBサイトとして評価することが発表されています。
ですので、同じ内容でもSSL化されていないだけでSEOに悪影響を与えてしまいます。
攻撃対象のサイトとし認識されやすくなる
直接的な危険性ではありませんが、SSL化していないサイトは攻撃対象になりやすくなります。WEBサイトはSSL化していても起こりうる危険性は多くあります。例として以下の攻撃があります。
- XSS攻撃
コメントフォームやお問い合わせフォームに悪意のあるプログラムを埋め込まれる攻撃 - CSRF攻撃
攻撃者のサイトにアクセスすることで、不正にログインなどの処理を行われる攻撃 - SQLインジェクション
攻撃者がデータベースに対して悪意のあるクエリを送信してデータベースを改竄しようとする攻撃 - DDoS攻撃
複数のデバイスから大量のリクエストを送りサーバーに過負荷をかける攻撃 - ブルートフォース攻撃
ログインフォームのパスワード入力を総当たりで試行し不正にログインしようとする攻撃
このようにWEBサイトはさまざまな危険性に晒されています。WordPressは初期状態ではこれらの攻撃から守られていないこともあり、SSL化されていないサイトで運用されているサイトは攻撃対象の的になってしまう可能性が高くなります。
まとめ
今回はSSL化していないWEBサイトがどのような危険性があるのか実際に仮想のWordPressを作成し、通信の傍受を試してみました。SSL未実装での危険性としてよく挙げられている「なりすまし攻撃」「コンテンツの改竄」もこの通信の傍受によって行われる攻撃です。
SSL実装することによるセキュリティの安全性がご理解いただけたと思います。
よくある質問
サイトをSSL化する方法は?
SSL証明書は
- ドメイン検証(DV)証明書
- 組織検証(OV)証明書
- 拡張検証(EV)証明書
と3種類あります。証明書を取得はGMOなどの事業者を通して契約することができるほか、無料のSSL証明書を提供するサービス(例:Xserver SSL)もあります。
またXserverなど、レンタルサーバーを利用することでも無料で常時SSLを利用することができます。
SSL化に必要な費用はどれくらいですか?
SSL証明書の費用は、証明書の種類や発行機関によって異なります。DV証明書は比較的安価で、年間数千円程度から利用できます。OV証明書やEV証明書は、年間数万円程度かかることが一般的です。無料のSSL証明書を提供するサービス(Let's Encryptなど)もありますが、更新期間や機能に制限があることがあります。
またXserverなど、レンタルサーバーを利用することでも無料で常時SSLを利用することができます。
自分のサイトがSSL化されているかどうかを確認する方法はなんですか?
サイトにアクセスしてアドレスバーを確認してください。SSL化がされていればURLがhttps://から始まっています。
また、SSL化されているサイトの場合、URLの左側に鍵マークが表示されます。
無料のSSL証明書を使うデメリットはありますか?
あります。無料のSSL証明書では、ドメインや組織の証明の信頼性が低い場合があります。
例えば有料証明書を使った場合、成りすましサイトと自分のサイトの違いとして、URLだけでなくSSL証明書を確認することでも判断することができます。無料のSSL証明書ではこの確認の信頼性が低いと考えられます。
ただし、通信の暗号化は無料のSSL証明書でも行われているので、通信の傍受やSEOの悪影響などは十分に対策できます。
参考サイト
さくらのSSL:SSLとTLSの違いとは
IPA:TLS暗号設定ガイドライン
web.dev:Enabling HTTPS on your servers