カテゴリー: Windows

実は守れていないローカルネットワーク

ファイアーウォールで守っている、プロキシも使っている、だからインターネットからローカルネットワークは守られている!

半分あたりですが、半分はずれです。よくあるネットワークシステムではローカルネットワークはインターネットから半分くらいしか守っていません。

まだ対策をしていない場合は実施することを強くお勧めします。

クロスサイト攻撃からローカルネットワークを守ることは簡単です。簡単なので会社、特にシステム開発/運用部門は必ずローカルネットワークへのクロスサイトアクセスを禁止&検出すべきです。クロスサイト攻撃とはクロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリ(CSRF)の事です。基本的な対策ですが、意外に実施されていることが少ないようです。

クロスサイト攻撃はWebシステムに対するよくある攻撃手法です。少しの手間でインターネットからローカルネットワークに対するクロスサイト攻撃を完全に防止することが可能です。

もっと読む

Rails4 Windows `require’: cannot load such file — sqlite3/sqlite3_native (LoadError)

多分、WindowsにRails4をインストールしようとして困っている方も多い(?)と思うので簡単にエントリを書きました。

Rails4をWindowsで使うにはWindows版のRuby 2.0とDevKitがあれば良いとあったのでこれらをインストールした後に

gem install rails

を実行するとしばらくするとインストールが完了したが、テストアプリを作り実行しようとしたら もっと読む

DLLハイジャック対策

DLLハイジャックが可能なアプリケーションは多数見つかっています。

http://www.corelan.be:8800/index.php/2010/08/25/dll-hijacking-kb-2269637-the-unofficial-list/

しかし、対策はあまり取られていません。
いちいち対策するのは面倒なのでKB2264107のFIX ITでネットワーク共有、WebDAVからのロードを無効にする方がよいでしょう。

ユーザができる対策はこちら
http://support.microsoft.com/kb/2264107
https://www.microsoft.com/technet/security/advisory/2269637.mspx#EGF

開発者ができる対策はこちら
http://msdn.microsoft.com/en-us/library/ff919712%28v=VS.85%29.aspx

.Net用OCaml – F#の入門書 – Expert F#

OCamlはプログラミングコンテストで優勝するチームや開発者御用達の言語であることは以前から知っていましたが、個人的に利用しようと思ったありませんでした。しかし、最近関数型言語の人気が非常に高まってきています。関数型言語の簡潔なコードや副作用の少ないコードの生産性が認められてきたからだと思います。

OCamlを勉強しようかと思いましたが、AmazonでちょうどF#の本(英語版)が昨年末出版されている事を見つけて購入しました。
もっと読む

IEの脆弱性

CVE-2007-3896は例のIEのバグでなくて呼び出し側のFirefoxの問題云々の件です。

The URL handling in Windows XP and Windows Server 2003, with Windows Internet Explorer 7 installed, allows remote attackers to execute arbitrary programs via invalid “%” sequences in a mailto: or other URI handler, as demonstrated using mIRC, Outlook, Firefox, Adobe, Skype, and other applications. NOTE: this issue might be related to other involving URL handlers in Windows systems, such as CVE-2007-3845.

結局、mIRC、Outlook(これ以外のMS製品もあったはず)、Firefox、Adobe(Readerの事だと思います)、Skypeなどあまりにも多いのでIEの脆弱性にしてしまおう、と言うことなのだと思います。

基本的には呼び出し側が問題なく動作するデータを送るようにするべき、つまりIEの脆弱性でなく他のアプリの問題である可能性が高いと思います。(確信するにはリサーチが必要)

Cとバッファオーバーフローの関係と似ていると思います。余計分かり辛い??
基本的にはデータのセキュリティ対策の責任はCalleeでなく、Callerにある。SQLにヘンな文字列が入っていてSQLインジェクションされないようにする対策はDBサーバ(Callee)でなく、プログラム(Caller)にあるのと同じ事だと思います。

ただし、DBサーバ側(Callee)でも簡単に不正なデータであることがチェックできるような入力(例えば、壊れた文字エンコーディング)であっても処理してしまうと問題の責任はCalleeにあります。

どっちなんでしょうね。

Windows Vista用パッチ

http://support.microsoft.com/kb/941649
http://support.microsoft.com/kb/941600

1台ハイバーネーションからの復帰にやたらと時間がかかるVistaがあるのですが、一応このパッチで対応している事になっています。KB938194,KB938979のどちらかが同じ問題を対処したことになっていましたが私が持ているPCには役に立ちませんでした。今回のパッチは役に立つのかも知れません。

http://support.microsoft.com/?kbid=941649

この更新は、互換性と信頼性と Windows Vista の安定性が向上させます。 このアップデートには、次の向上が含まれます。• モバイル デバイスのバッテリの寿命を拡張します。
• uninterruptable な電源装置(UPS)を使用するポータブル コンピュータのとデスクトップ コンピュータの安定性を向上させます。
• スタートアップ アプリケーションのメニューを開くと、 Windows Vista の信頼性を向上します。
• Web ページ開くと、 Internet Explorer の安定性を向上させます。
• ワイヤレス ネットワーク サービスの安定性を向上させます。
• 優れるタイミング構造体を使用しようと Windows Vista の起動時間を短くします。
• 一定期間が Windows Vista に発生した後、復旧時間を短縮します。
• Photo スクリーン セーバーを終了しようとする復旧時間を短縮します。
• Windows PowerShell の安定性を向上させます。
また、次の Windows Vista での問題がこの更新で解決します。• サードパーティ ウイルス対策ソフトウェアの一部のアプリケーションに影響する互換性の問題。
• Windows Vista-based コンピュータが特定のドライバのネットワーク構成を使用する場合、発生する信頼性問題。

http://support.microsoft.com/?kbid=941600

ロールアップ修正プログラムに修正される問題
925528 (http://support.microsoft.com/kb/925528/) 停止エラーは、 2 GB または複数の RAM を持ちそして NVIDIA nForce USB コントローラを使用している Windows ベースのコンピュータで発生します。
929734 (http://support.microsoft.com/kb/929734/) スリープまたは休止から Windows Vista-based コンピュータを再開した後、問題が発生することがあります。
930568 (http://support.microsoft.com/kb/930568/) Windows Vista-based コンピュータがスリープまたは休止へ状態とすると、エラー メッセージ:「 STOP 0x000000FE BUGCODE_USB_DRIVER」
929478 (http://support.microsoft.com/kb/929478/) ポータブル Windows Vista-based コンピュータから組み込む光ドライブを削除するために、ハードウェアの安全な取り外しオプションを使用した後に、ドライブに再接続することができません。
930570 (http://support.microsoft.com/kb/930570/) スリープまたは休止から Windows Vista-based コンピュータが起きるとき、 Usbhub.sys プロセスでのエラー メッセージ:「 STOP」 0x00000044
928631 (http://support.microsoft.com/kb/928631/) Windows Vista がスリープまたは休止から再開された後、正しくもう USB デバイスが機能しない可能性があります。
933433 (http://support.microsoft.com/kb/933433/) RAM または複数のを持つ Windows Vista-based コンピュータで USB マイクを使用すると、品質を記録するのが不十分です。
933442 (http://support.microsoft.com/kb/933442/) USB 複合デバイスはデバイス マネージャでの Windows Vista を実行しているコンピュータ上の装置を無効にした後、そして有効に次にした後、動作しません。
934633 (http://support.microsoft.com/kb/934633/) Windows Vista-based コンピュータに USB 多機能プリンタ デバイスを接続すると、プリンタ オブジェクトの 2 のインスタンスを作成し、最初のインスタンスが動作しません。
934796 (http://support.microsoft.com/kb/934796/) USB 複合デバイスを実行している Windows Vista-based コンピュータでのエラー メッセージ:「 STOP」 0x000000FE
933824 (http://support.microsoft.com/kb/933824/) ハードウェアの安全な取り外し機能と「取り出す」エクスプローラのコマンドが Windows Vista-based コンピュータが接続されたアップル iPod で正しく機能しません。
935782 (http://support.microsoft.com/kb/935782/) “選択的に中断する” UHCI USB コントローラを使用する Windows Vista-based コンピュータでのモード長い時間 USB デバイスが再開されるようとります。
935783 (http://support.microsoft.com/kb/935783/) スリープからの Windows Vista-based コンピュータを再開すると、 USB デバイスからの予期しない現象が発生することがあります。

次の問題については、以前サポート技術情報(Microsoft Knowledge Base)に記載されませんでした。• コンピュータがサスペンド状態または休止状態から再開するとき、コンピュータがコンピュータは、応答を停止します。 また、「 0x9F」にブルー スクリーンの STOP メッセージを表示します。
• コンピュータは、長い時間サスペンド状態または休止状態から再開するのにとります。
• VIA コントローラを使用する場合、長い時間サスペンド状態または休止状態から再開するのにとります。
• AuthenTec USB 指紋リーダーを使用する場合、コンピュータは、コンピュータの応答を停止します。 また、「 0xFE」にブルー スクリーンの STOP エラーまたは「 0x9F」にブルー スクリーンの STOP エラーを表示します。
• USB Bluetooth オーディオ デバイスを使用する場合、コンピュータは、コンピュータは、応答を停止します。
• 拡張 ホスト コントローラ インターフェイス(EHCI)コントローラを使用する場合、長い時間サスペンド状態または休止状態から再開するのにとります。
• USB デバイスを削除すると、コンピュータは、コンピュータは、応答を停止します。 また、「 0xFE」にブルー スクリーンの STOP エラーを表示します。
• コンピュータがサスペンド状態または休止状態回複数再開するとき、「 0xFE」にブルー スクリーンの STOP エラーを表示します。

SP1リリースまでにかなり時間がかかるので地道にこれらのアップデートを適用しなければならないですね…

企業ユーザはVistaにアップグレードすべきか?

以前のエントリでVistaへのアップグレードを薦めていますが、これは個人ユーザはアップグレードした方が良い、できればすべての個人Windowsユーザがアップグレードした方が良いと思っています。非常に多くの個人ユーザPCがボット化されている現状を考えるとXPよりVistaのセキュリティモデル(UAC)の方が優れていることは明らかです。

しかし、企業ユーザも早くVistaにアップグレードするべきとは考えていません。私が書かなくでも既に多くのブログや記事などでVistaへのアップグレードで発生する問題とXPで提供されている機能の考慮すると、アップグレードするメリットは多くない事は明らかです。アプリケーションの互換性チェックとアプリケーションの修正やバージョンアップ、実際のアップグレード作業には非常に多くのコストが必要になります。XPでも適切に管理されているPCであれば、ホームPCに見られるような「常時管理者」でログインするセキュリティ上の問題もありません。既に適切に運用・管理されているXPであれば、Vistaにアップグレードする事により、より良いセキュリティが提供される訳でもありません。

一般的な企業環境ではWindowsのクライアントはドメインに参加し、一般ユーザはドメインの通常ユーザとしてログインして利用します。ホームPCの様に管理者グループの所属するユーザでログインするような事はないはずです。普通の企業のWindows PCはファイルアクセス権限も適切に管理されているので、一般ユーザはProgram FilesフォルダやWindowsフォルダに書き込みを行えません。

適切に運用・管理されている企業のWindowsクライアントは家庭のPCのようにUACによるセキュリティ上のメリットはありません。既にXPを適切に運用している企業はVistaへのアップグレードは「できる時に行えばよい」程度の優先度です。

Vista無用、有用どちらの議論にしても対象がだれなのか明確にした方がよいですね。企業ユーザはサポート・互換性の問題があるのでVistaを選択する必要性はないですが、個人ユーザが新規にPCを購入する場合は、既に持っているものでVistaで使えないなどの問題がない限り、迷わずVistaにするべきと思います。

# XP -> Vistaへのアップグレードは難しくないですが
# アップグレード後の調整は素人向けとは言えないので
# 自身の無い方にはお勧めしません。

# とはいっても自分が普段使っているアカウントがAdministrators
# グループに所属している方はVistaへのアップグレードをお勧め
# します。

Windows XP -> Vista アップグレード

Windows XPからVistaへアップグレードする事に懐疑的な意見もありますが、一般ユーザの多くがVistaに乗り換えるだけでもかなりのスパイウェアなどのマルウェア被害を防ぐ事が可能になると思っています。最も効果的な機能はUAC(User Access Control: 権限がたりない場合や管理者権限を必要な操作の際にユーザ認証や確認を行うダイアログを表示する機能)ですがコントロールパネルのユーザアカウントで簡単に無効(一応有効にする事を推奨するコメントはありますが…)できるのはどうかと思います。サポート負荷を考えると仕方ないとは思いますがもう少しわかり辛い方法(レジストリの編集、ポリシーの変更)でも良いような気がします。

個人的にはUACがVistaを買う一番の理由ですがCNETでは全然相手にされてないですね…

http://www.cnettv.com/9710-1_53-26068.html?tag=bubbl_1 (英語のビデオ)

普通のマルチユーザOSでは通常作業は通常ユーザで行います。特別な権限が必要な場合は別コンソールでログインしたりsudoコマンドを使ったりします。Windows XPまではrunasコマンドくらいしか別権限でコマンドを実行できませんでした。このrunasコマンドは使い勝手も悪く、管理者がよく使用するコントロールパネルの実行など、実用的なものではないです。XPのデフォルトユーザのOwnerは管理者権限を持っていて普通のユーザは普通にシステム管理者権限でマルチユーザOSを使っています。この点ではシングルユーザOSと同じレベルという時代遅れな使い方になっていました。Vistaは初めて普通ユーザは普通のユーザ権限で使えるようなったWindowsという点だけで十分にアップグレードに値すると思います。RSA Conferenceでも指摘されていすが最近のマルウェアはカーネルレベルで存在を隠す様になってきています。PCを”普通”は”普通のユーザ”で使うこことが当たり前にならなければならないと思います。

# コンピュータに詳しい方でも自分のアカウントがAdministratorsに所属
# している方も多いです…
# 本来ならUACのようなあって当然の機能はWindows NT/2000で導入される
# べきだったと思います。UACを追加するXP SP3とかあればよいのですけ
# どね。

さて本題(?)のXP->Vistaへのアップグレードですが、さすがに使っているPC環境をアップグレード(新規・別途にインストールではなくアップグレード)をベータ版ではする気にならなかったので試したことがありませんでした。正規版のDVDでいくつかの本当に使っているWindows XPをVistaにアップグレードしてみました。

実際に使っているPCをVistaにアップグレードして気づいたのはマウントされたボリュームのアクセス権限エラーです。Vistaにアップグレードするとファイルのアクセス権をかなり安全な状態にしてくれますが、マウントされたボリュームには問題があるようです。アクセス権限を非常に緩い設定(ファイルおよびボリュームの両方)に変えてもボリュームをまたぐファイルの移動で「権限がない」とエラーになってしまうようです。

仕方がないのでファイルをコピーしてコピー元のファイルを消して移動しています。MSのサイトをさっと検索してみましたが同様の問題は登録されていないようでした。何か設定を変えると移動できるようになるのかも知れませんが今のところ解決方法は分かっていません。

XPでは普通にアクセスできていたマウントしたボリュームは、アップグレード後にはファイルの作成さえできない状態(アクセスが全くできない状態)だったのでNTFSのACLに慣れていないユーザはかなり戸惑う可能性があります。

いろんな物(ネイティブなVGAカードドライバ、AU Music Port、省電力制御アプリ、ネットワーク設定アプリなど)が使えなかったりありますが普段使用しているアプリケーションはすべて問題なく動作しています。

追記:
私はVistaは買いだと思います。一般コンシューマがXPよりマルウェアに感染するリスクはかなり低下すると思います。XPにUACがあれば特にVistaをお勧めすることもなかったと思います。

Vistaにも悪い部分もあります。以下が参考リンク。

Wait! Don’t Buy Microsoft Windows Vista
http://www.pcworld.com/article/id,128669-page,1/article.html

10 reasons not to get Vista
http://apcmag.com/5049/10_reasons_not_to_get_vista

BadVista.org
http://badvista.fsf.org/

Windows税の返金?

少し古いですがLinux.comに「Windows税の返金をDELLから受けた」といった記事が載っています。

私はWindowsも使うのでサーバ以外であれば返金して欲しい、と思わないですが日本でも可能なのかと少し気になります。何時間もかけて$52.50の返金だったので著者自身も勧めてはいません。

Tipsとして

  • 返金してもらう資格がある(日本の法律ではどうなんでしょう?)
  • すべて(やり取りを)記録する
  • (時間の浪費や面倒なやり取りを)覚悟しておく
  • 礼儀正しく
  • 粘り強く
  • 愛想よく

と記載されています。コールセンター構築に関わっていた事があるので「礼儀正しく」「愛想よく」と書いてある点には好感が持てます。

しかし、メーカーサイドとしてはこの手のリクエストは厄介ですね。バンドルしたソフトなどの返金を求められても困りますね… しかし、LinuxやBSDが代替OSとして利用可能なのでOS無しでの販売もして欲しいです。個人的に困ったのは欲しいノートPCがWindows XP Homeしかバンドルしてなくて仕方なくWindows XP Homeを買わされたで事した。後でステップアップグレード版でHome->Professionalへアップグレードしました。Vistaでも同じような事で困るかも知れません。

権限昇格の問題

権限昇格が可能な脆弱性がWindows Vistaにもある、と言う話。

The PoC reportedly allows for local elevation of privilege on Windows 2000 SP4, Windows Server 2003 SP1, Windows XP SP1, Windows XP SP2 and Windows Vista operating systems.

セキュリティメモの方が早かったですね。
http://www.st.ryukoku.ac.jp/%7Ekjm/security/memo/2006/12.html#20061225_CSRSS

関連
「Vistaの攻撃コード、5万ドル」——明かされる闇市場の相場
http://www.itmedia.co.jp/news/articles/0612/19/news006.html

Vistaのマルウェア感染はメーラーの実装による――Microsoftが検証結果公表
http://www.itmedia.co.jp/enterprise/articles/0612/25/news021.html

IE7は自動更新

ついに最終版IE7 (RC1)がリリースだそうです。もしかしたらRC2くらいまでは出るのかも知れませんが、IEブログを見ると今月には出るよと書いてもあります。RC1で特に大問題が無ければリリースするつもりなのでしょう。特にコンポーネントとして使っていたりActiveXを使っているユーザは動作検証の必要性が高いと思います。

IE7ダウンロード:
http://www.microsoft.com/japan/windows/ie/downloads/default.mspx
IE7概要:
http://www.microsoft.com/japan/windows/ie/ie7/about/default.mspx

IE7タブ一覧
タブがこのように一覧できるのは便利です。このイメージでは分かりませんが英文字だけアンチエイリアスがかかっていてぼけて見えるのは好きになれません。個人的にはアンチエイリアスがかかり過ぎたテキストは非常に読みづらく感じます。

正式版は自動更新となるらしいのでかなり数のユーザがIE7に乗り換える事になります。いっそのこと「IE7しかサポートしません。全ユーザ乗り換えてね」の方がありがたい…

ときどき見かけるのですがセッション変数にフォーム状態を記録しているアプリケーションがあります。フォーム状態をセッション変数として保存すると同時にページを開いた作業が行えなくなったり、おかしな状態になったりします。Webアプリケーションとして「同時に1ページしか開かない」といった前提は設けるべきでないでしょう。IE7はタブブラウザなのでこのようなWebアプリケーションは修正が必要になってくると思います。
# 複数のIEを立ち上げれば同じことですがマルチタスク(死語ですね)を
# 無視したアプリケーション設計の典型的な例です。そういうサイトでは
# WCAGで「使わないように」と言われている「新規ウィンドウでリンクを
# 開く」機能を頻繁に使っていたりします。矛盾しているとは思わない
# ませんか?

不適切なアプリケーション設計と言えばブラウザの「戻るボタン」を利用できないWebアプリケーションも比較的頻繁に見かけます。ウィザード型のインターフェースを持つフォーム状態を維持するためにアプリケーションの戻るボタンを利用しないとエラーになるWebアプリケーションがあります。CSRF対策の意味もあるのかも知れませんが、ブラウザの戻るボタン機能を無効にする対策が優れているとは思えません。不必要に利便性を義性にしている(ブラウザの戻るを押しら前の入力が全て無効になる)と言われても仕方ないと思います。CSRF対策なら別の方法を利用すべきですし、戻るボタンを押されたら前に入力されたデータの完全性が保証できないのであれば手抜きをしているか不適切なアプリケーション設計が原因と思われます。この手のサイトは「同時に1ページしか開かない」を前提にしている事も多いのでついでにこれらの不適切な設計も直してほしいです。私もチケット予約に利用している某サイトはこの手のサイトです… そして2回に1回はマウスの戻るボタンを押してやり直しているような気がします。

タブブラウザが当たり前になることで「1クライアント=1ページ」を前提とすることは非常識な設計になれば良いと思います。ついでにブラウザの「戻るボタン」が使えないサイトも非常識な設計になれば助かります。

マウスをぐるぐる回して高速化!?

前のエントリで

本当かどうか知らないのですが「マウスでぐるぐるポインタを回しているとPCが速く動作する」と言うバカバカしいと思われる知識

と書いたのですが、divineさんから「Word の「印刷」を劇的に速くする方法を発見。ホイールを上下するだけ!」と言うブログへのリンクを教えていただきました。(divineさん、ありがとうございます)「マウスをぐるぐるして高速化」はバカバカしいように思えるのですがマウスホイールを回すと実際に速くなる場合もあるようです。以下が速くスプールできる理由の推測です。

ご存知の様にWindows95より前(Windowsは3.1まで)はコーポレイティブ(非プリエンプティブ)なマルチタスク(アプリが自分で処理をOSに返す)でした。MS Officeの開発は少なくともWindows 3.xの頃(Windows 3.1上でOffice 4.xを実際に使っていました。実際の開発ルーツはもっと前でしょう)までさかのぼれますが、Wordの印刷処理をバックグラウンドで行うには現在のようにスレッドを作ってOSに任せる事が出来ませんでした。昔のアプリケーションではバックグラウンド処理を行うには擬似的にスレッドを実行するような感じのコードを書く必要がありました。この擬似スレッドの様に動作するコードのためにイベントが発生するたびに、より速いタイミングでバックグランド処理が行われる仕様となってしまったアプリケーションができたのだと思います。Wordのスプールの場合、再描画のスレッドとスプール処理が関連している(リンク先(Word の「印刷」を劇的に速くする方法)を参照)ためマウスのホイールを動かしてスクロールさせると速くスプール出来てしまう動作(仕様)になってしまったようです。
# 今のOfficeならこんなコードを捨てて普通にスプール用の
# スレッド作るだけで劇的にスプールが速くなると思います。
# 推測ですが。

とにかく「マウスでぐるぐる回しているとPCが速く動作する」というノウハウは100%嘘ではなく、一部では本当に処理が高速化できる!という事は書いておなければと思いここに書いています。(注:とは言っても単純に「マウスポインタだけ」をぐるぐるしているだけでは処理は速くなりません)

さて、マウスやキーボードを使っていると処理が速くなるケースはUNIXでもありえます。/dev/randomはマウスやキーボードなどからの入力を乱数生成に利用しているので一部のアプリケーション(特に強度が強い暗号処理)で乱数のシード待ち状態が発生する事があります。このような場合にはマウスポインタをぐるぐる回すと結果として処理が早く完了します。

Windowsだけでなく昔のMac OSもWindowsと同様にコーポレイティブマルチタスクでした。探してみればWindows、Mac OSがコーポレイティブマルチタスクだった頃の名残りで「マウスを動かしている(イベントを発生させている)と処理が速くなる」ケースは結構沢山あるのかも知れませんね。

マウスぐるぐるでアプリケーションの動作が高速化する場合が他にもあるでしょうか? もしご存知の方、是非教えてください。

IE 7のセキュリティ改善を台無しにするIE 7 Beta2日本語版

IE7の設定画面の日本語訳の話。

そして、同図右のように、「(not secure)」な項目を選択すると、その設定項目部分の背景色が赤っぽくなり、項目タイトルの「Download signed ActiveX controls」の右の部分に、「(not secure)」と表示され、この項目が「安全でない」設定になっていることを警告するようになった。

今後ユーザは、ここが「赤くなるような設定使ってはいけない」ということになる。

そして、IE 7 Beta 2の日本語版が先日リリースされた。この画面がどうなっているかを確認したところ、図2のようになっていた。

図2: 図1の日本語版での翻訳

なんだこの「(セキュリティで保護されていない)」というのは。SSLが使われていないとでも言いたいのか?

マイクロソフトの日本語化係の人は、「安全でない (not secure)」という言葉をどうしても使いたくないのだろうか。

確かに日本語版IE7の表記は紛らわしいですね。

not secure = 安全でない = 危険

なので

セキュリティで保護されていない = 危険

に変えた方が分かりやすいかな。