Archives for: 2006年April
PHP 5.1.2の脆弱性
April 27th, 2006A cross-site scripting (XSS) vulnerability in phpinfo (info.c) in PHP
<= 5.1.2 allows remote attackers to inject arbitrary web script or HTML
via long array variables, including (1) a large number of dimensions
or (2) long values, which prevents HTML tags from being removed.
(CVE-2006-0996)
Directory traversal vulnerability in file.c in PHP <= 5.1.2 allows
local users to bypass open_basedir restrictions and allows remote
attackers to create files in arbitrary directories via the tempnam
function. (CVE-2006-1494)
The copy function in file.c in PHP <= 5.1.2 allows local users to
bypass safe mode and read arbitrary files via a source argument
containing a compress.zlib:// URI. (CVE-2006-1608)
Mandriva Linux Security Advisoryによると現行リリースのPHP 5.1.2,4.4.2にも含まれる脆弱性を修正したPHPパッケージをリリースしましたね。重要な修正ではないので「適切」にシステムを構築・管理しているPHPユーザは気にする必要はありません。
phpinfo関数を一般に公開するのは絶対に止めた方が良いです。基本的にphpinfo関数の出力はデバッグ用の情報です。セキュアなシステムではデバッグ情報を一般に公開する事はありません。開発時以外はシステムや言語のエラー情報を出力しないのと同じです。
open_basedirは「フェイルセーフ機能」であるため、これに頼った設計を行うべきではありません。Perlなどでtaintモードを信頼するのと変わりません。
# 言い古されてはいますが、セキュリティ対策は繰り返し言い続ける事が重要ですから。
Thunderbird 1.5.0.2のメッセージフィルタ不良?
April 27th, 2006今さっき気が付きました。Thunderbird 1.5.0.2のメッセージフィルタを編集、削除しようとすると無応答状態になりました。クリックできなくなった状態と言った方が良いかも知れません。私だけかな?
Windows XP SP2日本語版/Thunderbird 1.5.0.2 英語版
Windows PowerShell RC1
April 26th, 2006Perlの様な文法を持つシェルだそうです。.NETが自由自在に使える(?)のかも。
# Over 130 standard utilities (called “cmdlets) for completing common system administration tasks such as working with the registry, services, processes, Windows Management Instrumentation, event logs, etc..
# Intuitive, task-based scripting language and support for existing scripts and command line tools..
# Designed for consistency so all tools and system data stores follow a common syntax, common naming conventions and information can be easily shared/piped between tools.
# Simplified command-based navigation of the operating system (including drives, startup files, and registry).
# Powerful object manipulation capabilities (objects can be directly manipulated or pipelined to other tools or databases).
# Designed for extensibility so that independent software vendors and enterprise developers can easily build custom tools and utilities to administer their software.
WindowsXP以上が必要らしい。
インストールされたプログラムくらいは簡単にリストできるようになっているようです。次がMSDNに掲載されていたインストールされたプログラムをリストするコードです。とても簡単ですね。
$strComputer = "."
$colItems = get-wmiobject -class "Win32_Product" -namespace "root\CIMV2" `
-computername $strComputer
foreach ($objItem in $colItems) {
write-host "Caption: " $objItem.Caption
write-host "Description: " $objItem.Description
write-host "Identifying Number: " $objItem.IdentifyingNumber
write-host "Installation Date: " $objItem.InstallDate
write-host "Installation Date 2: " $objItem.InstallDate2
write-host "Installation Location: " $objItem.InstallLocation
write-host "Installation State: " $objItem.InstallState
write-host "Name: " $objItem.Name
write-host "Package Cache: " $objItem.PackageCache
write-host "SKU Number: " $objItem.SKUNumber
write-host "Vendor: " $objItem.Vendor
write-host "Version: " $objItem.Version
write-host
}
http://www.microsoft.com/technet/scriptcenter/scripts/msh/apps/user/usapms01.mspx
今までWindowsでバッチ処理というとWSHによりVBScript/JScriptで記述する事が普通でしたがPerl風のPowerShellもオプションに加えられた形になります。どう便利なのか今ひとつ分かっていませんがサンプルコードを見る限りは非常に簡単にWindowsの情報を取得して処理を行えるようになっている様です。
Exchange Server 2007 and System Center Operations Manager 2007 (Microsoft Operations Manager “V3”) will be built upon Windows PowerShell.
Exchange Server 2007はPowerShellを使って構築されている、と書かれています。色々複雑な処理も簡単(?)に行えるような言語になっていると思われます。Windowsでバッチ処理が必要な場合はPowerShellも良い選択肢なのかも知れないです。
遂にWinnyの脆弱性もOSVDBに載るようになりました
April 26th, 2006Link: http://www.osvdb.org/24883
A remote overflow exists in Winny. Winny fails to perform proper bounds checking of unspecified file transfer port commands resulting in a heap-based buffer overflow. With a specially crafted request, an attacker can cause arbitrary code execution in the context of the user who executed the Winny, resulting in a loss of integrity.
EEyeのアドバイザリが英語なので載ってもおかしくないですがSPAMMERに知られると即刻悪用されそうな気がします。
「はじめてのPHP言語プログラミング入門」誤り募集中
April 26th, 2006Link: http://www.amazon.co.jp/exec/obidos/ASIN/4774122866/ref=ase_yohgakiswiki-22/503-8086888-6454318
Amazonの「はじめてのPHP言語プログラミング入門」に新しいコメント :)
全体の構成は、良いが、説明文の日本語がお粗末!!。
いわゆる、て、に、を、は、が、なってない。
特に、コード内での解説文は、再度、著者、自らが見直すべきと思う。
例示:抽象メソッドに関数に中身は記述できない
いたるところ、このような記述であるが、類推して読まざるを
えないため、わかりにくくなっている。
また、「入門」は、外した方が良い。
ご指摘の通り後で中途半端に書き加えたりした部分が残ってしまっている部分があると思います。本としての完成度と執筆に使える時間は比例すると思いますが、いつも締め切りギリギリに間に合わせている状況なので残ってしまいます(汗 最終の著者校正でもおかしな日本語を結構直した記憶があるので修正漏れが沢山あってもおかしくないと思います。またありがちですがコード中のコメントは見てなかったような気がします。
と言うことでおかしな日本語も大募集中です。メール、ブログへのコメント何でも結構です。見つけた方、ページ数と一緒に変な日本語を教えてください。よろしくお願いします。
自分でも変な日本語を見つけた箇所もありますが付箋が無くなってどこだったか分からない状態だったりします。「いたるところに」と書いてるので何箇所くらい見つけられたのか非常に興味があります。
抽象メソッドに関数に中身は記述できない
これは多分「関数に中身は記述できない」を最初に書き、これではおかしいので「抽象メソッドに中身は記述できない」にしたかったのだと思われます。例示の部分は後でPDFを検索してみよう。
【追記】検索しました。p140です。
abstract class AbstractClass2 {
// 抽象メソッドに関数に中身は記述できない
abstract public function AbstractMethod();
自分で読んでたら見逃しやすそうな部分です。(というより実際見逃していますけど)抽象メソッド、抽象クラスを知らない読者には??となる可能性もあるかも知れませんね。「いたるところ」全部教えてほしいです。
「てにをは」不良は結構残っている可能性は高いです。とりあえずはじめての誤植レポートなのでブログにも書いてみました。解りづらい表記・誤植も教えて頂けるとありがたいです。
0DAY Firefox Remote Code Execution and Denial of Service Vulnerability
April 25th, 2006Link: http://www.securident.com/vuln/ff.txt
Firefox 1.5.0.2以下のiframe.contentWindow.focus()に問題がありバッファがオーバーフローするようです。これ件フォローが無いので真偽は??です。
NoScript拡張を使って不用意にJavaScriptが実行されないように注意した方が良いかも知れません。
IEもObjectタグで騒ぎになっていますね。セミナーでは「WebクライアントとWebサーバアプリは最も危険なアプリです」と言っていますが最近は色々ありすぎですね...
PHPの問題? BugTrackのレポート - Multiple PHP4/PHP5 vulnerabilities
April 25th, 2006Link: http://www.infigo.hr/en/in_focus/advisories/INFIGO-2006-04-02
このアドバイザリのメールの日付は何故か「2005/11/13」となっているのですが4/24のメールの様です。結論から言うとこのアドバイザリは通常は「無視してOK」です。
メールではメモリ消費のPoCとして以下のコードを例示しています。
i. wordwrap()
------
<?
$a = str_repeat ("A",438013);
$b = str_repeat ("B",951140);
wordwrap ($a,0,$b,0);
?>
------ii. array_fill()
------
<array_fill (1,123456789,"Infigo-IS");?>
------iii. substr_compare()
------
<?substr_compare ("A","A",12345678);?%gt;
------
まず1つ目ですが日本語環境でwordwrapを使っているケースは無いでしょう。更にプログラマが長大な分割文字(ラップした時の区切り文字)を指定する事はあり得ません。攻撃される事はまず無いでしょう。とは言っても典型的な整数オーバーフロー問題がある事は確かです。しかし、リスクがMediumとされていますがLowが適切でしょう。
【追記】古いwordwrapには整数オーバーフローがあったため修正されていました。まだ整数オーバーフローがあるのはおかしい、と思いPHP 5.1.2のソースを確認しました。少なくともPHP 5.1.2ではオーバーフローは発生せず整数オーバーフローが発生した場合、エラーが発生するコードになっています。と思っていたら、間違ってCVSのパッチ適用済みPHP5.1.2版のソースを見ていたようです。PHP5.1.2にも整数オーバーフローがあります。PHP 4.4.2も整数オーバーフローの影響を受けます。しかし、既に書いたとおり脆弱性自体の危険性は非常に低いです。同じようなバグが過去にレポートされていて直されていたと思うのですがまだ残っていたようです。
【追記2】substr_compare("A","A",12345678) ですがメモリ参照の問題でSegfaultします。バグですがこの手の問題は普通DoSとは言いませんね... PHP 5.1.3では修正されます。 "The start position cannot exceed initial string length."とエラーになります。このエラーメッセージからも分かるように確保しているメモリよりも先のアドレスを参照している為、Segfaultしてしまったバグです。プログラム中に間違えて踏みそうなバグですが、この時点までこんなバグが残っていたのは色々な意味で「どうかな...」と思います。このバグ「クラッシュするよ」とレポートがあれば、PHPソース中で不具合を発生させる箇所が不明でも、バックトレース一発で原因まで特定できる単純なバグです。substr_compareはPHP5からの関数ですがzval(PHP変数のデータ構造体)には文字列(データ)の長さが保存されているのですが、これを使っていなかったのも「どうかな...」と思わされます...
2、3つ目ですがDoSが可能となるとしていますがこれに書いてあるコードでメモリを沢山消費しても仕方ないコードです。(ちょっと乱暴な例えかもしれませんが)C言語で「メモリをGB単位で確保して、確保したメモリにmemsetするとsegfaultする」と言っているような物です。言語とアプリケーションは違います。言語でメモリを大量に消費すると問題になるケースもありますが、これらは問題として取り扱うような動作ではありません。memory_limitの引っかかってしまっても当たり前でしょう。レポートした方はどうすべき、と考えているか聞いてみたいくらいです。
今までにもこの手のレポートはいくつかあったのですが、PHPをプログラミング言語として捉えていない人が多いのは驚かされます... たしか、最近もまた
function foo($arg) {
foo($arg);
}
で「PHPがクラッシュするからおかしい」とメールがあったと思います。メモリは有限リソースなんですけどね... しかも同じ内容のメールは私が気が付いただけでも複数回見ています... 初心者向けに再帰呼び出し回数に制限を設けてもよいかも知れませんが、再帰呼び出し制限なんて必要なんでしょうか?
私が知らないだけかも知れませんが手続き型のライトウェイト言語(Ruby、Python、Perl、Tclなど)で「関数のコールスタックは1000まで」と言った感じでチェックしている(できる)言語がある??!
【追記】
気になりついでにPHP,Ruby,Python,Perlの動作も調べたので、気になる方はコメントをどうぞ。制限するか? しないか? ポリシーの問題のようですね。Perl,PHPは制限しない。Ruby,Pythonは制限する。で、最も中途半端なのはPHP ;) 詳しくはコメントをどうぞ。
Windows Vista のUser Acount Protection(UAP)機能
April 25th, 2006Link: http://www.winsupersite.com/reviews/winvista_5308_05.asp
The bad news, then, is that UAP is a sad, sad joke. It's the most annoying feature that Microsoft has ever added to any software product, and yes, that includes that ridiculous Clippy character from older Office versions. The problem with UAP is that it throws up an unbelievable number of warning dialogs for even the simplest of tasks. That these dialogs pop up repeatedly for the same action would be comical if it weren't so amazingly frustrating. It would be hilarious if it weren't going to affect hundreds of millions of people in a few short months. It is, in fact, almost criminal in its insidiousness.
と非常に使いづらい、と書いてあります。
このUAPと言う機能、MacOSXやLinuxユーザなら知っている管理者権限の必要な操作を行う場合にクレデンシャル(管理者ユーザのパスワード)を聞く機能です。個人的にはVistaには非常に期待しているのでこんな部分で使い物にならないようにされては困ります...
Zend Framework 0.1.3
April 25th, 2006Link: http://framework.zend.com/svn/framework/tag/release-0.1.3/NEWS.txt
4/18にZend Frameworkのリリースがアップデートされていますね。
詳しくはリンク先のチェンジログを見ていただくとして
- Zend_HttpClient moved to Zend_Http_Client (Mike)
のように互換性に関連する修正や機能追加もありますが、あまり大きな変更や追加はなく基本的にはバグフィックスリリースになっています。
OpenDocumentがISO標準に
April 24th, 2006Link: http://japan.cnet.com/news/ent/story/0,2000056022,20102336,00.htm
先頃発足したOpenDocument Format Alliance(ODF Alliance)は、推進中のファイルフォーマットが5月にInternational Organization for Standardization(ISO:国際標準化機構)の承認を得られるだろうとの自信を示している。
OpenDocumentがISO標準になると各機関の調達基準になるので良い事ですね。独自拡張を許さない調達基準であれば相互互換性も上がって便利です。
【追記】OpenDocumentはOpenOfficeの標準の保存形式です。一太郎も準拠していたと思います。


