週末にかけて、OS Xのかなり奇妙なバグが報告され、面白さと驚きが入り混じった声が上がりました。このバグは、Mountain Lionの最新バージョンにのみ影響し、一部の報告によると、まだリリースされていないベータ版も含まれるとのことです。WebフォームやTextEditなどのテキストエディタにあるような、ほとんどの標準的なテキスト入力コントロール内で(大文字の)文字を入力するたびにクラッシュするという形で現れます。File:///F
もちろん、バグ自体は目新しいものではありませんが、今回のバグは特に興味深いものです。なぜなら、OS Xの標準テキスト入力メカニズムを利用するほぼすべてのアプリに影響するからです。幸いなことに、これは比較的軽微な問題であり、実際の使用ではほとんど発生しません。システム環境設定の右側のパネルでマウスを数回クリックするだけで簡単に対処できます。
何が起こっていますか?
最近のOS Xのバージョンには、「データ検出器」と呼ばれる機能が搭載されており、テキスト内に特定の情報が含まれているとアプリが自動的に認識します。メールアプリが受信したメッセージに住所や電話番号が含まれていることを検出し、例えばマウスをクリックするだけで連絡先アプリにエントリを作成できるなど、この機能が実際に動作しているのが分かります。
検出器に委ねられている仕事の一つは、インターネット上のURLを認識することです。例えば、「 」のような文字列を入力するとhttp://macworld.com、アプリはデータ検出器を使ってそれを自動的にURLとして認識し、クリック可能にすることができます。ご想像の通り、これはユーザーエクスペリエンスを大幅に向上させます。なぜなら、Webアドレスをブラウザに手動でコピー&ペーストする代わりに、時間がかかり、エラーが発生しやすいからです。
ウェブサイトのアドレスに加えて、プレフィックスで始まるURLは、file:///コンピュータ上にローカルに保存されているファイルを識別するために使用される可能性があり、これが今回のバグの影響を受ける部分です。影響を受けるアプリ内で任意の場所に入力すると、データ検出器はファイルのURLを入力しようとしていることを正しく認識し、他のアドレスと同様に、ホストアプリでハイライト表示したり操作したりできるようにURLを抽出しようとします。File:///
しかし重要なのは、このプロセスには、データ検出器が正しく機能し、何らかの理由で無効なURLを認識していないことを確認するための自己検証コードも含まれている点です。無効なURLを認識すると、不適切な動作やセキュリティ上の脆弱性につながる可能性があります。残念ながら、アサーションと呼ばれるこの検証コードは、大文字と小文字を正しく区別できません。そのため、URLの先頭に「」Fileではなく「」と入力するとfile、オペレーティングシステムはURLを正しく検出しますが、検証コードが失敗し、クラッシュが発生します。
どれくらいひどいですか?
幸いなことに、このバグはオペレーティングシステムのセキュリティを維持しようとする過剰な試みの結果に過ぎません。このクラッシュは、オペレーティングシステムが大文字で始まるファイルURLを無効であると誤って認識し、何らかの理由で通常のデータ検出ルーチンをすり抜けたことが原因で発生します。通常であれば、これは不正なデータがアプリに侵入して大混乱を引き起こすのを防ぐための最後の手段です。したがって、このクラッシュによってセキュリティ上の脆弱性が生じたり、ハッカーが利用できるような重大な攻撃ベクトルが生じたりすることはありません。
残念なことに、このバグは非常に広範囲に及んでいます。データ検証機能を利用するほぼすべてのアプリに影響を及ぼし、FinderからSafariまで、Macで動作しているほぼすべての主要アプリに当てはまります。ハードドライブが焼け落ちることはないかもしれませんが、不意のクラッシュによって貴重なデータが失われる可能性は高く、これは誰にとっても望ましいユーザーエクスペリエンスとは言えません。

幸いなことに、ほとんどのユーザーはファイルURLを使用する可能性は低く、使用するユーザーであっても小文字のURLを使用する可能性が高いため、この問題はある程度軽減されています。そのため、このバグが広く報道されているにもかかわらず、実際の使用状況で発生することはおそらく非常にまれであり、それがこの問題が表面化するのに長い時間がかかった理由を説明しています。
最終的には、Apple が Mountain Lion の次期リリースですべてを修正するだろうとほぼ確実です。ただし、その間は、システム環境設定の言語とテキストパネルにアクセスして、影響を受けるコードをオフにすることができます。テキストタブで「記号とテキストの置換を使用する」と「スペルを自動的に修正する」の両方を無効にすると、2 つの便利なオペレーティング システム機能にアクセスできなくなるという代償はありますが、バグの発生を防ぐことができます。