月: 2006年2月

addslashesによるエスケープ処理は止めましょう

追記:PHPエスケープ関連の検索でこのエントリを参照されたと思います。PHPでのエスケープ全般については以下のエントリを参照してください。

PHP文字列のエスケープ

セキュリティmemoにaddslashesよるエスケープ処理でSQLインジェクションが可能なるという記事を見つけました。

私のセミナーを聞いたことがある方は「addslashesによるエスケープ処理は止めましょう」と言っていた事を覚えているでしょうか? mysql_real_escape_string()やpg_escape_string()等のデータベース専用のエスケープ関数を使いましょう、とも話しています。

ちなみにSQLiteを使っている場合はaddslashesでエスケープ処理はNGです。もっと根本的に間違っています。SQLiteではMS SQL Server, Sybaseと同様「’」は「”」とシングルクオートでエスケープします。

基本には忠実に :)

追記:
サーバとクライアントのエンコーディングが合っていないと問題が発生します。PostgreSQLの場合、SET文でクライアントエンコーディングを変えるのではなくpg_set_client_encoding()を利用してエンコーディングを変えないとならないです。MySQLでも同様にアプリからSET NAMESでエンコーディングを変えるのはNGです。

addslashesでエスケープして良い物はPHPスクリプトとなる文字列型データです。

Mozilla “Suite”を捨てる時期が来ました

Mozilla “Suite”を使用されている方はもうご存知だと思いますが、Mozillaを捨ててSeaMonkeyに移行する時期が来ました。

http://www.mozilla.org/security/announce/mfsa2006-05.html

は重大なセキュリティフィックスです。そして、このセキュリティアドバイザリに記載されているように、Mozillaには脆弱性を修正したバージョンはリリースされないようです(Firefox 1.0は1.0.8がでるようですが)Mozilla Suiteのユーザは後継プロジェクトであるSeaMonkeyに移行しなければなりません。

http://www.mozilla-japan.org/projects/seamonkey/
(このアドバイザリの1日前に1.0がリリースされました。名前は違いますが中身はMozilla Suiteその物です。)

Mozilla Japanのサイトにもあまりよく分かるような形で書いてない(?)ようです。本家はまだMozilla 1.7.12のダウンロードリンクがトップにあります。

Mozilla Suiteを使っている方はSeaMonkeyへ移行が必要です。しかし、今ひとつ認知されていない気がしたので念のため。

4 core CPUは来年はじめ

この記事によると4(Quad) core CPUは来年はじめにリリースされるらしい。現在は新しいデザインをレビューしている所だそうです。デスクトップPCにはPenium Dを使っていますがやはりDualの方がコンパイルが速くて使い心地が良いです。Quad-coreになると make -j6 くらいがちょうどかな?

Zend Japanの無料セミナー

来週にZendの無料セミナーがあるようです。
17日の金曜日には福岡であるようです。

・Zend Studio 5.1 による開発技法
・Zend Studio Enterprise によるデバックとチューニング

17日と言えばPostgreSQLカンファレンス2006がある(私も講師の一人)ので東京にはいます。もうほとんど目一杯らしいですがPostgreSQLのカンファレンスも今なら間に合う(?)かも?

Microsoft、PC向けセキュリティサービスを6月正式提供~年額49.95ドル

サービス料金が決まったようですね。50ドル(6000円くらい?)で3台までなら今のウィルス対策製品より随分安い計算になります。(個人ユーザの場合)

米Microsoftは7日(米国時間)、米国内限定で公開ベータテストを実施しているPC向けセキュリティサービス「Windows OneCare Live」を6月に正式開始することを明らかにした。料金はPC3台まで利用可能で年額49.95ドル。なお、4月1日から4月30日までに予約申込みをしたベータテスト参加者は、最初の1年間は19.95ドルで利用できる。

詳しくはリンクを先を。

http://www.microsoft.com/presspass/press/2006/feb06/02-07OneCarePricingPR.mspx

pgpool 3.0.0 & global development team

http://pgfoundry.org/forum/forum.php?forum_id=668

によると

PgPool team is about to form “PgPool Global Development Group” whose concept is pretty similar to PostgreSQL Global Development Group. i.e. a virtual entity on the Internet. PgPool is currently being developed by Tatsuo Ishii. We want to switch to “PgPool Global Development Group” which will lower the barrier for hackers who wants to join this project.

と、チーム体制の開発に移行するそうです。素晴らしい  :)

Open Ajax

Ajax普及目指すオープンソースプロジェクト「Open Ajax」をIBMやその他の会社がはじめた、とニュースリリースがりました。

ApacheとMozilla Pulicライセンスに基づき公開されるAjaxランタイムツールキットを提供するZimbraのサイトにデモアプリケーションがありました。メールとスケール管理のアプリケーションですが、ここまでやれば従来型のクライアントサーバ型アプリケーションと変わらない状態です。

http://zimbra.com/products/hosted_demo.php

「Skip Registration, go to Demo」ボタンを押せばデモアプリケーションを利用できます。日本語対応も考えられている(?)らしく日時は日本語で表示されていました。

オープンソース化されるツールキットはこちら。
http://zimbra.com/community/ajaxtk_download.html

ページを見れば分かりますが、ApacheかMPLのどちらかのライセンスを選択できるようになっています。

参考
http://zimbra.com/community/open_ajax.html
http://www.itmedia.co.jp/enterprise/articles/0602/02/news011.html

PHPのSession Fixation問題

PHPのセッション管理はセッションの固定化(Session Fixation)に脆弱であることは広く知れらていると思っていました。先日、php-users(ja)のMLに「Hardened PHPプロジェクトのStefanさんのパッチにSQLite Sessionモジュール用のセッションセーブハンドラパッチを追加したパッチを公開しました」と投稿しました。しかし、ダウンロード数等から推測するとセッションの固定化のリスクが正しく認識されていないのではないかと思えます。

セッション固定化のリスクを分かりやすく説明するには具体的な攻撃のシナリオを紹介した方がわかり易いのでいくつか説明します。以下の説明はデフォルト状態のPHPインストールでSession Fixation対策を行っていないのPHPアプリケーションに対して可能な攻撃の一例です。

1. メールによる攻撃

PHPアプリケーションで作成されたアカウントの乗っ取りは非常に簡単です。例えば、攻撃対象のアプリケーションのURLが

http://example.jp/

だとします。このページはセッション管理が必要なページだとします。攻撃者は

http://example.jp/?PHPSESSID=abcdefg

の様なURLをメールに送信し攻撃対象者にクリックさせます。これだけでセッションIDが
abcdefgになります。攻撃対象者がこのサイトのアプリケーションにログインするとabcdefgがセッションIDになるので攻撃者もセッションIDをabcdefgに設定してアクセスするだけで攻撃対象者のアカウントでWebサイトを利用できるようになります。

2. WebのURLによる攻撃

ログインが必要なサイトのURLが次のURLだとします。

http://example.com/login/

攻撃者はURLにセッションIDを記述したURLリンクを作成します。

http://example.com/login/?PHPSESSID=abcdefg

攻撃対象者がこのリンクをクリックするとセッションIDがabcdefgに設定されているので攻撃者はこのセッションIDを利用してサイトにアクセスできるようになります。

攻撃手法2を利用した場合、複数のユーザが同じセッションIDになってしまい攻撃されている事が直ぐに判明してしまうのでは?と思われるかも知れません。攻撃者が攻撃に利用するサイトでセッション管理を行い、各ユーザ毎に別のセッションID(攻撃者が生成したID)を割り当てれば同じユーザが同じセッションIDにならないので攻撃されている事は分からなくなります。攻撃者は既に判明しているセッションIDが利用可能(アカウントが乗っ取れる状態。つまり攻撃対象がログインしていないか)になっていないか後で確認するだけです。

http://wiki.ohgaki.net/index.php?PHP%2Fpatch%2FStrictSession

のパッチは上記の攻撃全てを防ぐ事が可能なパッチなのですが、このブログを書いた時点では30ダウンロード(そのうち2回くらいは自分自身)しかありません。

自分の作ったアプリケーションでは独自に保護しているのでPHPのセッション管理がセッションの固定化に脆弱であっても影響を受けませんが、全てのPHPユーザが同じような対策を行っているとは思えません。オープンソースのPHPアプリケーションのほとんどがセッションIDの固定化攻撃に対して全く防御対策を施していない事からも多くのPHPアプリケーションがセッションID固定化に脆弱な状態で運用されていると容易に予想できます。

セッションIDの固定化に脆弱なPHPアプリケーションを利用している友人や同僚のアカウントを拝借する(特定のターゲットを目的とするスピアフィッシングですね)のは非常に簡単です。

もしかして私の予想に反して多くのPHPユーザはPHPがセッションIDの固定化問題に対処済みなのでしょうか?それともほとんどのユーザはPHP4?

追記:
ログイン後にのみ重要なデータを参照したり処理するアプリ(普通のアプリはそうだとは思いますが)の場合、ログイン後にsession_regenerate_id()でセッションIDを作り直せばログイン後のセッションは保護されるのでセキュリティ上の問題はほぼ発生しません。session_regenerate_id()は比較的最近に実装された関数ですが、この為に作られています。このパッチはURLのセッションIDは全て受け入れたくない場合に有効です。

Strict Session管理パッチ

PHPのセッションID管理がいまひとつであることは

http://blog.ohgaki.net/index.php/yohgaki/2005/12/24/strict_sessioncric

にも書きました。PHP 5.1.2用のパッチですがsqliteと一緒にコンパイルするとsqlite用のvalidationパッチが含まれていないのでビルドできませんでした。

MomongaLinux用にsqliteも一緒にビルドできるパッチを作成したのでWikiに載せました。もちろんSQLiteをセッションID管理に使用しても厳格なセッションID管理になります。必要な方は是非どうぞ。

http://wiki.ohgaki.net/index.php?PHP%2Fpatch%2FStrictSession

追記:
厳格なセッションID管理を行うパッチを適用したPHPをインストールした後、php.iniに

session.use_strict_mode = 1

を追加してください。これを追加しないと厳格なセッションID管理になりません。

PHP用のDefacing Tool

PHPで記述されたDefacing(Webページの改ざんのこと)Toolsの利用が増えてきている、という話です。

http://www.philippinehoneynet.org/charts_2006-01-20/defacingtool.txt

これがそのスクリプトです。読んで見ると、まずこれをなんらかの形でサーバ上で実行させてそれから攻撃、という使い方をするようです。

ファイルが消える前に!2月3日までにはやっておく事!

Blackwormと呼ばれているMalwareをご存知でしょうか?

このマルウェア、ある意味かなり古典的です。毎月3日になると

*.doc
*.xls
*.mdb
*.mde
*.ppt
*.pps
*.zip
*.rar
*.pdf
*.psd
*.dmp

などのファイル全部 *消して* くれるそうです。(正確(?)には上書きされるそうです)ディスク資源の節約を狙ったマルウェアは最近は少なくなってきているのですが、このマルウェアはかなりの台数のPCが感染しているそうです。当初は180万台ほどと推測されていたようですが、今は30万台程度ではないか、と予想しているそうです。このワームは感染したPCの台数を掲載しているサイトがあり、感染すると登録される仕組みになっているのでその数字によると180万とか30万と言う数字だそうです。

PCからこれらのファイルがなくなると、かなり悲しい事態になる方も少なくないと思われます。アンチウィルスソフトのシグニチャを更新してスキャンはもちろん、万が一の為にもバックアップが大丈夫か確認するのも悪くないかも知れません。

各ウィルスベンダーのソフトでは以下の名前で検出されるそうです。

AntiVir Worm/KillAV.GR
Avast! Win32:VB-CD [Wrm]
AVG Worm/Generic.FX
BitDefender Win32.Worm.P2P.ABM
ClamAV Worm.VB-8
Command W32/Kapser.A@mm (exact)
Dr Web Win32.HLLM.Generic.391
eSafe Win32.VB.bi
eTrust-INO Win32/Blackmal.F!Worm
eTrust-VET Win32/Blackmal.F
Ewido Worm.VB.bi
F-Prot W32/Kapser.A@mm (exact)
F-Secure Email-Worm.Win32.Nyxem.e
Fortinet W32/Grew.A!wm
Ikarus Email-Worm.Win32.VB.BI
Kaspersky Email-Worm.Win32.Nyxem.e
McAfee W32/MyWife.d@MM
Nod32 Win32/VB.NEI worm
Norman W32/Small.KI
Panda W32/Tearec.A.worm
QuickHeal I-Worm.Nyxem.e
Sophos W32/Nyxem-D
Symantec W32.Blackmal.E@mm
Trend Micro WORM_GREW.A
VBA32 Email-Worm.Win32.VB.bi
VirusBuster Worm.P2P.VB.CIL

出典:AV-Test.org

参考リンク:
http://sunbeltblog.blogspot.com/2006/01/february-3rd-is-possibly-d-day.html
http://sunbeltblog.blogspot.com/2006/01/blackworm-worm-over-18-million.html
http://isc.sans.org/diary.php?storyid=1067

グーグル社、中国政府の検閲に同意

色々な嫌がらせを受けてきたグーグルも検閲に同意して.cnでサービスを提供する。しかし、中国は何時までするつもりなのでしょう?

http://blogs.securiteam.com/index.php/archives/257

によると .cn と .com では表示されるイメージが違うと記載されています。
先ほど自分で試した時点では、.cn のgoogleのURLを指定しても、co.jp または .com にリダイレクトされてしまいました。

他の国のドメインではリダイレクトされないので明らかに何かをしているようです。表示される情報がどの程度違うのか、そしてそのフィルタ処理はどうやっているのか(やはり人力!?)、など興味は尽きませんね。