« BUFFALO Wi-Fi Gamers 無線LANアクセスポイント WCA-GLAMPのPをPHPからPerl/Python/Rubyに替えるだけではセキュリティは向上しない証拠 »

4 コメント

コメント from: Yasuo Ohgaki [メンバー] メール
Yasuo Ohgaki「脆弱性が頻繁に発見されるアプリケーションを利用しない」と「デマを信じない」は矛盾するのでは?と思った方がいるかも知れません。「PHPは脆弱性がたくさん報告されてるでは?」と思われた方も少なくないかも知れません。

http://gihyo.jp/dev/serial/01/php-security/0004

に簡単に原因をまとめています。

言語の本体部分の脆弱性はそれほど多くありません。最近ではprintf系関数のフォーマット文字列攻撃が可能であった事くらいが思いつきます。これも厳密にはstandardと呼ばれるビルドオプションで無効にできないモジュール関数ですが、standardモジュールはPHP本体といって構わないでしょう。standardモジュールに含まれる関数でhtmlentities/htmlspecialchars関数に対する不正な文字エンコーディングを利用した攻撃にたいする脆弱性も最近修正(
PHP5.2.5)されています。これも本体といって差し支えないかも知れませんが、他の言語ではこの種の関数は「言語本体」には分類されない関数でしょう。
# 他の言語はエンコーディング攻撃は大丈夫なのか?
# と心配になります。Ruby 1.9はかなり厳格にエンコー
# ディングを取り扱っているので大丈夫そうな気がし 
# ますが誰も調べていないような気が...

モジュール関数で多く報告されるsafe_mode, open_basedir関係のセキュリティ報告はフェイルセーフ機能に対する報告です。Javaのように全ての機能が完全にSandbox化できる場合もありますが、スクリプト系言語のVMレベルで同じ機能を実装した、同じような不具合が多数報告されると予測できます。

モジュール関係では意図的なコードでメモリに直接アクセスできる場合もセキュリティ問題、として報告されています。これはPHPが共有環境のWebサーバモジュールとして利用されている事が多いので、直接メモリが参照できる事例のほとんどがセキュリティ問題として報告されています。この基準を他の言語のモジュールに当てはめるとかなりの数の「脆弱性」が発見できると思います。

PHP本体のセキュリティ上の最大の問題はPHPのリリースポリシーです。「PHPはセキュリティ的にダメだね」と言いたい場合、ここが最大の攻撃箇所かと思います。

2008/03/23 @ 07:47
コメント from: Yasuo Ohgaki [メンバー] メール
Yasuo Ohgakihttp://michilu.com/django/doc-ja/fastcgi/
Django を動作させる構成として 現在推奨されている のは, Apache と mod_python の組合せですが,多くの人々が共有ホスティングサービスを使っており,そこでは FastCGI や SCGI, AJP といったプロトコルしか選択肢がない場合もあります.また,構成によっては, FastCGI は mod_python よりも安全であり,パフォーマンスの点で mod_python をしのぐ場合もあります.

pythonではmod_pythonよりFCGIが多いようですね。mod_pythonではPHPより低いセキュリティしか期待できませんから当然です。
2008/03/24 @ 09:56
コメント from: takeshi [訪問者]
*****
takeshi詳しい解説参考になります。

こまかいところですが一点だけ。
> 秘密鍵には必ず推測が難しいパスフレーズを設定します。
これはサーバの堅牢化というよりも管理用クライアントの問題になるわけで、それを言いはじめると「管理用クライアントの安全性も大事だよ。」という話をしなければいけないような?
上記引用文の意図は「その端末で変なサイトにアクセスしたり/端末自体が盗難されたりして、秘密鍵を盗られたら大変なことになるよ。」という話でしょうか?
2008/04/25 @ 11:49
コメント from: Yasuo Ohgaki [メンバー] メール
Yasuo Ohgakiセキュリティはシステム全体で維持しなければならないので、クライアントや物理的なセキュリティ対策、ユーザの教育は非常に重要だと考えています。

> これはサーバの堅牢化というよりも管理用クライアントの問題になるわけで、
> それを言いはじめると「管理用クライアントの安全性も大事だよ。」という
> 話をしなければいけないような?

はい。おっしゃる通りで、クライアントの安全性は非常に重要だと考えています。非常に重要ですがまとめて書くのは難しいです。せめてSSHのパスフレーズくらいは難しい文字列にした方がよいとだけ書いています。私がクラッカーならクラックに成功したPCにはSSH秘密鍵がシステム上に無いか調べ、アクセス履歴等から侵入可能なシステムがないか確かめる可能性は高いです。

クライアントサーバ型のシステムではサーバ側の安全性を確保しても、クライアントにキーロガー(最近ではスクリーンショットや画面の動画も当たり前になって、スクリーンロガーになってますが)などでパスフレーズが分かってしまう可能性もありますが....

私は秘密鍵をできるだけ使い回さないようにしていますが、多くの方が秘密鍵を使い回していると思います。自分のPC, 会社のPC, 会社のサーバなどなど... パスフレーズ無しだと自分だけの秘密鍵と言えない状態の秘密鍵も少なく無いのでは、と心配しています。

後非常に気になっているのはWebアカウントのパスワードの使い回しです。私は同じパスワードは二度と使いませんが、多くの方は複数のアカウントでパスワードを使い回していると考えられるので非常に気になっています。

2008/04/26 @ 15:51

コメントを残す


Your email address will not be revealed on this site.

頂いたURLは表示されます。
PoorExcellent
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))