カテゴリー: Computer

今後20年間はムーアの法則は安泰

半導体メーカーの予測、および米半導体工業会(SIA)の技術ロードマップによると、CPUに集積されるトランジスター数は、現在の10億個から2年後には倍の20億個、4年後にはなんと40億個になるという。SIAのロードマップは、チップの小型化と集積度増大が2020年まで続くと予測している。

 インテル社とAMD社は、ギガヘルツで計測しているCPUのクロック速度について、消費電力と発熱の制約があるため、今後は過去のようなペースでは向上しないと述べている。それでも両社は、さらなる集積度増大により、チップ上に複数のコアを搭載して性能の飛躍を図るはずだ。インテル社によると、10年以内には1個のプロセッサー上に100個ものコアが搭載されるようになるかもしれないという。

100個もコアが乗らなくても、1つのCPUに10も20ものコアが乗るようになるだけで別次元のアプリケーションの可能性が出てきます。システムレベルのS/W開発者はもちろんアプリケーション開発者もこのような状況を見据えて開発する必要がありますね。

PHP_SELFはそのまま出力できない

追記:現在のPHPでは$_SERVER[‘PHP_SELF’]はクエリ文字列(?以降のクエリパラメータ)を含みません。しかし、index.php/<script>alert(1)</script>/aaa/bbb とすることは可能です。PHP_SELFと同様の変数は以下です。

  • $_SERVER[‘PATH_INFO’]
  • $_SERVER[‘PATH_TRANSLATED’]

 

時々見かけるのでブログでも問題を指摘します。

PHPの$_SERVER配列に入っているPHP_SELF要素はPATHINFOも含めてしまうため、そのまま出力するとXSSに脆弱になる場合があります。

phpinfo()がXSSに脆弱だ、と指摘する人がいるので(元々phpinfo()の出力は管理者・開発者のみ参照できるようにしておくべきですが..)現在のPHPはPHP_SELF内の< > を検出して

<script> </script>

等と書けないようになっています。しかし、この対策はphpinfo()の事しか考えていないので

<?php
echo '<a href="'. $_SERVER['PHP_SELF'] .'">aaa</a>';
?>

の様なケースの場合、

http://example.com/xss.php/%22%20onMouseOver=%22javascript:alert(‘xss’);

等としてJavaScriptの挿入が可能になります。

SCRIPT_NAMEにはPATH情報が無いのでこの問題は発生しません。PHP_SELFでは無くSCRIPT_NAMEを使用すべき所をPHP_SELFを利用しているケースは時々見かけます。

注意が必要かもしれませんね。

UNIX系OSならPHPのソースがあるディレクトリに移動して

find . -name “*.php” | xargs grep -n “PHP_SELF”

等として怪しいPHP_SELFの出力が無いか確認すると良いかも?!

日本のアイドルサイトからのリファラSPAM?

久しぶりにブログへのSPAM掃除をしていたら、日本のアイドルサイトからのリファラSPAMと思われるログが複数ありました。

#リンクにならないようにhttpのhを削除しました。

ttp://suzukiairi.net/cgi-bin/up/upload.php?page=all
ttp://www.umedaerika.com/ume/uperika.php?page=all
ttp://melon-kinenbi.plala.jp/~ayumi/sam.php?start=100
ttp://ai-flavor.com/upload/flavorupload.php?page=all
ttp://www.sudomaasa.com/rabi/upmaasa.php?page=all

なにこれ?と思っていたところどうもこのアップローダ(正確にはサムネイルの表示スクリプト)にはXSS脆弱性があるようです。某サイトのサンプルファイルを修正して使っているようです。

このスクリプトはXSSに脆弱なのでファンが勝手にXSSに脆弱なスクリプトを利用してSAPMを送信したのか、とも思ったのですが同じIPアドレス(サーバのとは別のIP:xxx.87.1.155)のリファラであるためXSSを利用しているとは断定できません。書きませんがwhois情報を見ると…、となっています。

サーバ(多分このIPはプロキシ)がクラックされているか?内部のクライアントがクラックされているのか? 単純に内部の利用者によりプロモートするためにリファラSPAMが仕掛けられているのか?業者によるこれらのタレントのプロモーション用SPAMなのか?

他の業者とは異なるのは参照先のURLがトップページ固定ではなく、ほとんどが実在するURLをばらばらにリクエストしている所が新しいです。

とりあえず様子を見ることにします。

PHP 5.1でregister_globals=onには注意

5.1.0で直されていたはずなんですけど。記憶が確かなら。

え?という感じなのですがPHP 5.1.1, PHP 5.1.2にはシステムが初期化する配列にGLOBALSをチェックするコードを入れてなかったようです。自分では試してないですが簡単にチェックできるのでこのアドバイザリが間違っていることはないでしょう。

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スクリプトとなる文字列型データです。

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のカンファレンスも今なら間に合う(?)かも?

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

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管理になりません。

GPLv3 Draft

DRMに関わるコードにはGPLv3は使えない、GPLが適用されたプログラムに関わる特許権の行使の制限、が特に注目すべき箇所のようです。