個人的なメモと備忘録 2003年 7月

HOME | LastUpdate: 2003-07-27

目次


2003.07.27(Sun)

相変わらずセキュリティ関係の話題が多いです。2003.07.20 の MS03-26 に関する問題に、参考になりそうな情報へのリンクを追加しました。

>>PHP のメモ

PHP-users メーリングリストの[PHP-users 16829]Re: in_array()なぜだめ? や、[PHP-users 16895]Re: in_array()なぜだめ? の投稿で参考になりそうな情報がありましたので、メモしておきます。

今後、時間があればこういったどのような書き方をすれば、PHP スクリプトを速く動かせるのかをまとめてみたいと思います。あまり速度を重視し過ぎて可読性が悪くならないように気を付ける必要があると思いますが、こういった高速化の方法を知っておくと役に立つこともあると思います。

>>セキュリティ関係

*Windows

セキュリティ問題の報告や修正プログラムが出ていました。

  • Windows の機能の問題により、サービス拒否が起こる (823803) (MS03-029)

    Windows NT 4.0 Server の機能の一つに問題が存在し、特定の過度に長いパラメータが渡された場合、この機能が所有しないメモリが解放されるために、サービス拒否やプログラムの実行が行われる可能性があるとされています。対象は、Windows NT Server 4.0, NT Server 4.0 Terminal Server Edition となっています。

    深刻度は「警告」になっています。修正プログラムが出ていますので、インストールした方が良いと思います。

  • DirectX の未チェックのバッファにより、コンピュータが侵害される (819696) (MS03-030)

    Microsoft DirectX 5.2 から 9.0a の複数のバージョンに含まれる DirectShow が MIDI ファイル内のパラメータをチェックしていないため、バッファオーバーラン攻撃が可能になってしまうようです。対象は、DirectX 5.2, 6.1, 7.0, 7.0a, 8.1, 9.0a で、Windows 98 以降のほとんどのバージョンの Windows でインストールされており問題の対象になっています。

    深刻度は Windows Server 2003 を使用している場合は「重要」他の環境では「緊急」です。修正プログラムが出ていますので、インストールすれば良いと思います。また、DirectX 9.0b も同時に公開されており、DirectX 9.0b には、この問題に対する修正が行われているようです。

    他にも、セキュリティホール memo の 2003.07.24 の情報 に、DirectX のバージョン確認方法と、バージョン毎の対処方法のまとめがありました。

  • Microsoft SQL Server 用の累積的な修正プログラム (815495) (MS03-031)

    Microsoft SQL Server で確認された以下の3つの問題を排除するための修正プログラムのようです。

    • 名前付きパイプのハイジャック
    • 名前付きパイプのサービス拒否
    • SQL Server のバッファオーバーラン

    対象は Microsoft SQL Server 7.0, Data Engine (MSDE) 1.0, SQL Server 2000, SQL Server 2000 Desktop Engine (MSDE 2000),SQL Server 2000 Desktop Engine (Windows) となっています。

    深刻度は全て「重要」になっています。修正プログラムが公開されていますので、問題がない限りはインストールしておいた方が良いと思います。MS03-031 の要約情報に、注意として Windows NT Server 4.0 Service Pack 6a を使用している場合は、先に別の修正プログラムを適用する必要があると書かれています。

この関係の話題では、WindowsのDirectXに「緊急」のセキュリティ・ホール,すべてのユーザーに影響( ITPro ) にも情報があります。Web ページや HTML メールを見るだけで被害を受けるという情報や、問題についての詳細な説明があります。また、「知らないうちにインストールされているMSDEに注意」という情報もありますので、確認をしておいた方が良さそうです。

その他、気になった Windows 関係のセキュリティ情報などを挙げておきます。

*CGI.pm にクロスサイトスクリプティング脆弱性

Bugtraq に CGI.pm vulnerable to Cross-site Scripting という投稿がありました。多くの Perl に標準で含まれる CGI.pm にクロスサイトスクリプティングの問題があるという指摘です。

CGI.pm バージョン 2.93 に対する Patch と、CGI.pm バージョン 2.98 に対する Patch が投稿されています。

また、Vine Linux 2.5/2.6 では、7月26日付けで公開された Perl の修正パッケージで、この問題は解消されているようです。

手元の RedHat Linux 7.3 でもこの問題は再現したのですが、CGI.pm のバージョンが 2.752 と古かったので、投稿されていた Patch は当たりませんでした。近いうちに、RedHat から公式の修正パッケージが出るとは思いますが、Vine Linux 2.6 と使用している CGI.pm のバージョンが同じでしたので、Vine Linux の修正パッケージから CGI.pm の Patch を作ってみました。RedHat Linux 7.3 など、CGI.pm のバージョンが 2.752 の場合で、対策を急ぐ必要がある場合は参考になるかもしれません。

--- CGI.pm.orig Tue Apr  2 02:27:38 2002
+++ CGI.pm      Sat Jul 26 14:58:40 2003
@@ -1498,8 +1498,10 @@
     $enctype = $enctype || &URL_ENCODED;
     unless (defined $action) {
        $action = $self->url(-absolute=>1,-path=>1);
-       $action .= "?$ENV{QUERY_STRING}" if $ENV{QUERY_STRING};
+       $action .= '?' . $self->escapeHTML($ENV{QUERY_STRING},1)
+          if $ENV{QUERY_STRING};
     }
+    $action =~ s/\"/%22/g;  # fix cross-site scripting bug reported by obscure
     $action = qq(action="$action");
     my($other) = @other ? " @other" : '';
     $self->{'.parametersToAdd'}={};

>>気になったニュースなど

▲ 目次へ戻る


2003.07.20(Sun)

セキュリティ関係の話題が多すぎます。まとめ切れていませんので、忘れているものが多いと思います。PHP のセキュリティ関係の話題については、個人的にチェックしている他の PHP 系のサイトやメーリングリストではあまり話題にならないようなので、少し詳しく調べてみました。

>>Apache

Apache 1.3.28 が公開されています。

Win32 や OS/2 で rotatelogs プログラムが入力によってはログの出力を中止したり、実行を止めてしまう問題、大量の内部でのリダイレクトや、ネストしたサブリクエストによる無限ループで、サーバがクラッシュする問題などが修正されています。詳細は、Apache 1.3.28 のアナウンスや、Apache 1.3.28 の ChangeLog を参考にしてください。

>>セキュリティ関係

*PHP

Bugtraq に PHP safe mode broken? という投稿がありました。

セーフモードにバグがあるため、PHP 4.3.0 以降にバージョンアップすると、安全ではなくなるという指摘です。

あまり英語は得意ではないので間違っている可能性もありますが、簡単に説明すると、PHP のソースの main/fopen_wrappers.c にある、php_check_safe_mode_include_dir という関数は、php.ini で safe_mode_include_dir が指定されていない場合、0 を返すようです。PHP 4.2.3 では、この場合、-1 (failure) を返していたようです。

また、main/streams.c にある、_php_stream_fopen_with_path() という関数は、php_check_safe_mode_include_dir()php_checkuid() の結果をチェックします。この部分が問題で、これらの 2つのテストの結果が OR で評価されているようです。

つまり、php.ini の safe_mode_include_dir に値がない時は、php_check_safe_mode_include_dir() が、常に 0 (true) を返すため、php_checkuid() の結果は無関係になってしまい、ファイルの権限に関係なく、PHP スクリプトの include() や、require() 関数が常に成功してしまうということになるそうです。

次の投稿 Re: PHP safe mode broken? には、このバグを回避する方法と、確認する方法が書かれていました。

PHP のソースの、main/fopen_wrappers.c にある、php_check_safe_mode_include_dir() を探し( PHP 4.3.2 では、253 行目 )、最後の return 文の行を変更して、再コンパイルすることでこの問題を回避することができるようです。

return 0

を以下のように変更します。

return 1

問題がまだ存在するかどうかを調べるには、php.ini で、safe_mode を On にした状態で、以下の PHP スクリプトを実行させることで確認できます。

<?
echo("trying to read /etc/passwd");
include("/etc/passwd");
?>

PHP 4.3.3 RC 1 でもこの問題は再現できました。セーフモードを有効にして PHP を使っているサーバでは、対処を行った方が良さそうです。試してみたところ、php.ini の safe_mode_include_dir に値を設定すると、/etc/passwd が読めてしまうようなことはありませんでしたので、設定で回避するには、safe_mode_include_dir に、/etc/ 以外の、セーフモードが不要なディレクトリを指定するという方法がありそうです。絶対に大丈夫だとは言えませんので、テストは必要だと思いますが、PHP の再コンパイルができない場合、役に立つかもしれません。

*Netscape

Bugtraq に、Netscape 7.02 Client Detection Tool plug-in buffer overrun という投稿がありました。

Netscape 7.02 以下のバージョンに含まれる Client Detection Tool Plug-in に、バッファオーバーフローの問題があるようです。また、この問題の攻撃方法も、 PDF ファイルで公開されています。

対処方法としては、CDT plug-in (npcdt.dll) を Netscape の components フォルダから削除するか、最新バージョンにアップグレードすることと書かれています。おそらく、Netscape 7.1 ではこの問題は修正されていると思われます。

*Windows

多くの問題が報告されていました。

*その他

上で挙げた意外のセキュリティ関係の情報です。

>>気になったニュースなど

▲ 目次へ戻る


2003.07.13(Sun)

先週のメモに追記をしていたら、長くなってしまいましたので、別でまとめました。Vim で PHP 関数の辞書を作成する方法についてのメモです。

あと、PHP マニュアルを表示する Vim スクリプトというものを書いてみました。Linux や BSD などの PC-Unix 環境で Vim 6 以上を使用して PHP を書いている人という極一部の人にしか役に立ちませんが、該当者で、もし興味のある人は試してみてください。ドキュメントは急いで作成しましたので、手抜きですが。

>>日本語ドメイン名

7月10日くらいから、日本語ドメイン名サービスが開始された(株式会社日本レジストリサービス)らしいです。Netscape 7.1 か、Mozilla 1.4 では、既に日本語ドメイン名に対応しているみたいです。Mozilla 1.4 で試してみたところ、確かに使用できました。Internet Explorer では、日本語ドメイン名プラグインが必要になるようです。

>>セキュリティ関係

*Apache 2.0.47

Web サーバとして、広く使用されている Apache 2 がバージョンアップして、Apache 2.0.47 が公開されました。Apache 2.0.46 以前のユーザは、バージョンアップすることが推奨されています。詳細は、Apache 2.0.47 のアナウンスがありますので、そちらを参照してください。

また、Bugtraq-jp に、SNS Advisory No.66 Apache HTTP Server v2 Causes a DoS When Parsing a Type-Map File という情報が投稿されていました。この問題も Apache 2.0.47 で修正されているようです。

*Windows

Microsoft から、3 つの修正プログラムについての情報が出ています。

  • HTML コンバータのバッファ オーバーランにより、コードが実行される (823559) (MS03-023)

    HTML コンバータへの不正なリクエストにより、コンバータが現在ログインしているユーザーのコンテキストでコードを実行する可能性があるそうです。Windows 98 / 98 Second Edition / Me / NT 4.0 Server / NT 4.0, Terminal Server Edition / 2000 / XP / Server 2003 という多くの Windows プラットフォームで影響を受けるとされています。深刻度は「緊急」になっていますので、早く修正プログラムをインストールした方がよさそうです。

  • Windows のバッファ オーバーランによりデータが破損する (817606) (MS03-024)

    特別に作成した SMB リクエストパケットを送信し、バッファオーバーランを発生させる可能性があるそうです。Windows NT Server 4.0 / NT Server 4.0, Terminal Server Edition / 2000 / XP Professional で影響を受けるとされています。深刻度は「重要」で、Windows 2000 Service Pack 4 には、既に修正プログラムが含まれているそうです。

  • ユーティリティ マネージャによる Windows メッセージ処理の問題により、権限が昇格する (822679) (MS03-025)

    ユーティリティマネージャが Windows メッセージを処理する方法に問題が存在し、この問題を悪用された場合、攻撃者はコンピュータでの完全な制御を取得する可能性があるそうです。Windows 2000 のみで影響を受けるとされています。深刻度は「重要」で、Windows 2000 Service Pack 4 には、既に修正プログラムが含まれているそうです。

また、[Full-Disclosure] Internet Explorer 6 DoS Bug によると、Windows XP の Internet Explorer 6 のアドレス欄に以下の指定を行うと、クラッシュしてしまうという問題が指摘されています。

C:\aux

Windows 2000 Service Pack 4 の Internet Explorer 6 でも同じ問題を確認しました。また、気になったので、少し調べてみたところ、以下の指定でもクラッシュしました。ドライブ名は関係ないようで、D: など、存在する別のドライブにしても同じようです。

セキュリティホール memo の 2003.07.08 の情報に、この問題の対処方法が載っていました。

デバイスマネージャを開いて、通信ポートのプロパティから「このデバイスを使わない (無効)」にするだけでも効果があることが判明しました。

Internet Explorer を使用していて、シリアルポートを使用していない場合は、有効な対処方法だと思います。

また、以下のように Internet Explorer のアドレス欄に指定してもクラッシュするという報告もあります。

C:\com1
*RedHat Linux

修正パッケージが出ています。Redhat Linux 9 のバグ修正パッケージです。

>>気になったニュースなど

▲ 目次へ戻る


2003.07.06(Sun)

雨ばかりで非常に憂鬱な天気が続いています・・・。

>>PEAR

PEAR のメーリングリストができたみたいです。PEAR に興味がある人は入ってみると良いかもしれません。

最近は、PECL パッケージも簡単にインストールできるようになったようで、PHP-users メーリングリストで、スクリプトキャッシュ機能である、APC の紹介 [PHP-users 16328] APC Version 2.0 Released. や、PHP のバイトコードを生成するbcompiler の紹介 [PHP-users 16420] Re: APC Version 2.0 Released. 、メールの解析を行うMail_RFC822 の紹介 [PHP-users 16513]Re: PEARの練習(空メール)などがあり、いろいろと参考になります。

PEAR に関しては、pear.php.net に、PEAR マニュアルなどもありますが、まだまだ整備されていない部分が多いので、メーリングリストでの情報は非常に参考になります。

>>Vim の辞書機能

( 2003.07.13 ) Vim で PHP 関数の辞書を作成する方法についてのメモに移動させました。

>>セキュリティ関係

*Windows 2000 Service Pack 4

Microsoft から、Windows 2000 Service Pack 4 日本語版が公開されたようです。Windows 2000 Service Pack 4 リリースノートが出ていますので、適用する前に読んでおいた方が良いと思います。

Windows 2000 Service Pack 4 に含まれる修正と含まれない修正の一覧のページや、Windows 2000 Service Pack 4 修正一覧のページもありますので、参考にしてください。

また、Windows 2000 Service Pack 4 から、Microsoft VM が含まれなくなりますので、Microsoft VM が必要な場合は注意が必要です。この件に関しては、Microsoft VM および Windows 2000 Service Pack 4 に関するよく寄せられる質問のページに情報があります。

また、BugTraq-jp に、[SNS Advisory No.65] Windows 2000 ShellExecute() API Let Applications to Cause Buffer Overflow という投稿がありました。この問題は、Windows 2000 Service Pack 4 を適用すると修正されるようです。

*Opera

BugTraq の投稿に、[Opera 7] Five DoS codes on general web sites という情報がありました。Opera for Windows 7.03 から 7.11b のバージョンで確認された 5種類の DoS 攻撃の方法が書かれています。

*Acrobat Reader

これも BugTraq の投稿からですが、[sec-labs] Adobe Acrobat Reader <=5.0.7 Buffer OverflowVulnerability + PoC code という情報がありました。WWWLaunchNetscape 関数に問題があり、攻撃者が用意した PDF ファイルをユーザがリンクをクリックすると、buffer overflow が起きてしまうそうです。Acrobat Reader 5.0.5 と 5.0.7 の Exploit コードも添付されていました。

Acrobat Reader 6 については、言及されていないので同じ問題があるかどうかは分かりませんが、とりあえずは、バージョンアップしておいた方が良いかもしれません。

>>気になったニュースなど

▲ 目次へ戻る


2003.07.01(Tue)

アップロードが遅くなりました。最近、雨が多いのでじめじめして嫌な感じです。あまり体調も良くないです。そういえば、いつ変更されたのかは気が付きませんでしたが、PHP の CVS サーバ のディレクトリ名が整理されたようです。間違えて、チェックアウト済みだった PECL モジュールの一部のディレクトリを消してしまって、再度チェックアウトするときに気が付きました。一応、PHP4 のインストールメモPHP のモジュールとして Namazu を組み込む の部分のディレクトリ指定を修正しておきました。

>>PHP 5 Beta 1

PHP の次のメジャーバージョンアップである、PHP 5 のベータ版が公開されました。多くの変更や新機能がありますし、多くのバグが報告されていますので、実用には向かないですが、新機能などに興味がある人は試してみるといいと思います。

PHP 5 では、スクリプトエンジンが Zend Engine 2 に切り替えられ、Interface や、Abstract Class、Abstract Method などの、Java とほぼ同じような機能が使用できるようになります。また、例外処理が追加され、値の代入方法が参照渡しになるなど、多くの変更があります。どのような構文が使用できるようになったかについては、Changes in PHP 5/Zend Engine 2.0 に多くの例が載っていますので、こちらを参考にした方が良いと思います。

また、ライセンスの問題のようですが、MySQL is no longer bundled with PHP5という情報があり、PHP 4.x でバンドルされていた MySQL のクライアントライブラリが外されています。MySQL を使用する際には、configure を実行する際に、--with-mysql を付けてコンパイルする必要があります。その代わりに、PHP 5 では、SQLite がデフォルトでサポートされるようになったようです。PHP-users のメーリングリストに投稿されていましたが、SQLite と MySQL、PostgreSQL の速度比較のページもあるようですので、参考にしてください。

他にも、XML 関係のモジュールの一新、stream 関数や、GD 関数、iconv 関数の追加など、多くの関数が追加されているようです。

他の PHP 4.x からの変更点としては、PHP 5 ChangeLog がありますので、そちらを参考にしてください。

また、スラッシュドット・ジャパンにも載っていますが、PHPマルチバイト文字列モジュールにライセンス問題があり、PHP 5 での扱いをどのようにするかが議論されています。PHP 5 Beta 1 では、マルチバイト関数は外されてはいませんので、まだ使用可能のようです。とりあえず、[PHP-dev 824]Re: mbfilter/mbregexのライセンス問題について というメールで、今後の方針についてまとめがあります。

[PHP-dev 789]zend-multibyteサポートの危機? というメールも投稿されていますし、マルチバイト関係の問題の対応についてはいろいろと厳しい状況のようです。

>>セキュリティ関係

*複数のメールソフトに不適切なセキュリティゾーンが適用される欠陥

BugTraq-jp に、複数のメールソフトに不適切なセキュリティゾーンが適用される欠陥というメールが投稿されていました。HTML メールのリンクをクリックすると、攻撃者の記述したスクリプトが「マイコンピュータ」ゾーンで実行されるという問題が確認されたそうです。

HTML メールのサポートに Internet Explorer の機能が利用されていることが問題で、HTML メールをローカルディスクに展開した後、そのファイルを開くため、スクリプトが実行されてしまうという問題が起きるようです。

メールに詳しい内容と、対処方法が書かれていますので、メール内容を参照してください。全てのメーラに共通する簡単な対処方法としては、HTML メールを表示しないように設定することです。

>>気になったニュースなど

▲ 目次へ戻る


更新履歴

2003.07.27

7月27日分を追加。MS03-026 関係のリンク追加。

2003.07.20

7月20日分を追加。

2003.07.13

7月13日分を追加。Vim の辞書機能の文書を別ページに移動。

2003.07.06

7月6日分を追加。

2003.07.01

このページを作成。7月1日分を追加。

▲ 目次へ戻る

LastUpdate: 2003-07-27 | HOME