毎秒1000リクエスト を捌く超高速CMS「adiary」
2011/02/07(月)さくらのレンタルサーバでメールパスワードに記号が使えない件のまとめ
「さくらのレンタルサーバ」等で、1年~半年ぐらい前は使用できた「@,$,%,!」といった記号がメールパスワードとして使えなくなってました。セキュリティを低下させる仕様変更が信じられないので、それ関連の情報まとめ。
使用できる文字の制限
気づかなかったのですが「Q:パスワードとして設定できる文字は何ですか?」に詳細がありまして、半角英数を除くと
+ - * / = . , _
たったこれだけの記号しか使用できません。
第一、不便とかそういう問題じゃないし、サーバやネットで極めて重要なセキュリティ低下を招くことになるのですが……。
なぜ使えなくなったのか?
セキュリティを低下させて平気でいるさくらインターネットが技術者として信用ならないので問い合せてみました。
お客様にはご不便をおかけする事となり申し訳ございません。[@,$,%,!]等の特殊記号につきましては、サーバ上で誤動作を招く可能性がございます事から、パスワードには使用できない文字といたしておりました。
しかしながら、一部のプランのメールアドレス作成画面においては、これらの文字もパスワードとして設定可能であった事が判明し、現在は本来使用可能であるとご案内いたしておりました記号文字のみが利用可能となっております。
つまり、
- 本来は使用できなはずだったのに、バグで使用可能になっていた。
- そのバグを修正したので、今は使えなくなっている。
メールの文面からこの制限を解除する気はさらさらなさそうです。
問題の本質
問い合わせ結果の文面をみるとさくらインターネットの本音が透けて見えます。
「@,$,%,!」というのは、UNIX*1のシェル上で特殊な意味をもつ記号になります。これらの文字に使用制限をかけるということは、パスワード変更プログラムはサーバ上でshellを呼び出し引数にパスワードを与えてますと宣言してるようなものです。
きちんとサニタイズされない文字列をシェルに与えることは大きな問題が起きますが、サニタイズ等のきちんとした処理を行なっていれば何も問題ありません。危険因子を排除するためにこれらの文字を使用できなくすることは分からないでもないですが、たかがメールのパスワードを保存するだけの比較的簡易な実装・検証のリスクを天秤にかけ、顧客メールアドレスのセキュリティ低下を差し出すというのはあまり理解したくはありません。
だって、どう考えたって「それらの文字列がキケン」なのではなくて「シェルを呼ぶことが危険」なだけでしょう。
さくらレンタルサーバのメール仕様と考察
- サーバOS FreeBSD
- MTA courier
- SMTP Auth(cram-md5) / APOP等使用可能
sshログイン可能なので見てみると /home 以下にユーザーアカウント(レンタルサーバアカウント)が羅列され、それぞれのアカウントの /home/account に MailBox/ が置かれています。ここに、作成したメールアカウント(@より左)がディレクトリごとに配置されています。
つまり account という契約のサーバの、useraというメールアドレス(usera@account.sakura.ne.jp)は、
$ cd /home/account/MailBox/usera/ $ ls -Al -rw-r--r-- 1 account users 64 Feb 1 20:28 .mailpassword drwx------ 9 account users 512 Feb 1 20:28 maildir
このような具合です。
APOPが利用可能なことからパスワードは平文で保存されているはずですが*2、.mailpassword ファイルはバイナリであり何かしら暗号化されて納められているようです。
このファイルを直接書き換えれば好きなパスワードを設定できると思ったのですが、暗号化方法が分からないので諦めました。
しかし、このファイルがユーザーレベルで書き換えられるということは「@,$,%,!」などの記号をWebアプリ上から制限してもあまり意味のないことではないかと思うのですが。
それにしても、国内サーバ業者の最大手がこれでいいんですかね……? 技術者の端くれとしては納得がいかない。
追記
記号が使えないことによるセキュリティ低下についてどういう考えですかと問い合わせたら返事が来たのですが……
最長32文字なんだから十分だろボケ。もう問い合せてくんな。(超意訳)
その後
知らぬ間に改善されてた。2011/11/17以前に改善されていた模様。