by shigemk2

当面は技術的なことしか書かない

SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか #v_night

どぅるぱる

PHPにしては綺麗でSecureなCMS

Drupalの脆弱性

Drupageddon

  • SQLインジェクション脆弱性(非常に攻撃しやすい)
  • すごくやばい
  • 10/15 に発表
  • 時間内にパッチを当てないと攻撃されたと思え
select * from users where name = 'admin' and status = 1

name==user1&name==user2

select * from users where name = 'user1' and name = 'user2' and status = 1

バインド値

連想配列が使えるので、キー名をつけるとプレースホルダーにキー名がつく

プレースホルダーはエスケープできない

空白つきのキー

ログイン前SQLインジェクション

https://www.jpcert.or.jp/at/2014/at140042.html

ライブSQLインジェクション

巧妙に細工されたリクエスト DoS

  • パスワードを長くしてアクセスするとApacheの負荷が爆上がりする
  • 100万バイトのパスワード
  • 並列度を上げると倍率ドン
  • パスワード値が長いとハッシュ計算にものすごく時間がかかる

→バリデーションしようや

Drupalとバリデーション

  • 入力値検証とセキュリティ セキュリティが主目的ではないがセキュリティが良いことになることもある
  • 入力値検証はセキュリティ対策としてはあてにしない
  • 転んだ時の杖

まとめ

  • Drupalはログイン処理でバリデーションをしていない
  • Drupalはミクロの対処にこだわっている
  • Drupalは頑なにバリデーションを拒否していない
  • セキュリティ面からみると 局地では役立つが根本対策ではない
  • バリデーションはアプリケーション仕様をもとにやっとくと転ばぬ先の杖になりうる
  • 淡々とバリデーションをやればセキュリティ対策になりうる