Save 37% off PRO during our Black Friday Sale! »

WordPress セキュリティガイド #wpmeetupkyoto / WP Security Guide

6e007aca86b0c0b0eabdebc33d81810d?s=47 yoshinori matsumoto
November 01, 2021
2.5k

WordPress セキュリティガイド #wpmeetupkyoto / WP Security Guide

6e007aca86b0c0b0eabdebc33d81810d?s=128

yoshinori matsumoto

November 01, 2021
Tweet

Transcript

  1. WordPress
 セキュリティガイド
 〜運用可能なセキュリティを始めるために〜
 Yoshinori Matsumoto


  2. 自己紹介
 松本 悦宜(まつもと よしのり)
 神戸→Capy株式会社 / CSIRTトレーニングセンタ
 セキュリティ診断、脆弱性情報分析、サービス開発など 
 共著
 WordPressプロフェッショナル養成読本


    インターネット白書2015
 講演発表など
 WordCamp Kansai 2015, 2016 Black hat 2016 Arsenal, OWASP AppSec APAC
 IPAセキュリティキャンプ講師

  3. Is WordPress Danger?
 2
 現場でこんなことありませんか 元ネタ: https://twitter.com/tome_ura/status/1414796451054383107 ※ ネタのために一部変えています

  4. 個人的な見解
 
 ✗ WordPress 危ないから使わない ✗
 
 CMSを変えても問題は解決しない
 
 👌

    WordPress を安全に使用する
 
 できれば面倒くさくない
 運用可能なセキュリティ対策
 3

  5. (参考)Drupalの事例
 4
 Drupal は危ないという考えも NG どのCMSでも脆弱性がある 脆弱性の対応は必要 (ただし楽にすることは可能?) Drupalに脆弱性、アップデート公開直後から攻撃横行 早急に更新を https://www.itmedia.co.jp/enterprise/articles/1902/28/news077.html

  6. (参考)ラッキービジターの事例
 5
 改ざんされたWordPress上に置かれたファイル 
 ラッキービジター
 Windows偽ウィルス警告に設置 
 アクセスした第三者への影響 


  7. • WordPressのログインを守る • 脆弱性情報を確認する • プラグインとテーマを選ぶ • WordPressの関数を使う セキュリティ対策
 管理者

    開発者向け 管理者 / 編集者 / 投稿者 / 寄稿者 / 購読者 WordPressを安全に使う方法! できれば楽なやつ 全ユーザ +α 事故がおこったら
  8. WordPressのログインを守る
 7


  9. XML RPC wp-login.php WordPressのログインを守る
 ここのログイン機能が狙われやすい

  10. ガチガチ デフォルト wp-login.php等のアクセス制限(XMLRPCも) 2要素認証、アカウントロック パスワードポリシーの確認 ユーザはどう使うかを考えながら設定する IPアドレスが固定可能か? セキュリティへの”負荷”(面倒事)をお願いできるか? 運営者への負担はどれくらい許容できるか? ログイン画面の設計例


  11. パスワードポリシーについて
 10
 • パスワードポリシーを強制することはできない (ユーザが多い環境では注意が必要) • アカウント名も推測されている • ?author=1でアカウントが推測 →ここを変更するのは面倒くさい

    但しパスワードにアカウント名を入れないことも重要 「パスワードを強固なものにする」とは? パスワードポリシー • 8文字以上 • 大文字小文字記号含める • 他のサービスで使い回さない WordPressで注意しておいたほうがいいこと
  12. サイトの保護 ホワイトリスト WordPress.com の SSO を利用 JETPACKで解決?


  13. WooCommerce
 12
 顧客向けのアカウント管理はWordPressの「Customer」 権限(WC独自)として作成される wp-login.php経由でもログインできるが 管理画面(wp-admin以下)にはアクセスできない • WordPressのログインフォームと同じ強度 • 通常ログインと違い「nonce」はついているが、ワンタイムではないの

    でブルートフォース対策には微妙 • ログイン保護系のプラグインはそのまま使える (Login LockDown, Crazybone などでは検知できた)
  14. ログイン大丈夫? 1/2
 13
 レンタルサーバの場合 他サイト 他サイト My WordPress あなた FTPサーバ

    共用サーバ FTPアカウント WPアカウント コンパネ アカウント サーバ 契約情報 ホスティング会社の二要素認証を有効にする それぞれパスワードを使いまわさない FTPクライアントは最新版を使う なるべくFTPは使わない コンパネ
  15. ログイン大丈夫? 2/2
 14
 VPS/クラウドサービスの場合 あなた VPS WPアカウント コンパネ アカウント サーバ

    契約情報 ホスティング会社の二要素認証を有効にする サーバのSSHログインは公開鍵認証 (パスワード無効)にする セキュリティグループなども設定 コンパネ WordPress SSH サーバアカウント
  16. (参考)ブラックリスト
 15
 Q. 過去に wp-login.php にアクセスがあったIPアドレスを ブロックしているが効果はあるのか? アクセスログ Attack IP

    .htaccessなど ログイン画面に広くアクセスしているIPはその都度変更されるため、 IPアドレスのブラックリストを管理するのは難しい。 また、現状海外のIPアドレス帯域に多い傾向はあるが、 今後国内IPアドレスでのスキャンも考えられるため、 国ごとのアクセス制限を過信しないように注意が必要。
  17. (参考)Basic認証
 16
 Q. ログイン画面にBasic認証いれるべき? 入れてもいいけど、面倒にしてまでのメリットはないかも... (特に平文通信を行っているサイトは危険) WPの機能でカバーできるのでメリットを享受できない デメリットは解決していない https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html

  18. 脆弱性情報を確認する
 17


  19. 更新をこまめに
 ダッシュボードにある更新情報は要確認 • 本体 • テーマ • プラグイン

  20. 脆弱性情報を確認する
 本体 テーマ プラグイン オートアップデートの対象 メジャーアップデートは管理画面から オートアップデートの対象外 管理画面から オートアップデートの対象外 管理画面から

  21. オートアップデートを使う
 20
 WordPress 3.7 から導入 デフォルトで有効 マイナーアップデート(セキュリティアップデート)のみ対象 無効にすることも可能 よっぽどの理由がない限り無効にしない 5.7

    5.7.3 5.8 5.8.1 2021/3 2021/9 2021/9 2021/9 オートアップデート 手動 アップデート オートアップデート 原則的にサポートは最新版であるが、 セキュリティパッチが出ることもある
  22. ケーススタディ REST API の脆弱性
 21
 https://www.asahi.com/articles/ASK2B3HS6K2BULOB008.html WordPress の脆弱性対策について https://www.ipa.go.jp/security/ciadr/vul/20170206-wordpress.html 本体

    影響受けるバージョン 4.7.0, 4.7.1 (4.6系もしくはそれ以下は 対象外) 修正済みのバージョン 4.7.2 オートアップデート対象
  23. 脆弱性情報
 22
 公的機関 JPCERT/CC 注意喚起 http://www.jpcert.or.jp/at/ JVN https://jvn.jp/ ホスティング会社 注意喚起やメール

    このあたりに出現する 情報には要注意!
  24. 脆弱性情報
 23
 むずかしい話よーわからんという方のために • 認証なし(遠隔の、第三者による〜) • 外部から(リモートから) • コード実行(RCE :

    Remote Code Execution) などが揃うと要注意 こちらの項目で攻撃が簡単かどうかなどを確認する またオートアップデートで対応できているかどうか
  25. サーバの設定
 24
 • PHPのバージョンが古すぎないか → そもそもWordPressも動かなくなる • Webサーバ(Apache/Nginx)のバージョンが古すぎないか → yum

    update ! • ファイアウォール / iptables / セキュリティグループ → 使用していないサービスが起動したままになっていないか • ログローテーション • SSL化 → パスワード・個人情報を扱う場面はあったほうがいい。SEO的にも。 よくわからない、面倒くさいという人は レンタルサーバもしくはWordPress.comを利用しましょう
  26. プラグインとテーマを選ぶ
 25


  27. 脆弱性のあるプラグイン
 Yuzo Related Posts Zero-Day Vulnerability Exploited in the Wild

    https://www.wordfence.com/blog/2019/04/yuzo-related-posts-zero-day-vulnerability-exploited-in-the-wild/ 脆弱性を悪用され スクリプトを埋め込まれる 閲覧者が実行すると 詐欺サイトに誘導される その後プラグインは削除される 開発者に通知はいかない!?
  28. Duplicatorプラグイン
 27
 脆弱性を悪用され 任意コードが実行される アップデートにて 脆弱性対応可能 • サイト改ざん • バックドア埋め込み

    • ファイル削除など • フィッシングサイト化 • 偽サイトへの誘導 なんでもできる Duplicator Update Patches Remote Code Execution Flaw https://www.wordfence.com/blog/2018/09/duplicator-update-patches-remote-code-execution-flaw/
  29. WebShell
 28
 WordPressの事故対応でよく見る事例 WebShellというツールをサーバ内に置かれる これをキッカケにサーバでの操作を行われる

  30. プラグインの選び方
 29
 修正やメンテナンスがよく行われているものを選ぶ 長期間放置されているものは要注意 脆弱性の攻撃方法が広まっている可能性もあり プラグインやテーマのページで このような表記が出ると要注意

  31. (参考)バックアップ
 30
 バックアップは大事 WordPressの標準的なログ環境だけでは、 有事のときに被害状況を把握することが難しい (原因を特定したうえで) 平常時に戻してしまう方が早いこともある ・ソースファイル ・DB (Dumpファイル)

    のバックアップがあれば なんとかなる プラグインを活用するのもOK 脆弱性とライセンスには気をつけて
  32. WordPressの関数を使う
 31


  33. SQLインジェクション XSS(クロス・サイト・スクリプティング) データベースへの攻撃 データベースへの漏えいや書き換えなど 第三者による JavaScript の実行 サイト訪問者への不正サイトへの誘導や、 マルウェアダウンロードなど WordPressの関数を使う


  34. WordPressが提供する関数を用いる $wpdb->prepare プレースホルダーを使ったクエリの保護 wp_kses esc_html / esc_attr 第三者によるJavaScriptの実行防止 How to

    Prevent File Upload Vulnerabilities https://www.wordfence.com/learn/how-to-prevent-file-upload-vulnerabilities/ current_user_can('upload_files') 現在のユーザが権限をもつか。 例ではアップロード権限をもつかどうか wp_check_filetype ファイルタイプをチェックする MINEタイプを含めてチェックする必要がある
  35. 事故現場でよくみられるパターン
 ファイルアップロードを自前につくる
 →アップロードの認証をミスる
 
 文字連結してSQL文を書く
 →パラメータの処理に不具合があって脆弱性を作り込む可能性 が
 
 CKEditorを置く
 →置き方によっては注意が必要


    34

  36. 事故はおこるさ
 35


  37. あんまり考えたくないけど
 36


  38. WordPressサイトが事故るといくらかかる?
 WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/

  39. 想定サイト
 WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/

  40. 想定サイト
 39
 WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/ 488,355円

  41. このサイトが事故ったら?
 40
 とホスティング会社から連絡を受けた そのためサイトは停止中 サイト自身のビジネスインパクトは低いため 停止自体に大きな影響はないが、原因や被害状況を確認後、 安全を確認したうえで、なるべく早めに再開させたい Q.セキュリティベンダの調査費用はいくらいでしょう 「神戸みなと歯科」のサイトにアクセスすると 不正なサイトにリダイレクトされる

    想定事案
  42. たぶんこれくらい?
 41
 分類 内容 価格 初期調査 ・アクセスサーバログ調査 ・ファイルスキャン  (不正なファイルがないか) ・個人情報漏洩リスク判定

    \250,000 セキュリティ診断 ・セキュリティ診断 (ツール診断、本診断および再診断) \150,000 オプション ・オンサイト報告 \50,000 期間:1週間程度(診断を除く) 納品物:調査報告書 作り直すのと かわらん><
  43. 事故対応は結構高い
 42
 ドメインとかと同じで最後まで管理することを目的とする (リアルな話だと)保守サービスをケチらない 管理できていないウェブサイトは閉鎖の検討を https://www.ipa.go.jp/security/ciadr/vul/20140619-oldcms.html • お客様、関連企業、監督官庁への説明 • WAFなどのセキュリティ製品との新規契約

    • 弁護士費用 • 再構築費用、業者再選定 検討項目 実施項目が...
  44. まとめ
 43


  45. • WordPressのログインを守る • 脆弱性情報を確認する • プラグインとテーマを選ぶ • WordPressの関数を使う • セキュリティわぷーほしくない?(誰か!

    WordPressを安全に使う方法! できれば楽なやつ Good Luck ✈

  46. その他
 
 
 
 
 
 松本 悦宜 Yoshinori Matsumoto


    @ym405nm
 matsumoto@capy.me
 45