Mac miniがCore2Duoに

Mac miniがCore2Duoに

新iMacのアナウンスと同時にMac miniのCPUがCore2Duoになる事が明らかになったようです。

新モデルは「Core 2 Duo」を搭載した。599ドルモデルは1.83GHzの「Core 2 Duo T5600」を、799ドルモデルは2.0GHzの「Core 2 Duo T7200」を搭載している。

OSは10.5はファミリーパックで買うのでリリースまで待つ必要ないし、これでやっとMac miniが買える :)

IT技術者は高収入だが満足度が低い

イギリスはこの手の統計が好きなのか、私がたまたまイギリスのこの手の統計情報を見かけているのか収入と満足度の調査結果によると81種に分けた業種中、IT技術者は満足度が66位だそうです。以前に見かけた統計でも同じような結果でした。

収入の平均は4万ポンドを超えるそうなので日本円にすると964万円( http://quote.yahoo.co.jp/m5?a=40000&s=GBP&t=JPY )だそうです。アメリカのプログラマの平均年収が8万ドルだったと思うので日本円にすると953万円( http://quote.yahoo.co.jp/m5?a=80000&s=USD&t=JPY )と収入はほぼアメリカ並み(?)と言えるのかも知れません。

ちなみに日本のIT系は3Kらしく「きつい」「帰れない」「給料安い」とか言われてるようです。日本のIT技術者の平均収入はどれくらいなのでしょうね。

追記:
ということで調べてみました。2005年のデータではないかと思います。

http://ranking1.nobody.jp/salary2-gyoushu.html

システムコンサルタントは割と上位(?)なようですが、平均と言う意味ではアメリカ、イギリスに全く及びません…
以下のリンクを見れば違いは一目瞭然です。

http://www.chikawatanabe.com/blog/2006/03/post_4.html

日本の状況はIT Proの記事が非常に参考になります。

http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20040110/1/

日本の場合、かなり給料が下がってきていたのですね… 2004年から2006年にかけてどう変化しているのか気になったので調べてみると

http://doda.jp/guide/heikin/hei_003_01/index.html

となってます。

Tomcat 3.3.0 – 3.3.2にクロスサイトスクリプティング脆弱性

IPAのドキュメントでは大規模開発にはJava, .NETをお勧めしているようですがTomcatのページにはこのような記載も。

Apache Tomcat 3.x and 4.x, we strongly encourage users to use the latest stable version of Apache Tomcat whenever possible. We recognize that upgrading across major version may not be a trivial task, and some support is still offered on the mailing list for users of old versions. However, because of the community-driven support approach, the older your version the less people would be interested or able to support you.

http://tomcat.apache.org/

つまり3.x, 4.xユーザは早く6.xに乗り換えてねと言う事です。PHP4の状況と同じですね。

そして現行の3.3.xの最新版に未パッチ(私が見た情報には詳しい記述がなかったので詳細は分かりません。もうすぐパッチはリリースされるのかな?)のXSS脆弱性があるようです。IPA的にはJavaは良いけどTomcatは大規模開発には使うなと言う事なのかな?

MoPBの邦訳をしていたので「例えば大規模開発にPHPは使用しない」(IPAのページが見つけられなかったので正確な言い回しでは無いかもしれません)と言う表現に一役買っているとも言えますが、私としてはどうもドングリの背比べに見えるのですけどね…

機会がある毎に、言語やフレームワークでより安全なWebサイトが作りやすくはなっても、言語やフレームワークで安全性を保証できない、と言っています。「○○言語利用しているので安全です」とか「○○フレームワークを利用して構築しているので安全です」とは言えないことは明らかです。バージョンアップについても状況は違っても似たような状態だと思います。

Canon iP7500:OSXからLPDでプリント

WindowsServer 2003にCanon iP7500が接続されLPDサーバのプリンタとして利用しています。LinuxからはiP7500用のSRPMをちょっと手直しして無理矢理ビルドしたドライバで普通に印刷できています。
# リンクしたがるライブラリが古すぎるので無理矢理新しいライブラリと
# リンクさせてますが私の使用方法だと困った事はないです。

さすがに印刷できないのは非常に困るので、OSX用のドライバをCanon iP7500のCanonのホームページ

http://cweb.canon.jp/drv-upd/bj/ip-series.html

をダウンロードしインストールしました。しかしCUPSのドライバ選択のドロップダウンに表示されません。調べる時間も無いのでサポートに電話してみました。ドライバのインストールはUSB接続しプリンタの電源を入れて行ってください、とのこと。USB接続ならプリンタが見え印刷できる状態になりました。

しかし、CUPS/gimp printの一覧にプリンタがでてきません。そこでもう一度サポートに電話をかけると折り返し詳しい方から電話してもらう事になりました。電話はすぐにかかってきたのですがUSB以外の印刷はサポートしていないとの回答でした。

印刷できないと困るのでサポートしてくれないならLinuxのPPDファイルとOSXのUSB接続用のPPDファイルを適当に合わせて印刷できる様にしようと試みました。しかし、フィルタがUSB専用(?)なのかエラーで印刷できません。ここでも調べる時間が無いので直ぐに諦めLinuxで昔使っていた方法で印刷しています。BJ7000のドライバ(Gimp PrintのBJ7000用のPPDファイル)を使ってDPIを600×600、色をグレイスケールに設定すると概ね普通に印刷できます…

PPDファイルだけなら時間をかければ自分で作れると思いますが、CanonさんGimp Print/CUPSどちらでも良いので普通に印刷できるPPDファイル/ドライバ作ってください… USB接続だけで印刷できれば良いって、このネットワーク時代にありでしょうか? 困っている人も多いと思うのですが…
# もしかしてサポートの方が知らない簡単な接続方法があるのかな?

ところでドライバパッケージの中身にはヘッドクリーニングやインクカートリッジの状態確認などが行えるユーティリティ(Canon IJ Printer Utility)が入っていました。実際に使えますがドライバのインストーラはアプリケーションとしてインストールしてくれないようです。欲しい方はドライバのパッケージファイルの中身を探すと見つかります。

Security Update 2007-007

最近メイン環境をOSXに変えたのでMacをよく使っています。LinuxとOSXが半々くらいになっています。今までOSXのセキュリティアップデートを注意して見てこなかったのですが、このセキュリティアップデートを見ると「なんだかな…」と思ってしまいました。

bzip2 CVE-ID: CVE-2005-0758
gnuzip CVE-ID: CVE-2005-0758

この脆弱性はgunzip -Nで展開した場合の問題のようななのでそれほど危険ではないようです。しかし、2005年の脆弱性なのでこれはさすがに古すぎでは… 確かにアーカイバの脆弱性修正が忘れられている事例は多く見られます。アンチウィルス製品がLHA、GZIP, BZIP等の脆弱性が直っていなくて(それも古いもの)脆弱性としてレポートされているケースはかなり多いです。だれも気にしていなかったにしても長期間放置されすぎだと思います。

PHPもアップグレードされていました。確かにテストなどで時間が必要なのは分かります。特にPHPはアップグレードするのが非常に難しいのは分かりますが、このアップデートでやっと4.4.7になりました。PHP 4.4.4ってなぜ?と思っていました。自分でビルドして5.2を使っているので気にしていませんでしたが。Appleだけが遅いのではなく、確信犯でアップデートを出していないディストリビュータも多いですけど。

普通の人が普通に安全にコンピュータが使えるようになるのはまだまだ長い道のりが必要ですね。
# 普通の人(コンピュータに詳しくない人)はgunzip, bzip2は使わないか

クライアントサイドでのXSS対策

詳しくはリンク先を見て頂くとして、XSSは

  • クライアントサイドで発生する
  • 通常JavaScriptで発生する

と言う点着目してスクリプトにサインを付けクライアント側でもXSSを検出しようと言う話です。フェイルセーフ対策としては有用だと思います。Flash, PDF, Javaなどのオブジェクトにもサインすればより良いと思います。サインさえ付けておけばあとは決まったJavaScriptコードを全てのページに追加するだけなのでそれほど難しい対策ではありません。

PHP4からPHP5への移行について

PHP4のサポート終了がアナウンスされことに伴い、技術評論社の方からPHP4からPHP5への移行の記事を書く事になりました。毎週新しい記事が公開されます。下記のURLが最初の記事で8/2(予定)から順次続きが公開されます。

http://gihyo.jp/dev/feature/01/php-migration/0001?page=1

記事を書いてみて思ったのですが、自分にとってはPHP4とPHP5両方で動作するコードを書くのはそう難しくないのですが時々PHPでコードを書いている方、PHPの開発状態を把握していない方には結構難しいのではないかと思いました。今回の記事は「移行」にのみ焦点をあててPHP5の新機能はほとんど紹介しませんでしたがかなりボリュームになってしまいました。それでも十分とは言えないです。PHP5への移行をお考えのかたは8/2から上記URLを参考にして頂ければ幸いです。

ところで、隔週(の予定…で実際は月一回くらい…)でセキュリティ関係の記事も http://gihyo.jp/ にて連載しています。こちらもよろしくお願いします。

http://gihyo.jp/serial/2007/php-security

どの記事でもコメントなどございましたらメールで頂けると助かります。

Sonyも仮想世界に参入

SecondLifeとか話題になっているのにSonyがPS3で参入しない手はない、と思っていたらPLAYSTATIOIN@Homeというサービスを予定しているのですね。ニュースになっていたのでしょうが知りませんでした。基本無料、一部有料というスタイルらしいです。タイトルをクリックすると紹介ムービーが見れます。PS3らしくかなり凝った3Dです。仮想世界は結構いろいろなところが参入/参入表明していますがハードを持っているSonyはなんだかんだいって強いかと思います。

アメリカで一番利用されているゲーム機はPS2とのニュースがありましが、システムソフトウェアのバージョンアップでPS2ゲームもフルスペックハイビジョン化(アップコンバート)できたり、さらに普通のDVDもフルスペックハイビジョン化、最新のシステムソフトウェアではCDを2倍、4倍でアップコンバートしたり、Cellの利点を生かした機能はいろいろ便利そうです。PS3ももう少しうれても良さそうなんですけどね。ハイビジョン対応のテレビの普及率の問題もあるのかな?

ドルビー(だったかな?もしかするとBOSEだったかも)がどんなソースでも5.1ch化する物を発表していましたが、何でも5.1ch化もあったら良いですね。(もしかしてもうある?)
# このニュースを見たときモノラルでも5.1ch化できるの?と疑問に
# 思ったのですがニュースには詳細は書いてありませんでした。

PS3は欲しいハードの一つなので年末商戦値下げで買っても良いくらいの値段になると良いですね。
# ゲームを全くしないので無駄遣いですが

カラーレザープリンタの印刷物に埋め込まれたコード

コピーすると「COPY」と印刷されてしまう機能は有名です。
コピー機、PhotoShopの紙幣複製を防止する機能も知っていましたが

カラーレーザープリンターで印刷されたものには全てこのように肉眼では判別し難い黄色いピクセルをバーコード(大きさは8×15ピクセル)のように印字することによって、プリンターのメーカー名、機種名、シリアル番号、印刷された日時の4つの情報を合計15バイトの情報としてコード化して埋め込まれているという。

プリンタ、コピー機業界では常識なのかもしれませんが知りませんでした。
# どこかで聞いたことがあるような気もしますが覚えてませんでした。

このバーコード、日本国内で販売されているカラーレーザープリンターでも印刷物にブラックライト(紫外線ランプ)を当てて丹念に調べれば肉眼で確認することができるという。

ブラックライトを持っていないので確認できません…

この機能、全うな目的で印刷する人には何の問題もありませんが不正な目的で印刷しようとする人を思いとどまらせる為に役立つかも知れません。印刷ログを残しておけば時間とプリンタでユーザまで特定できます。すべてのプリンタ、コピー機に入れても良いと思いますがどうでしょう?似たようなセキュリティソリューションを購入する必要もなくなります。

この機能、やはりカラープリンタそれもカラーレーザープリンタ向きの機能だと思うので、問題は全てのプリンタをカラーレーザープリンタにするのは導入とランニングコストがかかり過ぎることくらいでしょうか?

白黒コピー機でコピーしてもこのコードは読めるのかどうか気になります。多分読めないとは思いますが。

BIND9のDNSキャッシュ汚染

BIND9にDNSキャッシュ汚染の脆弱性だそうです。

The paper shows that BIND 9 DNS queries are predictable – i.e. that the source UDP port and DNS transaction ID can be effectively predicted. A predictability algorithm is described that, in optimal conditions, provides very few guesses for the “next” query (10 in the basic attack, and 1 in the advanced attack), thereby overcoming whatever protection offered by the transaction ID mechanism. This enables a much more effective DNS cache poisoning than the currently known attacks against BIND 9. The net effect is that pharming attacks are feasible against BIND 9 caching DNS servers, without the need to directly attack neither DNS servers nor clients (PCs). The results are applicable to all BIND 9 releases [1], when BIND (the named daemon) is in caching DNS server configuration.

まだ中身を見れていないのですが、最適な条件であれば基本的な攻撃で10回、高度な攻撃で1回で次のトランザクションIDを推測できる、としています。最適な条件がどれくらいあるのか?は読んでみないとわからないです。

All stable versions of BIND 9 to date (except the ones released simultaneously with this paper) are vulnerable, i.e. BIND 9 versions 9.4.0-9.4.1, 9.3.0-9.3.4, 9.2.0-9.2.8, 9.1.0-9.1.3 and 9.0.0-9.0.1.

とあるので、BIND9の最新版では問題は修正されているそうです。 http://www.isc.org/index.pl を見ると確かに今月リリースの9.xが紹介されています。

CVEはこれ
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-2926

BIND8, BIND4には影響がないとされています。

Flashをブロックして意外と使えると思った副作用

数日前のエントリで書いた通りFlashコンテンツが自動的に再生されるリスクを回避するために、明示的に指示しないとFlashコンテンツが再生されないFirefoxアドオンを利用しています。

Flashblock
https://addons.mozilla.org/ja/firefox/addon/433

私はサイト上の広告はほとんど気にしない方なので広告をブロックするような拡張は使っていませんが、Flashをブロックすると動きがある広告が表示されなくなりページが読みやすくなりました。気にはしていなかったのですが文章を読んでいる最中にすぐ横でアニメーション広告があると非常に邪魔です。

私の使い方では作者コメントに書いてあるようにクラッシュが頻繁に発生することも無いようです。セキュリティが気になる方には当然お勧めのアドオンですが、アニメーション広告が邪魔で仕方ない方にもお勧めだと思います。
# アニメーションGIFの広告もあるのでこちらは別途ブロックしないと
# ブロックできません。念のため。

globで任意コード実行の脆弱性

FirstにPHPのglobで任意コード実行の脆弱性、とあったのでCVSを見てみるとglob用のメモリ構造体を未初期化で使用しているコードが修正されていました。未初期化の構造体メモリを任意データで書き換える必要があるので、攻撃を行うには攻撃が可能となるメモリレイアウトを作る比較的特殊なコードが必要になると思われます。

任意コード実行の脆弱性として

Remotely Exploitable : Yes
Locally Exploitable : Yes

の割には

Rated as : Moderate Risk

となっています。これは攻撃可能なメモリレイアウト作成はあまり直感的ではないから、もしくはPoCレベルの通常では起こりえない状況用の攻撃コードのみ作成されているからだと思われます。

これはPHP5.2.3以下の脆弱性です。以下はHEADのパッチです。
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dir.c?r1=1.166&r2=1.167
見ての通り、1 linerパッチです。

PHP4のサポートが終了しますが「ディストリビュータのサポートは別途で長いから」とディストリビュータのサポートに期待している方も多いと思います。ディストリビュータがどの程度セキュリティパッチをサポートしてくれるのかちょうどよいベンチマークになると思います。

Flashもブロック対象の時期か…

Flash Player関連のセキュリティ問題は結構レポートされています。最近見つかった脆弱性もかなり危険です。デフォルトでFlashを実行するのはリスクが高いですがFlashがないとまともにナビゲーションできないサイトも多いのでインストールしない訳にもいきません。

Firefoxの場合ならFlashblockアドオンでFlashをブロックし、選択してから実行できるようになります。

Flashblock
https://addons.mozilla.org/ja/firefox/addon/433

Firefox coreのバグで頻繁にクラッシュする、とコメントにありますがとりあえず入れてみました。Firefoxでインストールする必須セキュリティ関係アドオンリストに加えるべきか試してみたいと思います。

他のセキュリティ関係アドオンでお勧め

NoScript- JavaScriptを実行しない
https://addons.mozilla.org/ja/firefox/addon/722

HttpOnly – IEの「JavaScriptにクッキーを読ませない機能」をFirefoxに追加
https://addons.mozilla.org/ja/firefox/addon/3629

この2つは安定していると思います。すべてのユーザにお勧めです。HttpOnlyはすべてのサイトでJavaScriptからクッキーが読めなくなるアドオンではありません。WebアプリがMS独自拡張のhttponly属性を追加してクッキーを設定した場合にのみJavaScriptからクッキーが読み出せなくなります。PHP5のsetcookie/setrawcookieにはhttponly属性を送信するオプションが追加されています。

PHPでQtアプリ

PHPでGTKアプリが作れるPHP-GTKは以前からありましたが、PHPでQtアプリが作れるPHP-Qt 0.1がリリースされています。

The PHP-Qt team is pleased to announce the immediate release of PHP-Qt Version 0.1!
It’s been nearly a year since the release of version 0.0.3 and many, many things have changed, including the move to using the Smoke library.
A few of the changes from 0.0.3 to 0.1 are:

* Unit tests based on phpunit
* Overriding of Qt methods in PHP classes
* Improved startup time
* Improved runtime speed
* improved inheritance
* CMake-based build system
* Support for references
* There is now a global tr() function
* Based on the Smoke library
* License: GPL (see note below)

$intval * 1でサニタイズ…

たまたま見たPHPのコードでSQL文中の整数値を

$intval * 1

として整数型にするサニタイズがありました。この方法をお薦めするわけではありませんが、以前のエントリ

http://blog.ohgaki.net/index.php/yohgaki/2007/07/04/example_1428_a_best_practice_query

でsprintf()の%dを使う方法よりはましです。

$ php -r “echo ‘99999999999999’ * 1;”
99999999999999

実行したマシンは32bitのLinuxシステムですが浮動小数点型に自動変換されるので2^31を越える値でも正しく表示されます。一方、PHPマニュアルの方法だと

$ php -r “printf(‘%d’, ‘99999999999999’ * 1);”
276447231

となってしまいます。最近のDBは大きなモノも珍しくないのでこの程度でオーバーフローするようでは安心できません。もっとも*1方式でもあと一桁増やすと

$ php -r “echo ‘999999999999999’ * 1;”9′ * 1);”
1E+15

と指数表記になるのでこれで十分とは言えません。しかし、マニュアルのベストプラクティスよりは良いです。printf系で処理するなら

$ php -r “printf(‘%1.0f’, ‘99999999999999’ * 1);”
99999999999999

これで十分なDBも多いとは思いますが、ダイナミックにSQL文を生成するのであれば文字列として渡してエスケープしてしまうと確実です。