Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
WordPress セキュリティガイド 〜運用可能なセキュリティを始めるために〜 Yoshinori Matsumoto
Slide 2
Slide 2 text
自己紹介 松本 悦宜(まつもと よしのり) 神戸→Capy株式会社 / CSIRTトレーニングセンタ セキュリティ診断、脆弱性情報分析、サービス開発など 共著 WordPressプロフェッショナル養成読本 インターネット白書2015 講演発表など WordCamp Kansai 2015, 2016 Black hat 2016 Arsenal, OWASP AppSec APAC IPAセキュリティキャンプ講師
Slide 3
Slide 3 text
Is WordPress Danger? 2 現場でこんなことありませんか 元ネタ: https://twitter.com/tome_ura/status/1414796451054383107 ※ ネタのために一部変えています
Slide 4
Slide 4 text
個人的な見解 ✗ WordPress 危ないから使わない ✗ CMSを変えても問題は解決しない 👌 WordPress を安全に使用する できれば面倒くさくない 運用可能なセキュリティ対策 3
Slide 5
Slide 5 text
(参考)Drupalの事例 4 Drupal は危ないという考えも NG どのCMSでも脆弱性がある 脆弱性の対応は必要 (ただし楽にすることは可能?) Drupalに脆弱性、アップデート公開直後から攻撃横行 早急に更新を https://www.itmedia.co.jp/enterprise/articles/1902/28/news077.html
Slide 6
Slide 6 text
(参考)ラッキービジターの事例 5 改ざんされたWordPress上に置かれたファイル ラッキービジター Windows偽ウィルス警告に設置 アクセスした第三者への影響
Slide 7
Slide 7 text
• WordPressのログインを守る • 脆弱性情報を確認する • プラグインとテーマを選ぶ • WordPressの関数を使う セキュリティ対策 管理者 開発者向け 管理者 / 編集者 / 投稿者 / 寄稿者 / 購読者 WordPressを安全に使う方法! できれば楽なやつ 全ユーザ +α 事故がおこったら
Slide 8
Slide 8 text
WordPressのログインを守る 7
Slide 9
Slide 9 text
XML RPC wp-login.php WordPressのログインを守る ここのログイン機能が狙われやすい
Slide 10
Slide 10 text
ガチガチ デフォルト wp-login.php等のアクセス制限(XMLRPCも) 2要素認証、アカウントロック パスワードポリシーの確認 ユーザはどう使うかを考えながら設定する IPアドレスが固定可能か? セキュリティへの”負荷”(面倒事)をお願いできるか? 運営者への負担はどれくらい許容できるか? ログイン画面の設計例
Slide 11
Slide 11 text
パスワードポリシーについて 10 ● パスワードポリシーを強制することはできない (ユーザが多い環境では注意が必要) ● アカウント名も推測されている ● ?author=1でアカウントが推測 →ここを変更するのは面倒くさい 但しパスワードにアカウント名を入れないことも重要 「パスワードを強固なものにする」とは? パスワードポリシー ● 8文字以上 ● 大文字小文字記号含める ● 他のサービスで使い回さない WordPressで注意しておいたほうがいいこと
Slide 12
Slide 12 text
サイトの保護 ホワイトリスト WordPress.com の SSO を利用 JETPACKで解決?
Slide 13
Slide 13 text
WooCommerce 12 顧客向けのアカウント管理はWordPressの「Customer」 権限(WC独自)として作成される wp-login.php経由でもログインできるが 管理画面(wp-admin以下)にはアクセスできない • WordPressのログインフォームと同じ強度 • 通常ログインと違い「nonce」はついているが、ワンタイムではないの でブルートフォース対策には微妙 • ログイン保護系のプラグインはそのまま使える (Login LockDown, Crazybone などでは検知できた)
Slide 14
Slide 14 text
ログイン大丈夫? 1/2 13 レンタルサーバの場合 他サイト 他サイト My WordPress あなた FTPサーバ 共用サーバ FTPアカウント WPアカウント コンパネ アカウント サーバ 契約情報 ホスティング会社の二要素認証を有効にする それぞれパスワードを使いまわさない FTPクライアントは最新版を使う なるべくFTPは使わない コンパネ
Slide 15
Slide 15 text
ログイン大丈夫? 2/2 14 VPS/クラウドサービスの場合 あなた VPS WPアカウント コンパネ アカウント サーバ 契約情報 ホスティング会社の二要素認証を有効にする サーバのSSHログインは公開鍵認証 (パスワード無効)にする セキュリティグループなども設定 コンパネ WordPress SSH サーバアカウント
Slide 16
Slide 16 text
(参考)ブラックリスト 15 Q. 過去に wp-login.php にアクセスがあったIPアドレスを ブロックしているが効果はあるのか? アクセスログ Attack IP .htaccessなど ログイン画面に広くアクセスしているIPはその都度変更されるため、 IPアドレスのブラックリストを管理するのは難しい。 また、現状海外のIPアドレス帯域に多い傾向はあるが、 今後国内IPアドレスでのスキャンも考えられるため、 国ごとのアクセス制限を過信しないように注意が必要。
Slide 17
Slide 17 text
(参考)Basic認証 16 Q. ログイン画面にBasic認証いれるべき? 入れてもいいけど、面倒にしてまでのメリットはないかも... (特に平文通信を行っているサイトは危険) WPの機能でカバーできるのでメリットを享受できない デメリットは解決していない https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
Slide 18
Slide 18 text
脆弱性情報を確認する 17
Slide 19
Slide 19 text
更新をこまめに ダッシュボードにある更新情報は要確認 • 本体 • テーマ • プラグイン
Slide 20
Slide 20 text
脆弱性情報を確認する 本体 テーマ プラグイン オートアップデートの対象 メジャーアップデートは管理画面から オートアップデートの対象外 管理画面から オートアップデートの対象外 管理画面から
Slide 21
Slide 21 text
オートアップデートを使う 20 WordPress 3.7 から導入 デフォルトで有効 マイナーアップデート(セキュリティアップデート)のみ対象 無効にすることも可能 よっぽどの理由がない限り無効にしない 5.7 5.7.3 5.8 5.8.1 2021/3 2021/9 2021/9 2021/9 オートアップデート 手動 アップデート オートアップデート 原則的にサポートは最新版であるが、 セキュリティパッチが出ることもある
Slide 22
Slide 22 text
ケーススタディ 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 オートアップデート対象
Slide 23
Slide 23 text
脆弱性情報 22 公的機関 JPCERT/CC 注意喚起 http://www.jpcert.or.jp/at/ JVN https://jvn.jp/ ホスティング会社 注意喚起やメール このあたりに出現する 情報には要注意!
Slide 24
Slide 24 text
脆弱性情報 23 むずかしい話よーわからんという方のために • 認証なし(遠隔の、第三者による〜) • 外部から(リモートから) • コード実行(RCE : Remote Code Execution) などが揃うと要注意 こちらの項目で攻撃が簡単かどうかなどを確認する またオートアップデートで対応できているかどうか
Slide 25
Slide 25 text
サーバの設定 24 • PHPのバージョンが古すぎないか → そもそもWordPressも動かなくなる • Webサーバ(Apache/Nginx)のバージョンが古すぎないか → yum update ! • ファイアウォール / iptables / セキュリティグループ → 使用していないサービスが起動したままになっていないか • ログローテーション • SSL化 → パスワード・個人情報を扱う場面はあったほうがいい。SEO的にも。 よくわからない、面倒くさいという人は レンタルサーバもしくはWordPress.comを利用しましょう
Slide 26
Slide 26 text
プラグインとテーマを選ぶ 25
Slide 27
Slide 27 text
脆弱性のあるプラグイン 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/ 脆弱性を悪用され スクリプトを埋め込まれる 閲覧者が実行すると 詐欺サイトに誘導される その後プラグインは削除される 開発者に通知はいかない!?
Slide 28
Slide 28 text
Duplicatorプラグイン 27 脆弱性を悪用され 任意コードが実行される アップデートにて 脆弱性対応可能 • サイト改ざん • バックドア埋め込み • ファイル削除など • フィッシングサイト化 • 偽サイトへの誘導 なんでもできる Duplicator Update Patches Remote Code Execution Flaw https://www.wordfence.com/blog/2018/09/duplicator-update-patches-remote-code-execution-flaw/
Slide 29
Slide 29 text
WebShell 28 WordPressの事故対応でよく見る事例 WebShellというツールをサーバ内に置かれる これをキッカケにサーバでの操作を行われる
Slide 30
Slide 30 text
プラグインの選び方 29 修正やメンテナンスがよく行われているものを選ぶ 長期間放置されているものは要注意 脆弱性の攻撃方法が広まっている可能性もあり プラグインやテーマのページで このような表記が出ると要注意
Slide 31
Slide 31 text
(参考)バックアップ 30 バックアップは大事 WordPressの標準的なログ環境だけでは、 有事のときに被害状況を把握することが難しい (原因を特定したうえで) 平常時に戻してしまう方が早いこともある ・ソースファイル ・DB (Dumpファイル) のバックアップがあれば なんとかなる プラグインを活用するのもOK 脆弱性とライセンスには気をつけて
Slide 32
Slide 32 text
WordPressの関数を使う 31
Slide 33
Slide 33 text
SQLインジェクション XSS(クロス・サイト・スクリプティング) データベースへの攻撃 データベースへの漏えいや書き換えなど 第三者による JavaScript の実行 サイト訪問者への不正サイトへの誘導や、 マルウェアダウンロードなど WordPressの関数を使う
Slide 34
Slide 34 text
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タイプを含めてチェックする必要がある
Slide 35
Slide 35 text
事故現場でよくみられるパターン ファイルアップロードを自前につくる →アップロードの認証をミスる 文字連結してSQL文を書く →パラメータの処理に不具合があって脆弱性を作り込む可能性 が CKEditorを置く →置き方によっては注意が必要 34
Slide 36
Slide 36 text
事故はおこるさ 35
Slide 37
Slide 37 text
あんまり考えたくないけど 36
Slide 38
Slide 38 text
WordPressサイトが事故るといくらかかる? WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/
Slide 39
Slide 39 text
想定サイト WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/
Slide 40
Slide 40 text
想定サイト 39 WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/ 488,355円
Slide 41
Slide 41 text
このサイトが事故ったら? 40 とホスティング会社から連絡を受けた そのためサイトは停止中 サイト自身のビジネスインパクトは低いため 停止自体に大きな影響はないが、原因や被害状況を確認後、 安全を確認したうえで、なるべく早めに再開させたい Q.セキュリティベンダの調査費用はいくらいでしょう 「神戸みなと歯科」のサイトにアクセスすると 不正なサイトにリダイレクトされる 想定事案
Slide 42
Slide 42 text
たぶんこれくらい? 41 分類 内容 価格 初期調査 ・アクセスサーバログ調査 ・ファイルスキャン (不正なファイルがないか) ・個人情報漏洩リスク判定 \250,000 セキュリティ診断 ・セキュリティ診断 (ツール診断、本診断および再診断) \150,000 オプション ・オンサイト報告 \50,000 期間:1週間程度(診断を除く) 納品物:調査報告書 作り直すのと かわらん><
Slide 43
Slide 43 text
事故対応は結構高い 42 ドメインとかと同じで最後まで管理することを目的とする (リアルな話だと)保守サービスをケチらない 管理できていないウェブサイトは閉鎖の検討を https://www.ipa.go.jp/security/ciadr/vul/20140619-oldcms.html • お客様、関連企業、監督官庁への説明 • WAFなどのセキュリティ製品との新規契約 • 弁護士費用 • 再構築費用、業者再選定 検討項目 実施項目が...
Slide 44
Slide 44 text
まとめ 43
Slide 45
Slide 45 text
• WordPressのログインを守る • 脆弱性情報を確認する • プラグインとテーマを選ぶ • WordPressの関数を使う • セキュリティわぷーほしくない?(誰か! WordPressを安全に使う方法! できれば楽なやつ Good Luck ✈
Slide 46
Slide 46 text
その他 松本 悦宜 Yoshinori Matsumoto @ym405nm matsumoto@capy.me 45