D.J.Bernstein氏のセキュリティホールコースのfinal exam.

D.J.Bernstein氏のセキュリティホールコースのfinal exam.

qmail, djbdnsで有名なD.J.Bernstein氏の昨年末のセキュリティホールコースのfinal exam.がPDFで公開されています。

UNIX/Cプログラマ向けの試験です。結構難しいです。
UNIX/Cプログラマの方は一度試してみる価値があるテストです。

さらにこのコースの説明(最初のPDF)を見てみると成績の60%は新しいセキュリティホールを10個見付けることによって決まる、と書いてあります。さすがDJB :)

中国に行けば利用できるようになるのかも?!

クローン幹細胞で牛の若返り実験に成功したそうです。

実は中国は再生医療で最先端を行く国です。脊椎を損傷し体の自由が利かなくなる場合、従来の医療で治療することは不可能とされてきました。しかし、胎児の細胞を使用し神経細胞の再生させる治療が中国では行われています。中絶された胎児の細胞がこの治療に利用されています。日本や欧米から治療を受けにやってくる患者も多いそうです。

このような治療は倫理上問題があるため日本や欧米では研究を行うのも難しい状況ですが、中国では規制が無いため比較的自由に研究が行われ、神経細胞の再生医療にいたっては実用化されるレベルになっています。

実験では牛の胎児が利用されたようですが、人口受精に使用されなかった卵子から培養皿でクローン胚を培養したES細胞でも同じ効果があるらしいです。個人的にはそこまでして長生きしたいとは思いませんが、たとえ高額でもニーズは十分あるように思えます。中国に行けばクローン技術を応用した若返り治療を受けられるようになる日もそう遠くないように思えます。

ところで、つい先日シンガポールは医療サービスに力を入れていることを知りました。海外から高度な医療を受けるためにシンガポールを訪れる人を年間100万人まで増やし、観光と同じように経済の柱の一つになる産業に育てる計画だそうです。シンガポールの医師は2年毎に医師免許を更新し、最新の医療知識を身に付けている事が義務付けられているそうです。2年毎に試験されるとは医師も大変だと思いますが、シンガポールが本気であることは分かりました。確かアメリカは9年毎に更新だったと思います。日本の場合、医師免許に更新はありません。日本では良い医療が受けられないのでシンガポールに行くなどという状況にならない事を願います。

ウィルコム、PHS無線部分をモジュール化、情報機器への組み込みを可能に

以前からPHSは組み込み用にモジュール化すれば結構売れるのではないか、と思っていたのですが遂にモジュール化するそうです。多くの企業が協賛するようです。WILLCOMになってしがらみが無くなった分ビジネスが広がった、という事なのでしょうか?

/.Jにタレこみがあるかも、と思い覘いて見るとやはりありました。

http://slashdot.jp/mobile/05/07/07/1118221.shtml?topic=97

CNet Japanはこれ

http://japan.cnet.com/news/com/story/0,2000047668,20085134,00.htm

QRコードを短冊に

メモ。QRコードに関するblog。本文もQRコードならコメントもQRコードです(気付くのが遅すぎ?

とろこでトップページの「QRコード読み取りのコツ」に

■QRコードの真正面から撮影

とありますが、真正面から読まないとQRコードが読み取れないリーダ(携帯)があるのですね。と、書いている自分も正面から読み取るようにしていますが、QRコードは印刷面が平たければ、ななめから読み取っても読み取れる設計になっています。QRコードの仕様を知らない方も多いと思うので簡単な説明を付けておきます。隅の大きめの■が斜めからも読み取れるようにするための役割を持っています。全ての隅に大きめの■が無いのは読み取り開始位置を判別できるようにするためです。カメラの解像度やQRコードが写されている領域の影響もあるので正面から撮らないと読み取りに失敗する確立は高くはなると思います。エラー補正情報をQRコード内にたくさん入れていれば読み取りに成功する確立は高くなりますが、QRコードが大きくなります。微妙ですね。

折角の有用な情報が台無しです…

7/1から経済産業省が悪徳リフォーム業者のリストを公開したそうです。(タイトルが経済産業省のページにリンクしています。念のため。)

まず最初に目に付いたのが、blinkタグの使用です。HTMLソースを見ると読み上げソフトへの配慮も行われているのですが…

その次は悪徳業者リストがPDFのみで公開されている事です。これでは悪徳業者名が検索エンジンで検索できません…

予想どおりのコメント

Amazonの「はじめてのPHP言語プログラミング入門」にやっと予想どおりのコメントが出てきました。

はじめての、というタイトルに惹かれ購入したのですが、ちょっと難しすぎるというのが正直な感想です。サンプルプログラムに説明のない単語があったり、解説文に聞きなれない専門用語があったり。他の言語や、別の本でPHPを学んでいれば問題ないのでしょうが、それだったら「はじめての」とか「入門」という言葉をタイトルに入れないほうがいいんじゃないかな、と思います。

著者が、博学なのはよく分かるのですが、書き手としては癖があります。掲載されているプログラム自体は簡単なのですが、解説が細かい事まで書きすぎてあり、読んでいて辛くなります。難しげな専門用語もサラリと出てきたりします。結果的に、初心者が読むには向いてないような気がします。PHP初心者には、細かい事を気にせず、ガンガン書いていくタイプの本をお薦めします。

ここで言い訳しておきます :)

この本を書いている時点で「基本は説明したので、とにかく書いてみよう、作ってみよう」と言うPHP入門書(ほとんどはWebサイト構築入門書の体裁)はいくらでもありました。多くのPHP入門書籍はWebサイトを構築する為のツールのような位置づけとしてPHPを説明していました。同じような本を書いてもつまらないので、あらたにPHPを言語として習得されたいプログラマ向け、というコンセプトで書いています。

「はじめての」を付けない方が良いのでは? と指摘されていますが、その通りかも知れません。「はじめての」と付いているのは、この本は当初、技術評論社の「はじめての」シリーズ用に書きはじめた為、「はじめての」と付いています。ページ数等の関係でシリーズ本としなかったのですが名前に残ったという経緯があります。言われてみると「PHP言語プログラミング入門」の方が良かったかもしれませんね。供給側の考えとしては「はじめて」PHPを「言語」としてとらえた入門書、という意図があったので「はじめて」と付いています。

まえがきでも多少ふれていますが、PHPをプログラミング言語としてある程度体系的に習得したい方向けに、プログラミング入門書ではなく言語の入門書として書いたつもりです。このため、本当に初めてプログラミングをPHPで習得したい方、とにかくPHPを使ってWebサイトを作ってみたい方、には不向きな書籍であるという評価は正しい評価です。ターゲットとしている読者は「他の言語は知っているから、PHPでプログラミングする場合に必要な知識や注意点を知りたい方」「とにかく作ってみようタイプの書籍でPHPを習得したが、PHPを言語としてある程度体系的に知りたい」方を想定しています。

出版社/著者からの内容紹介
 Webアプリケーション構築ツールとしてPHPを取り上げた書籍は数多くありますが、言語の解説・入門書としての書籍はあまりありません。
 本書は、プログラミング言語としてのPHPを解説することに最も重点を置いた入門書です。本書を通じて本格的なアプリケーション構築に必要な基礎知識を習得することができます。

出版社からのコメント
■こんな方におすすめ
・PHPプログラミングに興味のある方
・PHPをきちんと学びなおしたい方

と購入者の方に配慮しているつもりですが、Amazonで購入する場合は立ち読みをしてから買う事ができないのでタイトルのみで購入すると期待外れになってしまう場合があります。しかし、amazon.co.jpでもスキャナでスキャンしOCRでテキスト化したデータを検索できる「サーチ・インサイド・ブック」サービスがはじまるようです。「はじめてのPHP言語プログラミング」もこのサービスで立ち読みできるようデータベース化を許諾しています。しばらくすると立ち読みできるようになるのでタイトルから期待していた内容と違った、と言うことは少なくなるのではないかと期待しています。

ところで、書き手としては言語要素をさらっと解説してアプリの作り方を説明する方がかなり楽です。このような書き方の本の方が売れるようですが中身がある本の方が価値が高くなると信じてこのような内容になっています。Webシステム構築入門書としては適していないかも知れませんが、業務としてPHPを使う方には役に立つ内容と思っています。(と言うより業務でPHPを使う方には知っておいて欲しい知識を記載しています)ご意見/感想などはAmazonのコメント、Wikiメール、お好みの方法でお願いします!

SATAとPATAの混在環境

最近のマザーボートはSATAとPATA、両方のインターフェースが当り前のように着いてきます。しかし、LinuxでPATA、SATAのHDD両方が接続されている場合は簡単に構成できない場合が多いかも知れません。

Althon64のPCを組む為にASUS A8V Deluxeを購入しました。AthlonXP 2500+に接続していた80GBのHDD(/dev/hda – WindowsXPのみインストールされている)と200GB HDD(/dev/hdb – 各種Linuxのビルド・テスト環境がインストールされている)を
200GB (/dev/hda – 古い80GBのWindowsXPのパーティションのコピーとLinux)と250GB(/dev/sda – 古い200GBの各種Linuxビルド・テスト環境)に移行しました。

WindowXPのパーティションの移動はddコマンドで簡単に移動できます。今のHDDはLBAが当たり前でシリンダ数さえ合っていればddでデバイスからデバイスへコピーするだけで移動できます。CPUとマザーボードが変わりましたがXPからはWindows2000やNT様に苦労する事はありません。

苦労したのはLinuxのシステムイメージの移行です。PATAとSATAの混在環境にしたのですがブートに色々な問題が発生します。Linuxのブートプロセスはある程度知っているので、ほとんどは既に知っている問題だったのですがBIOSの設定とgrubの動作に手惑いました。

ご存知の通りLinuxはHDDの認識にBIOSを使いません。このため最初にgrubを起動したときとブート後のデバイスの順序が異なっていました。BIOSの設定とLinuxが認識するHDDのデバイスの順序が異なっていると混乱してしまいます。BIOSの設定をLinuxの認識順序と合わせる事ができるBIOSであれば、同じにすると問題を回避できると思います。Wikiには多少詳しく(?)記述しています。

分散リファラスパム

来ているところには前からアクセスがあったのだと思いますが、Botnetを利用したと思われるリファラスパム攻撃が急増しています。データベースに載せられたのかもしれませんね。

ソースIPが広範囲に分散しています。IPアドレスがばらばらなのでBotnetを利用していると思われるます。自分のネットワーク帯域ではないのでリファラスパムが有効かどうかも確認していないようです。

スパムメールの半分はBotnetから送られていると言われていますが、Webの帯域の半分はリファラ/コメントスパムのトラフィック、なんて事にならなければ良いのですが…

本当に面倒な世の中になりましたね…

WebCollege (xscreensaver) にご用心

xscreensaverにWebCollegeと言うスクリーンセーバモジュールがあります。Webからランダムにイメージファイルを取得しスクリーンに貼り付けます。このスクリーンセーバがインストールされている場合、

man webcollage

とするとこのスクリーンセーバのマニュアルページが参照できます。xscreensaverのデフォルト設定では「ランダムスクリーンセーバ」設定時にはWebCollageは使われないようになっています。それはこのスクリーンセーバがランダムに取得する画像にかなりの高確率で好ましくない画像が含まれているからです。

デフォルトで使用されないのに何故このような事を書いているか、というと私のデスクトップPCはKDEを利用しているからです。KDEを使っている場合、xscreensaverが提供するスクリーンセーバの仕組みは使わずに独自のスクリーンセーバ選択機構を使用しています。しかも、ランダムモードの場合どのスクリーンセーバを使わないか選択できません。つまりWebCollegeが使われるかも知れません。

このスクリーンセーバはRedHatやDebianでも問題になっています。

とにかく有害なスクリーンセーバを削除したい場合はrootになってから

locate webcollege | xargs rm -f

を実行しましょう。

参考:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139513
http://www.jp.redhat.com/support/errata/RHBA/RHBA-2004-443J.html
http://www.jwz.org/xscreensaver/faq.html#kde
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23311683

XMLRPC for PHPにセキュリティーホール

Secuniaから”Highly Critical”レベルとされるアドバイザリが出ていたのでxmlrpc-epiモジュールのことかと思いましたが、このモジュール利用したPHPスクリプトライブラリの脆弱性でした。

http://sourceforge.net/projects/phpxmlrpc/

利用されている方は出来るだけ早くアップデートした方がよいようです。

allow_url_fopen

追記:
現在のPHPではリモートファイル読み込みを制御するphp.ini設定としてallow_url_fopen(URL等のファイルとして読み込むフラグ)とallow_url_include(URLなどをPHPスクリプトとして読み込むフラグ)があります。php://input(標準入力用のURL。Webアプリの場合、POSTリクエストなどが読み込める)もallow_url_include=Offでは利用できません。このためallow_url_include=Offの場合、リモートスクリプトからの読み込みを防止できます。

基本的には

  • allow_url_includeは常に無効(JSONなどでなくPHPスクリプトとしてリモートデータを読む、などの場合は局所的に有効化)
  • allow_url_fopenは全く必要ないなら無効

とすると良いでしょう。

PHPを使っている方はHTTP/FTP/SSH等のプロトコルでリモートサーバ上のファイルをローカルファイルの様に読み書きできる事をご存知と思います。この機能はphp.ini設定のallow_url_fopenディレクティブで有効/無効を設定できるようになっています。PHP 4.3.4より前のPHPではこの機能のスクリプト中からも無効/有効に設定を変更する事ができました。(INI_ALLの設定項目であった)

驚いたことにPHP 4.3.4からphp.iniからしかこの設定を変更できなくなってしまいました。(INI_SYSTEMの設定項目になった)誰かがセキュリティ強化を目的として変更したのだとは思いますが、セキュリティも強化できず、有用なリモートファイルアクセス機能も使えなくする非常に拙い変更です。

例えば、phpBB(BBSアプリケーション)ではinclude/require文に不適切に処理されたユーザ入力が利用されている為、リモートスクリプトを読み込み実行できてしまう非常に深刻なセキュリティ上の問題がまた最近見つかりました。phpBBはallow_url_fopen機能が無効であっても動作するので

allow_url_fopen = Off

と設定するか必ず読み込まれる設定ファイルで

ini_set(‘allow_url_fopen’, 0);

とすると、phpBBのようなアプリケーションでも比較的安全に運用することができました。

しかし、allow_url_fopenがINI_SYSTEMの設定項目になった為、前者の方法を取ると他のアプリケーションで、場合によっては非常に有用な、allow_url_fopen機能を使えなくなってしまいました。後者の方法は、特定のアプリケーションのみの設定を変更するのに有効ですが、INI_SYSTEM設定項目であるため実際には無効に設定できなくなってしまいました。

セキュリティ上の意味は容易に理解できるであろうと、internals@list.php.net にallow_url_fopenの設定を

デフォルトOFF
INI_ALLへ変更

するように提案して見たところ議論が結構荒れています…
この設定が安全かつ不必要な機能制限が無く、最も良い設定と思うのですが…

# allow_url_fopen_includeのようにinclude/require文用の設定
# を追加するのも良いですが、デフォルトOFF、INI_ALLであるべき
# と思います。