Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WordPress セキュリティガイド #wpmeetupkyoto / WP Securit...
Search
yoshinori matsumoto
November 01, 2021
6
3.4k
WordPress セキュリティガイド #wpmeetupkyoto / WP Security Guide
https://www.meetup.com/ja-JP/Kansai-WordPress-Meetup/events/281036210/
yoshinori matsumoto
November 01, 2021
Tweet
Share
More Decks by yoshinori matsumoto
See All by yoshinori matsumoto
FIDO2導入してみたを考えてみた / Around The Auth Capy Matsumoto
ym405nm
0
220
Hack L33t Fighters Ⅱ #owaspsendai
ym405nm
0
300
WordPress保安検査ガイド〜運用可能なセキュリティを始めるために〜 / wpcamp_haneda_security
ym405nm
1
650
CAPYのFIDOへの取り組み / Capy FIDO
ym405nm
0
150
WordPress 管理者がおさえておきたい Web アプリケーションセキュリティ / owasp-wordpress-meetup
ym405nm
1
1.5k
Extreme Honyepotter
ym405nm
0
810
攻撃者からみたWordPressセキュリティ / WordCamp Kansai 2015
ym405nm
8
4.8k
コミュニティ活動からみるPHPセキュリティ / PHP Conference Kansai 2015
ym405nm
0
530
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.4k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Documentation Writing (for coders)
carmenintech
66
4.5k
Music & Morning Musume
bryan
46
6.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Side Projects
sachag
452
42k
Designing for humans not robots
tammielis
250
25k
Transcript
WordPress セキュリティガイド 〜運用可能なセキュリティを始めるために〜 Yoshinori Matsumoto
自己紹介 松本 悦宜(まつもと よしのり) 神戸→Capy株式会社 / CSIRTトレーニングセンタ セキュリティ診断、脆弱性情報分析、サービス開発など 共著 WordPressプロフェッショナル養成読本
インターネット白書2015 講演発表など WordCamp Kansai 2015, 2016 Black hat 2016 Arsenal, OWASP AppSec APAC IPAセキュリティキャンプ講師
Is WordPress Danger? 2 現場でこんなことありませんか 元ネタ: https://twitter.com/tome_ura/status/1414796451054383107 ※ ネタのために一部変えています
個人的な見解 ✗ WordPress 危ないから使わない ✗ CMSを変えても問題は解決しない 👌
WordPress を安全に使用する できれば面倒くさくない 運用可能なセキュリティ対策 3
(参考)Drupalの事例 4 Drupal は危ないという考えも NG どのCMSでも脆弱性がある 脆弱性の対応は必要 (ただし楽にすることは可能?) Drupalに脆弱性、アップデート公開直後から攻撃横行 早急に更新を https://www.itmedia.co.jp/enterprise/articles/1902/28/news077.html
(参考)ラッキービジターの事例 5 改ざんされたWordPress上に置かれたファイル ラッキービジター Windows偽ウィルス警告に設置 アクセスした第三者への影響
• WordPressのログインを守る • 脆弱性情報を確認する • プラグインとテーマを選ぶ • WordPressの関数を使う セキュリティ対策 管理者
開発者向け 管理者 / 編集者 / 投稿者 / 寄稿者 / 購読者 WordPressを安全に使う方法! できれば楽なやつ 全ユーザ +α 事故がおこったら
WordPressのログインを守る 7
XML RPC wp-login.php WordPressのログインを守る ここのログイン機能が狙われやすい
ガチガチ デフォルト wp-login.php等のアクセス制限(XMLRPCも) 2要素認証、アカウントロック パスワードポリシーの確認 ユーザはどう使うかを考えながら設定する IPアドレスが固定可能か? セキュリティへの”負荷”(面倒事)をお願いできるか? 運営者への負担はどれくらい許容できるか? ログイン画面の設計例
パスワードポリシーについて 10 • パスワードポリシーを強制することはできない (ユーザが多い環境では注意が必要) • アカウント名も推測されている • ?author=1でアカウントが推測 →ここを変更するのは面倒くさい
但しパスワードにアカウント名を入れないことも重要 「パスワードを強固なものにする」とは? パスワードポリシー • 8文字以上 • 大文字小文字記号含める • 他のサービスで使い回さない WordPressで注意しておいたほうがいいこと
サイトの保護 ホワイトリスト WordPress.com の SSO を利用 JETPACKで解決?
WooCommerce 12 顧客向けのアカウント管理はWordPressの「Customer」 権限(WC独自)として作成される wp-login.php経由でもログインできるが 管理画面(wp-admin以下)にはアクセスできない • WordPressのログインフォームと同じ強度 • 通常ログインと違い「nonce」はついているが、ワンタイムではないの
でブルートフォース対策には微妙 • ログイン保護系のプラグインはそのまま使える (Login LockDown, Crazybone などでは検知できた)
ログイン大丈夫? 1/2 13 レンタルサーバの場合 他サイト 他サイト My WordPress あなた FTPサーバ
共用サーバ FTPアカウント WPアカウント コンパネ アカウント サーバ 契約情報 ホスティング会社の二要素認証を有効にする それぞれパスワードを使いまわさない FTPクライアントは最新版を使う なるべくFTPは使わない コンパネ
ログイン大丈夫? 2/2 14 VPS/クラウドサービスの場合 あなた VPS WPアカウント コンパネ アカウント サーバ
契約情報 ホスティング会社の二要素認証を有効にする サーバのSSHログインは公開鍵認証 (パスワード無効)にする セキュリティグループなども設定 コンパネ WordPress SSH サーバアカウント
(参考)ブラックリスト 15 Q. 過去に wp-login.php にアクセスがあったIPアドレスを ブロックしているが効果はあるのか? アクセスログ Attack IP
.htaccessなど ログイン画面に広くアクセスしているIPはその都度変更されるため、 IPアドレスのブラックリストを管理するのは難しい。 また、現状海外のIPアドレス帯域に多い傾向はあるが、 今後国内IPアドレスでのスキャンも考えられるため、 国ごとのアクセス制限を過信しないように注意が必要。
(参考)Basic認証 16 Q. ログイン画面にBasic認証いれるべき? 入れてもいいけど、面倒にしてまでのメリットはないかも... (特に平文通信を行っているサイトは危険) WPの機能でカバーできるのでメリットを享受できない デメリットは解決していない https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
脆弱性情報を確認する 17
更新をこまめに ダッシュボードにある更新情報は要確認 • 本体 • テーマ • プラグイン
脆弱性情報を確認する 本体 テーマ プラグイン オートアップデートの対象 メジャーアップデートは管理画面から オートアップデートの対象外 管理画面から オートアップデートの対象外 管理画面から
オートアップデートを使う 20 WordPress 3.7 から導入 デフォルトで有効 マイナーアップデート(セキュリティアップデート)のみ対象 無効にすることも可能 よっぽどの理由がない限り無効にしない 5.7
5.7.3 5.8 5.8.1 2021/3 2021/9 2021/9 2021/9 オートアップデート 手動 アップデート オートアップデート 原則的にサポートは最新版であるが、 セキュリティパッチが出ることもある
ケーススタディ 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 オートアップデート対象
脆弱性情報 22 公的機関 JPCERT/CC 注意喚起 http://www.jpcert.or.jp/at/ JVN https://jvn.jp/ ホスティング会社 注意喚起やメール
このあたりに出現する 情報には要注意!
脆弱性情報 23 むずかしい話よーわからんという方のために • 認証なし(遠隔の、第三者による〜) • 外部から(リモートから) • コード実行(RCE :
Remote Code Execution) などが揃うと要注意 こちらの項目で攻撃が簡単かどうかなどを確認する またオートアップデートで対応できているかどうか
サーバの設定 24 • PHPのバージョンが古すぎないか → そもそもWordPressも動かなくなる • Webサーバ(Apache/Nginx)のバージョンが古すぎないか → yum
update ! • ファイアウォール / iptables / セキュリティグループ → 使用していないサービスが起動したままになっていないか • ログローテーション • SSL化 → パスワード・個人情報を扱う場面はあったほうがいい。SEO的にも。 よくわからない、面倒くさいという人は レンタルサーバもしくはWordPress.comを利用しましょう
プラグインとテーマを選ぶ 25
脆弱性のあるプラグイン 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/ 脆弱性を悪用され スクリプトを埋め込まれる 閲覧者が実行すると 詐欺サイトに誘導される その後プラグインは削除される 開発者に通知はいかない!?
Duplicatorプラグイン 27 脆弱性を悪用され 任意コードが実行される アップデートにて 脆弱性対応可能 • サイト改ざん • バックドア埋め込み
• ファイル削除など • フィッシングサイト化 • 偽サイトへの誘導 なんでもできる Duplicator Update Patches Remote Code Execution Flaw https://www.wordfence.com/blog/2018/09/duplicator-update-patches-remote-code-execution-flaw/
WebShell 28 WordPressの事故対応でよく見る事例 WebShellというツールをサーバ内に置かれる これをキッカケにサーバでの操作を行われる
プラグインの選び方 29 修正やメンテナンスがよく行われているものを選ぶ 長期間放置されているものは要注意 脆弱性の攻撃方法が広まっている可能性もあり プラグインやテーマのページで このような表記が出ると要注意
(参考)バックアップ 30 バックアップは大事 WordPressの標準的なログ環境だけでは、 有事のときに被害状況を把握することが難しい (原因を特定したうえで) 平常時に戻してしまう方が早いこともある ・ソースファイル ・DB (Dumpファイル)
のバックアップがあれば なんとかなる プラグインを活用するのもOK 脆弱性とライセンスには気をつけて
WordPressの関数を使う 31
SQLインジェクション XSS(クロス・サイト・スクリプティング) データベースへの攻撃 データベースへの漏えいや書き換えなど 第三者による JavaScript の実行 サイト訪問者への不正サイトへの誘導や、 マルウェアダウンロードなど WordPressの関数を使う
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タイプを含めてチェックする必要がある
事故現場でよくみられるパターン ファイルアップロードを自前につくる →アップロードの認証をミスる 文字連結してSQL文を書く →パラメータの処理に不具合があって脆弱性を作り込む可能性 が CKEditorを置く →置き方によっては注意が必要
34
事故はおこるさ 35
あんまり考えたくないけど 36
WordPressサイトが事故るといくらかかる? WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/
想定サイト WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/
想定サイト 39 WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた https://toyao.net/wp/wordbench20140114/ 488,355円
このサイトが事故ったら? 40 とホスティング会社から連絡を受けた そのためサイトは停止中 サイト自身のビジネスインパクトは低いため 停止自体に大きな影響はないが、原因や被害状況を確認後、 安全を確認したうえで、なるべく早めに再開させたい Q.セキュリティベンダの調査費用はいくらいでしょう 「神戸みなと歯科」のサイトにアクセスすると 不正なサイトにリダイレクトされる
想定事案
たぶんこれくらい? 41 分類 内容 価格 初期調査 ・アクセスサーバログ調査 ・ファイルスキャン (不正なファイルがないか) ・個人情報漏洩リスク判定
\250,000 セキュリティ診断 ・セキュリティ診断 (ツール診断、本診断および再診断) \150,000 オプション ・オンサイト報告 \50,000 期間:1週間程度(診断を除く) 納品物:調査報告書 作り直すのと かわらん><
事故対応は結構高い 42 ドメインとかと同じで最後まで管理することを目的とする (リアルな話だと)保守サービスをケチらない 管理できていないウェブサイトは閉鎖の検討を https://www.ipa.go.jp/security/ciadr/vul/20140619-oldcms.html • お客様、関連企業、監督官庁への説明 • WAFなどのセキュリティ製品との新規契約
• 弁護士費用 • 再構築費用、業者再選定 検討項目 実施項目が...
まとめ 43
• WordPressのログインを守る • 脆弱性情報を確認する • プラグインとテーマを選ぶ • WordPressの関数を使う • セキュリティわぷーほしくない?(誰か!
WordPressを安全に使う方法! できれば楽なやつ Good Luck ✈
その他 松本 悦宜 Yoshinori Matsumoto
@ym405nm
[email protected]
45