安全なウェブサイトの作り方セミナー in 2014に参加しました。
徳丸さんの講演
徳丸さんの講演「安全なPHPアプリケーションの作り方2014」は、90分と、時間が長いこともあり、デモをたくさん入れた講演でした。攻撃の危険性を知ってもらうには、実際に実演してみせるのがインパクトがありそうです。
SQLインジェクションの説明では、脆弱性を利用してデータベースの情報を取得する手法のデモがありました。データベースに入っているデータに応じて出力結果が変わるようなクエリを実行して、出力結果から推測する、というものです。クエリの例は、たとえば「aで始まるユーザーがいるか」みたいなクエリです。
この方法で情報を取得するのはかなり手間がかかりそうですが、この種のクエリを作成して実行するツールがあるらしく、実用的な時間で取得できるそうです。実際、デモでは、データベースにあるメールアドレスとパスワード(をハッシュ化したもの)を取得するのに10秒かかりませんでした。
斉藤さんの講演
ウェブアプリケーションファイアウォール(WAF)の紹介でした。ネットワーク上を流れるリクエストを監視して、攻撃と思われるリクエストは拒絶する、というものです。最近では安価なレンタルサーバーでも、WAFを利用可能なことが増えてきています。
SQLインジェクションやXSSは、ウェブアプリケーションで対処しておくのが好ましいですが、未知の脆弱性があるかもしれません。なので、ウェブアプリケーションのコードを精査する、に加えて、WAFを導入する、というのも検討したほうが良いかもしれません。質疑応答では、AWS(アマゾンウェブサービス)のようなクラウドでもWAFが利用できる、ということでした(少なくとも斉藤さんが関わっているWAFは)。
WordPress
ここからは私の個人的な意見です。
WordPressは世界中で使われていて、シェアも大きいです。このため、攻撃の対象とされることが多いです。ウェブセキュリティを考えるなら、WordPressについて考えないわけにはいかないでしょう。一方で、「レンタルサーバーのWAFを使っているとWordPressの一部機能が動作しない→WAFは無効にしました」、という記事を目にしたことがあります。WAFにより正規のリクエストが拒絶される、というのは、ある程度は仕方ないかもしれません。しかし、ウェブアプリケーション(WordPress)の仕様を反映するルールをWAFに与えてやれば、誤検出を減らせるのではないかな、と思います。