月: 2006年6月

MLの宛先にユーザのメールアドレスを使用しない方が良い?

ディスカッションを行うMLを除き「MLのTo:(宛先)に送信先のユーザメールアドレス(各個人のメールアドレス)を記載するのは迷惑だ」と思っていました。理由は次の通りです。

– MLの情報は私信ではない。したがってTo:である必要はない。
– To: に自分のメールアドレスが入っている場合には特別なフィルタ処理行っているユーザが多いと思われる。

商用サイトのMLなどはTo:に設定されている特別なフィルタ処理を考慮して、ユーザがメールを読んでくれやすいよう「確信犯」でTo:に送信先メールアドレスを記載していると思います。

確かに昔はTo:に送信先に個人のメールアドレスアドレスを使っていると読まれる確立が高くなり、商用MLの送信者にはある程度のメリットがあったと思います。しかし、最近はSPAMが多くなりすぎていてデメリットの方が多いのではないかと思います。

例えば、私の場合フィルタルールでTo:かCc:に自分のメールアドレスが記載されている場合、特別なフォルダに保存されて分かるように分類しています。しかし、詐欺・迷惑メールは一部の商用MLと同じくTo:に自分のメールアドレスを記載して送信してきます。MLのメールも詐欺・迷惑メールも送信先のユーザに読んでほしいので同じ事をしてきます。その結果、私の個人アドレス宛のメールフォルダには詐欺・迷惑メールと振り分け処理を行っていないMLのメールが保存されます。

詐欺・迷惑メールの多くはSPAMフィルタでほとんど削除されますが、量が多すぎて一部はフォルダに残ってしまいます。MLのメールも残っているのですが、MLのタイトルと迷惑メールのタイトルはたいして違いが無い場合も多いので間違ってMLのメールをSPAMメールとマークしてしまう場合があります。(AmazonのメールとかSPAMになっていてキャンペーンのクーポンメールがゴミ箱に行きかけたことも…)一旦、迷惑メールと判定してしまうとかなりの確立で同じMLからのメッセージは迷惑メールとして処理されてしまう事になります。これでは、「ユーザに読んでほしいからTo:にユーザの個人メールアドレスを設定する」意味が無いと思います。

確かに私信に近いカスタマイズされたML(というよりはダイレクトEメール)も多いですが、customers@example.comの様なアドレスを使い、タイトルのプレフィックスにサイト名を書いて「example.com: あなたにお勧めの10冊!」等と書いた方がスパムに分類される確率が低くなると思います。特にユーザが「迷惑だ」と思っていない場合には効果が高いと思います。

まっとうなMLは宛先にユーザのメールアドレスを使用しない方が良いように思います。

システムが自動的に送信するメールでも一部のメールにはTo:にcustomers@example.comのようなアドレスは向かない物もあると思いますが、多くの商用MLはTo:に個人メールアドレスを設定する必要は無いように思えます。

良く知られたPHPの脆弱性…

また新しいsafe_modeをバイパスできる脆弱性を利用した攻撃方法を見つけた人がいるようです。safe_modeをバイパスできる脆弱性なので大きな問題とは思いませんが、

CVSS Severity: 7.0 (High)

となっていますね….

具体的には

This issue is due to an input validation error in the “error_log()” function that does not properly validate the destination parameter, which could be exploited by malicious users to bypass the safe mode feature by supplying a “php://” wrapper with directory traversal sequences as a destination argument.

の様なことができてしまう事が問題としてあげられています。

<?php
$file=””; # FILENAME
error_log(“<? echo \”cx\”; ?>”, 3,
“php://../../”.$file);
?>

が攻撃例としてあげられています。最初のアドバイザリメールには6/10にPHP開発者に連絡しレスポンスが無かったと書いてあります。

このようなケースはsefe_modeの範疇外(sefe_modeはfail safeを提供する機能。攻撃から防御する機能ではない)なので無視された、ということだと思います。

ちなみに、セーフモードはPHP6では無くなります。個人的にはfail safe機能としては非常に有用な機能だと思いますが、セキュリティホールとしてレポートされすぎるので削除されます。以前にも書きましたが「なんだかなぁ」と感じます。

システム上のファイルにアクセスしたければデータベース経由や他のライブラリ経由でアクセスすればアクセスし放題なんですけどね… safe mode = sandbox と勘違いしているユーザが多すぎです。

安全と思われていて実は危険なソフトウェア15種 – 宣伝のためのホワイトペーパー

ホワイトペーパーというものは基本的に宣伝の為に作成するものであって「危険なソフトオウェア15種」というホワイトペーパーも宣伝の為のホワイトペーパーでしょうね。PDFのダウンロードには登録が必要らしい(?)のでPDF自体は読んでいません。「危険なソフトがインストールされていないかチェックするにはこちらを見てね」といった旨の記述がPDFにはあるらしいです。

マーケティングではパブリシティーを有効活用するのは重要な事です。このPDFはマーケティング的には、少なくとも日本では、成功していると思います。自社製品の宣伝目的だったとしても有用な注意喚起も記載されているようなので「宣伝だからダメ」と言うことは無いと思います。

このPDFによると1位はFirefox 1.0.7だそうです。Firefoxは1.0系はメンテナンスされてませんよね。Google AnalyticsのログによればこのブログにFirefoxでアクセスしているユーザのうち約13%は修正済みの脆弱性があるFirefoxでアクセスしていると思われます。賛否両論あるようですが自分が使っているソフトウェアがメンテナンスされているか知っておく事は重要だと思います。多くのユーザは自分が使っているソフトウェアがメンテナンスされているものなのか、されていないものなのか気していないです。時にはこういった注意喚起も必要と思いますが、これらを目にするのは普通のユーザではなくコンピュータを生業とする人達がほとんどでしょうね…

アンチウィルスソフトは普通に使われるようになりましたが、インストールされているがメンテナンスされている物か、脆弱性を含まないかチェックするソフトウェアがあると非常に便利だと思います。アンチウィルスソフトのメーカにがんばってもらって追加機能として付けてほしいですね。ウィルスのシグニチャ更新に比べればかなり簡単(?)にデータベースの維持はできそうに思えます。

とろろで、このホワイトペーパーにMS製品が無いのは選択基準のせいらしいですが、IEが載っていないのは危険なことは周知の事実だからとか?IEが危険と書いても話題にならないからとか?(実際「IEが危険です」と書いても話題にならないでしょうね)しかし、ユーザ数なども含めて選択するなら最も危険なアプリはダントツでIEだと思います。

セキュリティ対策は全体的な整合性が重要ですから、バージョンが古くて危険なソフトウェアなってしまっているソフトがインストールされている場合に警告するアプリは必要ですね。何故今までメジャーになるような製品が無かったのでしょうね?

ところで自分で「よくあるバージョンが古くて危険ソフトウェアのトップ5リスト」を作るならこんな感じでしょうね。

– Webブラウザ
– Webブラウザのプラグイン(Flash、音声、映像再生のプラグイン)
– インスタントメッセンジャー(Skypeもこれに含む)
– メールクライアント
– PDFリーダ(Acrobat Readerだけでなく、Linux等で利用されているフリーPDFリーダにも脆弱性がある)

なんだかここに取り上げているホワイトペーパーと同じようなリストになりますね。

爆発ノート

既に色々なところで紹介されているようですが、本当すごいですね、この爆発の仕方は。PCのリコール情報にも注意が必要ですね。

ところで燃料電池は可燃性の燃料を使いますがやはり爆発の危険性があるのでしょうかね?

また別の文字エンコーディング問題

HTTPヘッダでASCIIを文字エンコーディングに設定していてもISO-8859として解釈してしまうブラウザ(Firefox、Operaなど)とASCIIとして解釈するブラウザ(IE)とが在るためIPSなどのフィルタをすり抜けられるかも知れない、という話。珍しくIEの方が標準に厳格(?)に対処しています。

リンク先のページをIE 6で表示すると7bit ACSIIでは無視されるべき8ビット目が無視され読める文字列が表示されますが、Firefox 1.5では8ビット目を無視せずISO-8859として解釈してしまい文字化けしているように表示されます。IEの動作の方が仕様的には正しいように思えますが、Firefox、Operaの動作の方が安全ですね。

どちらかと言うとWeb開発者が注意すべき問題ではなく、JavaScriptの脆弱性を利用した攻撃などエンドユーザ側で問題になる可能性がある問題です。しかし、<, >等がどうなるのかは書いてないですね。IE6ではHTMLの特殊文字も普通に8ビット目を無視して処理するのかな?文字エンコーディングの取り扱いが関連ではいろいろありすぎで本当に困ります…

このブログには書いていませんがBOM(バイトオーダーマーク)でフィルタをすり抜けられる問題もありました。文字エンコーディング関連の問題はまだ出尽くしたとは思えないのでこれからも色々出てくるのでしょうね。

プログラム等、内部の文字エンコーディングは決めておくべき

あるMLでプログラム内部の文字エンコーディングは決めない事にしている、と言う意見を目にしました。プログラムを利用するシステムにより複数の文字エンコーディングがあるのでプログラム内部の文字エンコーディングを指定しない方が便利であることが理由だそうです。このような方針でも安全なプログラムは書けますが、セキュリティ上お勧めできない設計方針と思います。

2000年2月に公開されたCERTのXSS脆弱性問題の中でダイナミックページの文字エンコーディングは必ず指定する、と言う対策が書かれていますが、これと同様の理由でセキュリティ上の問題になってしまう場合があります。XSS問題としては文字エンコーディングを指定しない場合、ブラウザが文字エンコーディングを自動的に検出して表示する事になります。ブラウザが文字エンコーディングを自動検出すると、検出した文字エンコーディングによってはXSSが可能になる場合があります。

確か、昨年くらいに「文字化けしたページの文字エンコーディングを変えるとXSSが可能になる」と言うことでページの文字エンコーディングを変えると意図しないJavaScriptが実行される危険性が指摘されていました。こちらは文字エンコーディングの自動認識ではなく、ユーザが明示的に文字エンコーディングを切り替える事により発生する問題ですが、文字エンコーディングの妥当性を確認していれば防げる問題の一つです。

プログラム等の文字エンコーディングを指定しない場合、複数の文字エンコーディングを含むおかしな文字列を作ってしまうリスクがかなり高くなります。おかしな文字列がプログラム内部にもありえる事を前提にコードを書くとなると、必要以上に文字エンコーディングの妥当性をチェックしないと、コードの安全性を担保できなくなります。

同様にデータベースの場合にも文字エンコーディングを指定せずに複数の文字エンコーディングを含むデータを保存している場合があります。このような運用も文字エンコーディングに関連する脆弱性を発生させやすくなる原因になります。

互換性がある文字エンコーディングでも表現できる文字が異なるので困る場合があります。例えば、UTF-8とUTF-16ではUTF-8で表現できる文字はUTF-16よりかなり多いです。(注:実際にはUTF-16でも確か200万ほどのコードポイントを表現できるので、現状で困ることはほとんどないです。実際にはSJISを使っていて困る、などの場合が多いと思います。)

セキュリティ的にはシステム内部で利用する文字エンコーディングを指定しない場合と指定する場合を比べると、文字エンコーディングが指定されている方がはるかにコードが分かりやすく安全性も高くなると思います。プログラム等、内部の文字エンコーディングは指定できるシステムの場合、必ず文字エンコーディングは決定しておくべきと考えています。システムによっては内部で使用する文字エンコーディングは決め打ちでUnicodeを採用しています。

PHPはプログラム内部の文字エンコーディングを指定できます。デフォルトはISO-8859-1になっていてHTTP入力、スクリプトの文字エンコーディングを内部エンコーディングに自動的に変換する場合に利用されます。PHP6に備える意味からもUTF-8を内部エンコーディングに設定するのが良いかと思います。

French Microsoft Web site hacked

The attackers were likely able to penetrate the server running the Web site due to faulty configuration, Microsoft said in a statement Monday.

設定ミスだそうです。いわゆるページの改ざんだったようです。

http://experts.microsoft.fr/default.aspx

http://www.zone-h.org/index2.php?option=com_mirrorwrp&Itemid=44&id=4181592

の様な画面に改ざんされていたそうです。
トップページを改ざんされていたのですね。これは痛い…

Excel 0 Day攻撃のFAQ

メモ。Excel 0 Day攻撃のFAQ。

6/14にポストされ、6/16にマイクロソフトも脆弱性を確認とあります。XP上のExcel 2003/2002では確認されているそうです。Excel 2000は幾つかのベンダが影響あり、としているそうです。

最近MS Officeアプリの0 Dayが流行っているので注意が必要と思います。次はOOoとか?

PHPのバージョン統計 – 半数はPHP4.3ユーザ

PHP 4.4.2が増えてきているようですが、半数近くが4.3ユーザだそうです。
PHP 5系は低空飛行の状態のようです。

http://www.nexen.net/images/stories/phpversion/200605/evolution.milieu.en.png

アップグレードがいかに難しいかを表している数値だと思います…
セキュリティホールもあるのでスクリプトで対策するなど必要な処置やセキュリティ上の評価が行われているか心配になります…

PayPalのIDが盗まれているらしい

Netcraftによると、PayPalのIDが盗まれているらしい。

Webサイトの開発者にはセキュリティ対策としてHTTPSだけでは意味が無いことは100も承知だと思いますが、普通のユーザは「HTTPS=安全」と刷り込まれていると思います。HTTPSを使っていてもXSSに脆弱だと意味が無い良い例になりそうです…

HTTPSなのに接続先サイトを偽証できる理由は簡単です。XSSに脆弱であるため、ページの中身をJavaScriptで書き換えて別のサイトのユーザ名とパスワードを送信できてしまっているようです。当たり前の事なのですが一般ユーザはこのようなことができる事を知らないので、ブラウザの接続先とSSL/TLSの証明書が正しければ「目的のサイトにアクセスしている」と思います。今回の本当のサイトに不正なページが表示され別サイトに誘導されるケースでは用心深いWeb開発者でも普通にだまされる可能性が高いと思います。
# アクセス先のURLがおかしい、と気が付く可能性も高いですが。

WebアプリからXSSが無くなる日があるとしても当分来ないでしょうね…

これもspam? Wikiページの一部削除

これまでに時々あったのですが割りと頻繁にアクセスされている私のWikiページの一部が削除されている場合があります。「操作ミスで誤って削除したのかな?」と思って気にもしていませんでしたが、もしかしてこれもSPAMなのかも知れませんね。変なSPAMプログラムが削除しているのか?人間が削除しているのか?どちらにしてもPukiWikiにもチューリングテストが必要かも知れません。しかし、トラックバックにチューリングテストは難しいですね…

昨日気が付いたspamっぽい削除の痕跡は次の通りです。

http://wiki.ohgaki.net/index.php?cmd=backup&action=diff&page=Momonga%20Linux%2FSubversion%A5%B5%A1%BC%A5%D0%B9%BD%C3%DB&age=7
http://wiki.ohgaki.net/index.php?cmd=backup&action=diff&page=Momonga%20Linux%2FSubversion%A5%B5%A1%BC%A5%D0%B9%BD%C3%DB&age=8

このページの説明だけでWebDAVを使ったSubversionサーバが作れるようになっていたのですが後半部分が削除されています。

222.7.56.51 – – [04/Apr/2006:18:32:05 +0900] “POST //index.php HTTP/1.1” 302 – “http://wiki.ohgaki.net//index.php?cmd=edit&help=true
&page=Momonga%20Linux%2FSubversion%A5%B5%A1%BC%A5%D0%B9%BD%C3%DB” “KDDI-SA34 UP.Browser/6.2.0.9.1 (GUI) MMP/2.0”

このIPはAUのゲートウェイのIPであり確かにAUの携帯からリクエストが来ていたことが分かります。前に気が付いたときにもAUの携帯からのアクセスであった気がします。携帯であまり大きなデータをPOSTする事は無かったので気にしたことが無いのですが、POSTサイズに制限に引っかかっているのかな? そのうち調べてみよう。でも、ご存知の方、教えて頂けると助かります :)

PukiWiki 1.4.7

PukiWiki 1.4.7が6/12にリリースされていますね。文字エンコーディングにUTF-8を使っていると思われるバージョンもあります。

ホームページには最新版は1.4.6と記載されているのでリリースと言うよりダウンロードできるようにしてあるだけかな?

ところで今朝私のWikiにPukiwikiであるにも関わらず海外のSPAMMERからスパムが来ていました。MenuBarを仮想リンクネット(Link Farm, Splog)へのリンクに書き換えられていいました。ほんの少しだけ調べてみるとこの人たちは出来の悪いWeb Botを作っていたりいろいろ悪さをしているようです。ちなみにドイツの会社のようでした。

スパム防止は基本機能として必要な時代になりましたね…

本気だったのですね – 日本で検索エンジン開発

ある官僚が「100億あれば新しい検索エンジンがつくれるかな」と言った発言をしていた、と報道されていたのですが本当になったようです。

日立製作所や富士通、NTTなど電機、情報通信大手と東京大など国内の約30社・機関が共同で、日本独自のインターネット情報の検索エンジンの開発に乗り出す。16日にも研究組織を発足させ、2年以内の実用化を目指す。国も予算面などで支援する。

エンジン自体から再開発なのでしょうか? コアのエンジン部分だけでもオープンソースになったりすると非常にうれしいのですが無理でしょうね。この話、実現性は50%くらい、と思っていたのですが良い物ができる事を期待します。

銀行のキャッシュカードに有効期限をつけたらどうでしょう?

一般の利用者の安全性確保もできますし、不正口座を無くすにもかなり効果的だと思います。クレジットカードだと損害を補償しなければならないがキャッシュカードだと保障しなくても良い場合が当たり前だったので「キャッシュカードに有効期限をつける」と言う発想は金融機関になかったのだと思います。キャッシュカードにも有効期限をつけた方が良いですね。

結構知られている(?)と思いますが1985年までに作られたキャッシュカードには暗証番号が記録されている物もあるそうです。比較的最近のキャッシュカードでも一部を書き換えするだけで利用できてしまうカードもあるようです。今はこういったカードを持っているATMを利用すると自動的にアップグレードされたりするでしょうか?それとも最低限、キャッシュカードを更新する必要がある旨のメッセージが表示されたりするのでしょうか?

ネット取引用にOTP(One Time Password)を採用している銀行もありますが、ネット取引の安全性を担保するには別デバイスでのトランザクションの認証が一番安全だと思います。随分前、ソフトウェアキーボードがセキュアキーボードと呼ばれていた頃にこのブログに実装案(携帯等で取引を確認後に署名する方法)を書きましたが今のところ似たような方法を採用した銀行は知りません。誰も思いつきそうな方法ですが、もしかして特許の問題などがあるのかも知れませんね。

これならどうでしょう?トランザクション番号を携帯などの別端末から入力して認証を取った取引だけ許可するとか? これなら特許問題が発生するような

詐欺かな – 「出会い系サイトを運営しませんか?」メール

「出会い系サイトを運営しませんか?」とメールが来ていたのですが詐欺っぽいですね。こんなメールでも騙される人はいるのでしょう。「出会い系サイトを利用しませんか?」という内容のSPAMは山ほど来ているのですが「出会い系サイトのサイトを運営しませんか?」というSPAMは初めてです。(来ていたのかも知れませんが気が付いたのは初めて)100%の確証は無いのでメール自体は引用しません。地域別にフランチャイズと言う触れ込みですが”普通”はインターネットサイトを地域別に営業活動するものではありません。個別訪問でもして利用者を集める、ということでしょうか? まずは50万からで自宅サーバでもレンタルサーバでもOKだそうです。はっきり言って詐欺でしょう。

# 100%詐欺でも無くてもSPAMメールの送信、検索エンジンSPAM
# に利用され、そして全く利益にならないのが落ちでしょう。

既に他で詐欺であろうことは指摘されていると思いますが、少しでも騙される人が減る事に役立てば良いのですが…

ちなみにこれは日本語のメールです。きちんと日本人が書いたと思われる文章でした。英語のSPAMにはこの手のネットビジネス物の詐欺と思われる物はかなり多いのですが日本語では初めて見ました。