Fedoraプロジェクトがクラックされた原因 – RedHat系ユーザは早急に対応が必要

追記:斜め読みで勘違いしていた部分を修正しました。RHのSSHのパッケージが全部更新されていたのでここに脆弱性があったと読んでいました。

8/22リリースされたエラータです。

Last week Red Hat detected an intrusion on certain of its computer systems and took immediate action. While the investigation into the intrusion is on-going, our initial focus was to review and test the distribution channel we use with our customers, Red Hat Network (RHN) and its associated security measures. Based on these efforts, we remain highly confident that our systems and processes prevented the intrusion from compromising RHN or the content distributed via RHN and accordingly believe that customers who keep their systems updated using Red Hat Network are not at risk.

http://rhn.redhat.com/errata/RHSA-2008-0855.html

先週Fedoraプロジェクトがクラックされ、SSHパッケージが改ざんたようです。改ざんされたパッケージはSSHパッケージのみようです。

早急に対策が必要です。直ぐに対応できない場合、とりあえずsshを止めてしまうのが良いです。

サインされたパッケージが改ざんされるのは最悪の自体です。こういう場合のリスクを低減させるにはポートノッキングを実装するとよいでしょう。

Webサーバが稼働しているなら、CGIを利用してWebによるポートノッキングを簡単に実装できます。

/etc/init.d/sshd start
sleep 30
/etc/init.d/sshd stop

を実行すれば良いだけです。ほとんど何も入っていないセキュアなWebサーバでもshellは入っているはずです。suidしなければならないので余計な事はあまり考えず、認証を使いたい場合はHTTP認証を使った方が良いと思います。
(30秒以内にログインしないとなりません。短すぎる場合は60秒でも良いでしょう。sshdが止まっても接続済みのセッションは継続して利用できます)

何らかの理由で誤ってsshdが動作したままにならないよう、cronでsshdを停止するようにしておくと良いです。

参考:
Infrastructure report, 2008-08-22 UTC 1200
https://www.redhat.com/archives/fedora-announce-list/2008-August/msg00012.html
OpenSSH blacklist script
http://www.redhat.com/security/data/openssh-blacklist.html
Red Hat (belatedly) confirms security breach
http://blogs.zdnet.com/security/?p=1784

CESA-2008:0855 Critical CentOS 5 i386 openssh Update
http://lists.centos.org/pipermail/centos-announce/2008-August/015194.html
CESA-2008:0855 Critical CentOS 5 x86_64 openssh Update
http://lists.centos.org/pipermail/centos-announce/2008-August/015193.html

Tomcatの管理者は大忙し?

http://www.milw0rm.com/exploits/6229

などはまだいいですが

http://www.0x000000.com/?i=630

こういうのは、本当に使ってしまう輩がいそうで怖いです。

どうしても直ぐにバージョンアップできない場合、WAFは役に立ちます。今回の場合、

mod rewriteを使用した簡易WAF

でも十分です。そう言えば、直ぐに使えるPoCを公開している

http://www.0x000000.com/

は簡易WAFも紹介していたサイトです。簡易WAFを使いましょう、と言いたいのかも知れません。

ホワイトリストとブラックリスト – Proactiveセキュリティ対策 vs. Reactiveセキュリティ対策

プログラミングはホワイトリスティングが基本」にブラックリストもホワイトリストもどちらも同じ事を言っていて違いが分からない、とコメントを頂きました。

追記:ブラックリストとホワイトリストの違いが解らない方は、恐らくホワイトリストの基本中の基本は”デフォルトで全て拒否する”であることを理解していないのだと思われます。全て拒否した上で、許可するモノ、を指定しないとホワイトリストになりません。

http://pfrb.blog114.fc2.com/blog-entry-5.html

ホワイトリストとブラックリストは単純な場合は分かりやすいコンセプトですが、ちょっと複雑になると分かりやすいようで境界が分かり辛いコンセプトです。

メールのホワイトリストとブラックリスト

メールを例にホワイトリストとブラックリストの違いと境界の分かり辛さを解説します。
“ホワイトリストとブラックリスト – Proactiveセキュリティ対策 vs. Reactiveセキュリティ対策” の続きを読む

WAFの限界 – WAFが追加のセキュリティ対策である理由

このエントリは何年も前(日付を見たら2008年8月)に書きかけで放置していたエントリです。最近書いた、セッションアダプション脆弱性をPHPのモジュールレベルで修正するパッチについての議論の参考になると思うので公開します。私は補助的な意味合いを持つ追加のセキュリティ対策は無意味であるとは全く考えていません。対策の限界を知って、有効に利用する。それで良いのでは無いでしょうか?以下、書きかけで未公開だったエントリです。

関連エントリ: セッションフィクセイションはアダプション脆弱性修正で防御可能 (特にコメント欄)

WAFは有用なセキュリティ対策です。これに異論は無いでしょう。ゼロデイ対策にはWAFは非常に有効であり、可能であれば導入すべきだ、とセミナーでも繰り返し説明しています。しかし、WAFは万能ではありません。導入すれば安全性が簡単かつ飛躍的に向上するシステムでもありません。説明を省略しているので説明不足な部分もありますが、疑問がある場合はコメントをください。 “WAFの限界 – WAFが追加のセキュリティ対策である理由” の続きを読む

プログラミングではホワイトリスティングが基本

ホワイトリスト方式の優位は神話」と題するエントリに私のブログホワイトリストはどう作る? が引用されている事を教えていただきました。

ホワイトリストの基本中の基本は”デフォルトで全て拒否する”であることに注意してください。全て拒否した上で、許可するモノ、を指定しないとホワイトリストになりません。

誤解されないように書こうとすると、どうしても長文になります。暇な方だけお付き合いください。

参考: セキュリティを論理的に構築する方法 (こちらは科学的なセキュリティの基本構造の作り方の話です。ぜひどうぞ) “プログラミングではホワイトリスティングが基本” の続きを読む

PHPのSessionモジュールの脆弱性

たまたま目に止まったブログがあるので紹介します。

PHP:session_set_save_handlerリファレンスマニュアルのサンプルにパス・トラバーサル脆弱性
http://www.tokumaru.org/d/20080818.html#p01
[php]session_set_save_handlerのパストラバーサルで任意コマンドの実行が可能
http://www.tokumaru.org/d/20080819.html#p01

この危険性はStrict Sessionパッチが作られた頃にも議論されていました。このパッチを摘要するとセッションアダプション脆弱性も修正します。もし、互換性なので要件で厳格なSession管理ができない場合でもセッションIDに利用可能な文字は安全な文字のみに限定されるのでパストラバーサルなどの問題は発生しません。

話は横道にそれますが、セッションアダプションの問題については、PHP 4.4.9リリース前にPHP Security Response Teamと議論しました。リリースノートを見れば解りますが、残念ながら良い結果ではありませんでした。いくつかの脆弱性をレポートしましたが、その内の一部の脆弱性のみに対応しただけです。これについては時間が出来次第エントリを書きます。

話を戻しますが、セッションモジュールの問題は随分前(何年も前)に議論されており、開発者のスタンスとしては「ユーザ側の問題」「ファイルストレージがあるのに態々自分作って自分の足を打つようなユーザが問題」「RDBMSをストレージに使ってエスケープしないでSQLインジェクションされるのと同じ」といった結論になってしまったと記憶しています。

セッションアダプションの問題を解決すれば、パストラバーサルの問題もSQLインジェクション問題も解決するのですが…

セッションアダプション脆弱性はリスクが不当に低く評価され過ぎです。PHPを利用されている方全てにStrict Sessionパッチをお勧めします。

Pythonの脆弱性

Googleがクラウドコンピューティングの言語としてPythonを採用したのでセキュリティ研究家が脆弱性を調査し、今年はPythonの脆弱性が多く報告されるはず、とこのブログで予想しています。また新たな脆弱性が報告されているので書いておきます。

今回は整数オーバーフローが多いので、整数オーバーフローを中心に調査したのだと思われます。
Python 2.5.3以上でないと穴だらけと言えますが….

http://python.org/download/

と言った状況のようです。

しかし、予想通りとはいえ数が多いですね。

CVE-2008-3144
Multiple integer overflows in the PyOS_vsnprintf function in Python/mysnprintf.c in Python 2.5.2 and earlier allow context-dependent attackers to cause a denial of service (memory corruption) or have unspecified other impact via crafted input to string formatting operations. NOTE: the handling of certain integer values is also affected by related integer underflows and an off-by-one error.

CVE-2008-3143
Multiple integer overflows in Python before 2.5.2 might allow context-dependent attackers to have an unknown impact via vectors related to (1) Include/pymem.h; (2) _csv.c, (3) _struct.c, (4) arraymodule.c, (5) audioop.c, (6) binascii.c, (7) cPickle.c, (8) cStringIO.c, (9) cjkcodecs/multibytecodec.c, (10) datetimemodule.c, (11) md5.c, (12) rgbimgmodule.c, and (13) stropmodule.c in Modules/; (14) bufferobject.c, (15) listobject.c, and (16) obmalloc.c in Objects/; (17) Parser/node.c; and (18) as…

CVE-2008-3142
Multiple buffer overflows in Python 2.5.2 and earlier on 32bit platforms allow context-dependent attackers to cause a denial of service (crash) or have unspecified other impact via a long string that leads to incorrect memory allocation during Unicode string processing, related to the unicode_resize function and the PyMem_RESIZE macro.

CVE-2008-2316
Integer overflow in _hashopenssl.c in the hashlib module in Python 2.5.2 and earlier might allow context-dependent attackers to defeat cryptographic digests, related to “partial hashlib hashing of data exceeding 4GB.”

CVE-2008-2315
Multiple integer overflows in Python 2.5.2 and earlier allow context-dependent attackers to have an unknown impact via vectors related to the (1) stringobject, (2) unicodeobject, (3) bufferobject, (4) longobject, (5) tupleobject, (6) stropmodule, (7) gcmodule, and (8) mmapmodule modules.

未修正のPHP脆弱性を募集

PHP4のサポート終了に伴い、幾つかの未修正のセキュリティホールについてPHP Security Response Teamとやり取りしています。

ついでなので出来る限り多くの脆弱性が修正されるようにしたいと考えています。PHP4.4.8, PHP 5.2.6で未修正の脆弱性やセキュリティ上の問題をご存知の方は是非教えて下さい。

現時点はどの脆弱性をレポートしているのか書けませんが、もしPHP本体やモジュールで修正されていない脆弱性をご存知の方は教えて頂けると助かります。メールやこのブログのコメント、このブログのContactページ等からご連絡ください。

結果については後日このブログにて公開します。