個人的なメモと備忘録 2004年10月

HOME | LastUpdate: 2004-10-31

目次


2004.10.31(Sun)

>>sudo.vim

Vim で sudo.vim という少し便利なプラグインを見つけたのでメモしておきます。ファイルの編集の際に、一般ユーザで Vim を起動し、途中から root 権限でファイルを開く必要がある場合や、ファイルを編集後、保存の際に root 権限が必要という場合に便利です。

sudo.vim をプラグインディレクトリに置くと、以下のように、sudo:ファイル名 というコマンドが使用できます。

>>セキュリティ関係

*PHP CURL "open_basedir" Security Bypass Vulnerability

PHP の拡張モジュールである、CURL を使用すると、php.ini の open_basedir で設定したセキュリティ制限を回避されてしまうという問題が報告されていました。この問題は、CURL モジュールに含まれる curl_init() などの関数は、open_basedir の制限が効かず、ローカルにある任意のファイルの読み込みが可能であるということです。

以下のように、file://curl_init() の引数に与えることで、ローカルにある任意のファイル内容を表示させることが可能です。

$ch = curl_init( "file:///etc/group" );
echo curl_exec( $ch );

十分に入力チェックを行い、curl_init() の引数に不正な値が入らないようにすることで問題の回避は可能です。また、CURL モジュールを無効にすることでもこの問題は回避可能です。

*Mozilla

Mozilla 1.7 / Mozilla Firefox 0.9 から 0.9.3 / Mozilla Thunderbird 0.6 から 0.8 のバージョンに、安全でない一時ファイルを作成してしまう問題が報告されています。

*PuTTY

PuTTY 0.55 以前のバージョンに buffer overflow が引き起こされる問題が報告されています。OpenSSH 情報によると、PuTTY のコードを使用している FileZilla や WinSCP などでも影響を受けるそうです。

*Squid

Squid 2.5.STABLE7 で修正された SNMP モジュールに問題があり、DoS 攻撃を引き起こすことができる問題についての Security Advisory が出ていました。

*その他
  • JPCERT/CC REPORT 2004-10-27 (JPCERT/CC)
    • [1] DNS キャッシュサーバの TCP SYN_SENT 状態によるリソース消費
    • [2] Heimdal FTP サーバのシグナル処理に含まれる脆弱性
    • [3] Sun Solaris における RBAC と LDAP の組み合わせで発生する脆弱性
    • [4] VERITAS NetBackup Java GUI の脆弱性
    • [5] Microsoft 製品の複数の脆弱性に関する追加情報
    • [6] ソフトウエア等の脆弱性関連情報に関する届出状況 [2004年第3四半期 (7月〜9月)]
    • [7] CERT/CC 統計情報公開
    • [今週の一口メモ] 米国 CERT Coordination Center (CERT/CC) と「CERT」について
  • SYN flood 攻撃被害観測システムについて PDF資料 (@police)
  • JVN#E59B594B 鶴亀メールにおけるS/MIMEの署名検証に脆弱性 (JVN)

>>気になったニュース、ツールなど

▲ 目次へ戻る


2004.10.24(Sun)

少し長くなりすぎたような気がしますが、PHP と Web アプリケーションのセキュリティについてのメモに、以下の項目を追加しました。

>>PHP でセッション管理に session_id() や定数の SID を使用する際の注意

PHP と Web アプリケーションのセキュリティについてのメモセッション関連の処理で注意すべきクロスサイトスクリプティング問題クロスサイトスクリプティング対策に strip_tags() を使用するときの注意でもまとめたのですが、いくつかの PHP 関連の書籍や Web ページを検索しても、クロスサイトスクリプティングを引き起こす問題があることを知らずに session_id()SID を使用していることが多いように感じられましたので、こちらにもメモしておきます。

まず、Cookie が無効になっていた場合でも、セッションを継続させるために、session_id() や定数の SID の値を使用しているページは多いと思いますが、session_id()SID はクロスサイトスクリプティングを防止するために htmlspecialchars() でエスケープしてください。

PHP マニュアルの セッション処理関数(session) の例 5 でも以下のように書かれていることでも分かるように、session_id() や定数の SID はタグが入ることがあります。

...

続けるには、<A HREF="nextpage.php?<?php echo strip_tags (SID)?>">ここをクリック</A>して下さい。

XSS に関係する攻撃を防止するために SID を出力する際に、strip_tags()を使用します。

ただし、上のように strip_tags() を使用した場合は、クロスサイトスクリプティング対策にはなりません。理由は、クロスサイトスクリプティング対策に strip_tags() を使用するときの注意にまとめていますので、そちらを参照してください。

以下の条件が揃うと session_id()SID にタグが入ることがあります。

  1. 攻撃対象のサイトが session_id()SID を正しくエスケープしていない
  2. ユーザのブラウザにおいて、対象のサイトのセッション ID 用の Cookie が設定されていない、または、Cookie を無効にしている
  3. ユーザがセッション ID を URI に含めた形のリンクをクリックする、または直接アドレスバーに入力する

例えば、ブラウザのユーザに以下のような URI のリンクをクリックさせたり、直接アドレスバーに入力させた場合、クロスサイトスクリプティングを行うことが可能です。

http://www.example.com/index.php?PHPSESSID="><script>alert()</script>

この問題への対処方法としては以下が 2 つが考えられます。

>>セキュリティ関係

*複数のウイルス対策ソフトで ZIP ファイルを適切にチェックできない問題
*タブ表示が可能なブラウザに脆弱性

タブ表示が可能なブラウザの多くに、2種類の問題が報告されています。

どちらの問題も Javascript を無効にすることで対処できるようです。

また、「Sleipnir」「Firefox」などのタブ切り換え型Webブラウザーに存在する脆弱性によると、日本でよく使用されている Internet Explorer のエンジンを利用したタブブラウザでも影響を受けるものがあることが報告されています。

この問題に関しては、多くの情報がでています。以下のページも参考にしてください。

*PostgreSQL

PostgreSQL 7.2.5 以前、7.3.7 以前、7.4.5 以前のバージョンに、安全でない一時ファイルを作成してしまうというセキュリティ問題が報告されています。

この問題は、"make_oidjoins_check" スクリプトが安全でない一時ファイルを作成するという問題で、スクリプトの実行権限で任意のファイルを作成、上書きされる可能性があるそうです。

この問題が修正された PostgreSQL 7.2.6, 7.3.8, 7.4.6 が公開されました。これらのバージョンでは、潜在的にデータが損失する可能性のあるバグも修正されていますので、バージョンアップした方が安全です。

*Apache

Apache 1.3.x に含まれるモジュールに、2 つのセキュリティ問題が報告されています。

mod_proxy のセキュリティ問題については、Apache 1.3.32 で修正されましたが、mod_include の方は Apache 1.3.32 でも修正されていませんので、注意してください。

*その他

>>気になったニュース、ツールなど

▲ 目次へ戻る


2004.10.17(Sun)

Windows の修正プログラムが公開されています。今回は緊急性の高いものが多いようです。

PHP と Web アプリケーションのセキュリティについてのメモに、PHP でセッション変数、Cookie を使用する際のセキュリティ対策についての章と、問題のあるディレクトリ・トラバーサル対策 を追加しました。「PHP でセッション変数、Cookie を使用する際のセキュリティ対策について」は、まだ項目を追加する予定です。

>>Mozilla Firefox のフォーム入力時に Ctrl-h でカーソルの前の1文字削除を行うように設定する

最近は Mozilla Firefox Preview Release を使用しているのですが、デフォルト状態では、テキストボックスの編集中に BS キーと同じように、前の1文字を削除するつもりで Ctrl-h を押すと履歴ウインドウが開いてしまいます。テキストボックスとテキストエリアでは、Ctrl-h を押すとカーソルの前の1文字を削除する方法がありましたので、メモしておきます。

Mozilla Firefox をインストールしたディレクトリにある、res/builtin/platformHTMLBindings.xml を編集します。platformHTMLBindings.xml はどのプラットフォームでも同じ場所にあるようです。

編集する前に Mozila Firefox は終了させておいてください。以下のように、<binding id="inputFields"><binding id="textAreas"> の中に、<handler... の行を追加します。

<binding id="inputFields">
...
<handler event="keypress" key="h" modifiers="accel" command="cmd_deleteCharBackward"/>
...
</binding>
<binding id="textAreas">
...
<handler event="keypress" key="h" modifiers="accel" command="cmd_deleteCharBackward"/>
...
</binding>

後は、Mozilla Firefox を再起動すると、テキストボックスとテキストエリアの入力中に Ctrl-h を押した場合、カーソルの1文字前の文字が削除されるようになります。

以下のページが参考になると思います。

>>セキュリティ関係

*Windows

緊急性の高いセキュリティ修正プログラムが公開されています。2004 年 10 月のセキュリティ情報などを読み、Windows Update を行うなど、必要な対処を行ってください。

その他、参考になるページです。

*Squid

Squid の SNMP モジュールに問題があり、DoS 攻撃を引き起こすことができる問題が報告されたそうです。この問題が修正された Squid 2.5-STABLE7 が公開されています。

iDEFFENCE の Squid Web Proxy Cache Remote Denial of Service Vulnerability という情報によると、Squid の SNMP サポートを無効にしていた場合、この問題はありません。Squid の SNMP サポートが有効になっているかどうかは、以下のコマンドで調べられるそうです。以下のコマンドを実行して、何も表示されなかった場合は SNMP サポートは無効になっているそうです。

grep snmp_port /usr/local/squid/sbin/squid

また、SNMP サポートを使用しないのであれば、squid.conf に以下の設定を行うことで無効にできます。

snmp_port 0

他にも、ローカルインターフェースのみからの SNMP を有効にする設定として、squid.conf に以下の設定を行う方法が挙げられています。

snmp_incoming_address 127.0.0.1
*Adobe Reader

Windows 版の Adobe Reader/Acrobat 6.01 と 6.02 に、Macromedia flash ファイルを経由して、ローカルファイルを読みとられてしまう可能性のある問題が報告されています。

この問題の回避方法として、Adobe Reader/Acrobat の Javascript を無効にする方法が挙げられています。

*mod_ssl

Apache 1.3.x で使用できる Apache モジュールの mod_ssl にセキュリティ制限が回避されてしまう問題が報告されています。

この問題を修正した mod_ssl 2.8.20-1.3.31 が公開されています。

*ProFTPD

ProFTPD 1.2.x にリモートから、ユーザ名が有効であるかどうかを確認することができるという問題が報告されています。

*その他

>>気になったニュース、ツールなど

▲ 目次へ戻る


2004.10.11(Mon)

Windows マシンの HDD が故障しました。Windows にはあまり重要なデータは置いていませんでしたので、それほど問題ではなかったのですが、この時期は HDD が故障しやすいようです。

PHP と Web アプリケーションのセキュリティについてのメモを書いてみました。PHP でスクリプトを書く際に気を付けた方がよいセキュリティ問題についてまとめているつもりです。まだ、セッション、Cookie 関連についても今後、追加する予定ですが、現在、書いている部分までを公開しておきます。

>>PHP 4.3.8 以下と PHP 5.0.1 以下バージョンで任意の場所にファイルをアップロードされてしまう可能性のある問題について

PHP 4.3.8 以下と PHP 5.0.1 以下のバージョンで任意の場所にファイルがアップロードされてしまう可能性のある問題(Overwrite $_FILE array in rfc1867 - Mime multipart/form-data File Upload)についての情報が Security Focus で公開されていました。

PHP 4.3.9 と PHP 5.0.2 では修正されていますが、それ以下のバージョンで任意の場所にファイルをアップロードされてしまうという問題は、入力チェックなどを行うことで回避は可能です。ただ、メモリリークを起こしてしまう問題については、$_FILE の配列を破壊する以外にも影響があるかもしれませんので、問題が修正されたバージョンにアップデートする方が安全です。

solution のページ(solution: PHP PHP_Variables Remote Memory Disclosure Vulnerability と、PHP Remote Arbitrary Location File Upload Vulnerability)には、PHP の全てのバージョンで 5.0.2 にアップデートするように書かれていますが、PHP 5.0.2 にアップデートすると動作しないスクリプトもありますので、気を付けた方が良いと思います。PHP 4.x を使用している場合は、PHP 4.3.9 にバージョンアップする方が問題が少ないと思います。

>>セキュリティ関係

*Apache

Apache 1.3.25 から Apache 1.3.31 に含まれる mod_proxy モジュールに buffer overflow が引き起こされる問題が見つかっています。これは、不正な Content-Length ヘッダを受けたときに引き起こされるそうです。この問題により、外部からの DoS 攻撃が可能とされており、いくつかの BSD 系の OS では、任意のコードを実行される可能性があるそうです。この問題は Apache 1.3.32 の開発版で修正されています。

*Apache 2

Apache 2.0.35 から Apache 2.0.52 の mod_ssl モジュールで、"SSLCipherSuite" ディレクティブの設定が行われていた場合、セキュリティ制限を回避されてしまう問題が見つかっています。この問題は Apache 2.0.53 の開発版で修正されています。

>>気になったニュース、ツールなど

▲ 目次へ戻る


2004.10.03(Sun)

>>Overwrite $_FILE array in rfc1867 - Mime multipart/form-data File Upload

BugTraq に PHP Memory Leak and Arbitrary File Location Upload Vulnerabilities の問題で詳しい情報が投稿(Php RFC1867 Upload Vuln. POC Released)されていました。PHP 4.3.9 と PHP 5.0.2 で修正された問題(Get/Post/Cookie に、"[" や "]" を使用して、配列として扱う機能がありますが、"[" を閉じない場合、メモリリークを起こすという問題)を利用して、$_FILE に渡される配列を改ざんし、httpd に書込み権限のある、任意の場所にファイルをアップロードすることが可能であるという指摘のようです。

投稿にあった、デモ用のコードを手元の環境で試してみましたが、$_FILE の配列が破壊されてしまう問題は確認できたものの、うまくファイルのアップロードを行うことはできませんでした。

PHP 4.3.6 以前では、これと同じ問題で、もっと簡単に任意の場所にファイルをアップロードできてしまう問題が報告されていますし、この問題と同様に、move_uploaded_file() を実行する前に、コピー先のファイル名に .. や /が含まれていれば削除したり、baseneme() を使用するなどの対処を行っておけば、回避できる問題です。

例えば、投稿では、以下のようにファイルのアップロード処理を行っていますが、

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . $_FILES['user_file']['name'];

if (is_uploaded_file($_FILES['user_file']['tmp_name'])
    && move_uploaded_file($_FILES['user_file']['tmp_name'], $uploadfile)) {

2行目の $uploadfile = $uploaddir . $_FILES['user_file']['name']; の部分の $_FILE から受け取ったファイル名の部分に basename() を適用するだけで、この問題は回避できます。

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename( $_FILES['user_file']['name'] );

if (is_uploaded_file($_FILES['user_file']['tmp_name'])
    && move_uploaded_file($_FILES['user_file']['tmp_name'], $uploadfile)) {

>>セキュリティ関係

*Mozilla Firefox

Mozilla Firefox 1.0 Preview Release にユーザのダウンロードディレクトリのファイルを削除される可能性のある問題が報告されています。この問題を修正した Mozilla Firefox Preview Release 0.10.1 と Patch が公開されています。

*Samba

Samba 3.0.5 までの 3.0.x 系および 2.2.11 までの 2.2.x すべてに公開ディレクトリ以外へのアクセスを許可してしまう問題が見つかっています。この問題を修正した Samba 2.2.12 が公開されました。また、Samba 3.0.5 以前のバージョンに対する Patch も公開されています。

他にも、日本 Samba ユーザ会のページにバージョンアップできない場合の回避方法が書かれています。

何らかの理由でアップグレードが難しい場合は、公開するユーザ・ホストを限定するか、または設定ファイル smb.conf 内で「wide links = no」と明示的に指定をするかして回避を行うのが推奨されます。

*Fedora Legacy Updates

RedHat 7.3 と 9 に対する修正パッケージが公開されています。RedHat 7.2 と 8.0 に対するサポートは停止しています(Fedora Legacy Update Advisories)。

*Gentoo Linux
*その他

>>気になったニュース、ツールなど

▲ 目次へ戻る


更新履歴

2004.10.31

10月31日分を追加。

2004.10.24

10月24日分を追加。2004.10.17 の Windows の修正プログラムにリンクを追加。

2004.10.17

10月17日分を追加。

2004.10.11

10月11日分を追加。誤字、脱字の修正、リンクの追加。

2004.10.03

このページを作成。10月 3日分を追加。

▲ 目次へ戻る

LastUpdate: 2004-10-31 | HOME