技術評論社のgihyo.jp上での連載「memcachedの活用と運用 実践編」の第二回が公開されました。今回の内容はmemcachedを安全に運用するために気を付けた方が良い、セキュリティと脆弱性の話です。
memcachedの活用と運用 実践編:第2回 memcachedのセキュリティと脆弱性|gihyo.jp … 技術評論社
連載記事の最初で紹介しているスラッシュドットのもとネタは結構ひどい(?)事になってます。これを笑って見れるようにしておきたいものです。
後半にはMemcached Injectionの話題を紹介していますが、大きな問題になることは少ないかなぁと思っています。それは外部からkeyとdataをセットで指定できるようなことはWebアプリケーションにおいてはなかなか無いんじゃないかと思うからです。それでも気持ちいいものではないので、memcachedを利用している方は一度確認をお勧めします。
1つだけ思いついているアレゲなInjection利用法としてはmemcachedのincrを使ったアクセスブロック破りです。ほとんどの場合、アプリケーションサーバの前にリバースプロキシーを設置しますが、その際アプリケーションサーバでアクセス元のIPアドレスを取得するのにヘッダのX-Forwarded-Forを使うことがあります。
my $cnt = $mem->incr( $ENV{X_FORWARDED_FOR} );
if ( $cnt > $LIMIT ) {
return "402 Payment Required";
}
こんな感じで連続アクセスを防ぐことがあると思いますが、この際、X_FORWARDED_FOR に「スペース」が含まれることがあります。cacheのkeyにスペースが入るとmemcachedのプロトコルエラーとなりincrは正しく動きません。結果として連続アクセスブロックも機能しなくなります。情報漏洩にはなりませんがWebアプリケーションの運営上、何か問題がでるかもしれません。
どうやって、この脆弱性を防ぐかは、連載に書かせていただいてますので、ぜひ読んでくださいませ〜。