Windows XP を一般ユーザー権限でクラッシュさせる方法
Windows XP を一般ユーザー (Administrators でも Power Users でもないユーザー) の権限で、特殊なドライバが動いている状態でも、特殊なバックグラウンドサービスが動いている状態でもなく、クリーンインストールした普通の状態で、ある工夫 (?) をした EXE ファイルを実行するだけで、簡単にブルースクリーンにしてクラッシュさせることができる ことに、今年の 4 月ごろに気付いた。
普通、一般ユーザー権限でいくらコードが暴走しても、Windows XP は滅多にブルースクリーンになることはない (メモリ等のハードウェアや、サードパーティのデバイスドライバにバグがある場合を除く) のだが、ある方法を使えばいともたやすく一般ユーザー権限からシステムのカーネルを停止させて、コンピュータを異常再起動させることができる。
2006 年 4 月に、この現象 (?) を偶然見つけた。
当時 Web で関連しそうな情報を検索したが、同様の情報は見つからなかった。
色々試してみたが、再現性 100% だったので、Microsoft に脆弱性として報告してみた。
以下はそのときのメールのスクリーンショット。
すると、5 月 16 日に、以下のようなメールが返ってきた。
ご連絡いただいておりました Manifest により Windows が STOP する件についての調査結果をお伝えいたします。
本事象は、ローカルからのサービス妨害 (DoS) が行えますが、コード実行の可能性を確認することは出来ず、
また、ターミナルサーバー上での影響もないことから、セキュリティ上の危険度は低く、時期サービスパックによる対応を予定しております。
本事象につきまして適切な方法でご連絡いただきました事に対し改めて御礼申し上げます。
お客様の保護にご協力いただき誠にありがとうございました。
ご質問等ございましたら、本窓口までご連絡ください。
マイクロソフト株式会社
セキュリティ レスポンス チーム
なるほど、確かに複数人がリモートデスクトップでログオンして使用する Windows Server 2003 では再現しない (Windows XP でしか発生しなかった) のだから、あまり恐れることは無いのだろう。
…… と思って、blog に詳細な方法を書こうと思ったが、一応未公開の脆弱性なので、半年間くらい秘密にして放っておいた。
それで今日 KB を見ていると、こんなのが出ているではないか。
- http://support.microsoft.com/kb/921337/ja
- 『.exe ファイルまたは Windows XP Service Pack 2(SP2)での .dll ファイルに Windows Vista 拡張子を持つマニフェストを追加すると、コンピュータは、再起動することがあります。』
というのを見つけた。しかも 詳しいクラッシュのさせ方まで掲載されている。 日付は 2006年10月18日。
Csrss.exe がこうしたタグを見付けると、アクセス違反がメモリ破損により、 Csrss.exe に発生します。 これで、 Windows が再起動されるのが発生します。
それで、半年前に問題を報告したときのことを思い出したので、この日記を書いている。
あと、なぜかまだ更新パッチの本体のダウンロードが開始されていないっぽい。