wordpressのセキュリティチェックから考えるwebアプリのセキュリティ対策
huluで「トゥルーマンショー」を見まして。
1998年に公開された映画ですが、見たことが無く。初めて見たんですが面白い映画でしたね。
最後の場面で正確なセリフは忘れてしまったのですが 「君は恐れてるんだ。だから、だからそこから出られない。それでいいんだ。」 (完全に忘れたので結局ググって出てきたそれっぽい言葉を引用)
の言葉。話の流れとか言葉の意味で解釈すると、想定外の世界にさらされるよりも想定可能な世界にとどまった方がいい、この世界も作られたモノだが作られた真実であり、必ずしも悪いモノでは無い。と受け止めた。それが現実世界で暮らす自分にとっては選択するべき方向かとか自分に当てはめてどんな感想を持ったかは脇に置いて、今回はwordpressに当てはめてのお話。
wordpressの市場シェア
全世界のサイトの4分の1はWordPressで作られている http://gigazine.net/news/20151109-wordpress-make-quarter-web/
2015年11月当時、存在するインターネットのurlの4分の1はwordpressによって生成されたurlらしい。 (K氏へ。対面で話してるときに「全世界の半分のurlはwordpress」だと言ったがあれはウソだ。それはCMSで限定したらの話だった)
めちゃくちゃ使われてる。そして割合が年を重ねる毎に増加している。
故に取り込まれた機能はwebの標準に限りなく近い機能になるし、取り込まれるのが早い。(AMPとかね) 故に習得する利点は多々あると考える。
そして多い故にセキュリティ的に狙われやすい。
セキュリティ
セキュリティ的に狙われやすいが、 wordpressのセキュリティチェックツールは存在していて、 https://wpscan.org
httpアクセス出来る状態であればそのwordpressサイトをセキュリティチェック出来て、安全を確認出来るんだが
- 安全かどうか
- どのようにクリティカルな情報を取得可能か
- 過去のバージョンではこのような危険性があります、の情報によっての攻撃方法
などが知ることが出来る。 下2つを詳しく取り扱いたい。
クリティカルな情報
クリティカルな情報とはwordpressのバージョン番号やファイルパスを出力する危険性とかdbアクセス情報とかファイル権限とかログインユーザ名とか度合いは違えどそのような情報が取得出来る。それらが取得出来る方法をコードから読み取ることが出来る。wpscan実行時のアクセスログとかでも解る。
例えばログインユーザ名の件を詳しく書くと
ログインユーザーID & 表示ユーザー名は簡単に取得可能で、指定したURLにアクセスしたらリダイレクトしてくれてユーザー名が解るとからしい。
wordpressサイトURL/?author=1
でユーザーページが解るので、その中の表示ユーザー名やcssにあるログインユーザーIDで解るらしい。
この記事が詳しい http://d.hatena.ne.jp/ozuma/20130820/1376927068 http://d.hatena.ne.jp/ozuma/20130830/1377868474
ユーザー名一覧は知られたくないからそのページを潰すとかの対応すれば良さそうとかとか。(試しては無い)
wordpressのバージョン番号は取得できないサイトを見つけたりもしたので、バージョンを解らせない設定とかも出来るみたいなので引き続き調べていきたい。(<meta name="generator">
の情報を消すだけでは不十分みたい)
クリティカルな情報は何か、ファイル権限によって取得されてしまうかが解るようになる。
危険性の閲覧
「過去にこんな危険性があった」のアーカイブが半端なく多いです。
だからといってプロダクトとして良くない訳では無くて、それだけ使われているしプラガブルでオープンソースによって早くから上がってくる問題のおかげでより安全になっただけでありこの積み立てた知見の塊を数人のチームによって作成したアプリケーションが超えられるとはとうてい思えない。
私情が挟まっている文章になった気がするが、過去の危険性が閲覧出来ればアタックするorされる方法が解るので、個人で作成する場合の注意すべき点が解るので見ていて楽しい。
セキュリティへの知見が溜まる
まとめ
いきなりまとめますが私はセキュリティが万全なのかいつも恐れている。
「君は恐れてるんだ。だから、だからそこから出られない。それでいいんだ。」
私はプログラマーでありコードを書いてwebサイトを作っているしこれからも作る気でいるが、 wordpressを使う利点は「みんな使ってる」「セキュリティに問題がある所を誰かが直してくれる」「webの標準を知ることが出来る」「(格安で手間が掛からない)レンタルサーバーで動く」「お決まりの管理機能を作らなくて良い」
等があると思っている。あと自動アップデートでコードの管理が要らないとか。(動いてる環境を自動アップデートなんて出来ないよって意見もありますが、バックアップと死活監視をすれば良い話とは思うがしない理由も分からなくは無い気持ちもある)
セキュリティ面からwordpressを使う自分の考えとして当てはまるのは恐れているんです。何が起こるか解らないこの世界に。セキュリティの改善が保証されている、便利に自動アップデートしてくれる、ある程度予測可能な世界に浸るのも悪くは無いと思います。
ですが「それでいいんだ」と言われたトゥルーマンは最後には外に出て行きます(ネタバレ)。 ある程度予測可能な世界に浸りながら、いつでも外に出て行ける状態を作っていこうと、対策していこうと思います。