iOS、Mac OS Xにセキュリティ・ホールが見つかった。
(ちなみにMac OS Xという名前は古くて、正しくは単に「OS X」というそうだ)

Apple史上最悪のセキュリティバグか、iOSとOS XのSSL接続に危険すぎる脆弱性が発覚──原因はタイプミス? | アプリオ
セキュリティ・ホールというのはOSやブラウザーのバグで、悪意のある他のユーザーから攻撃を受けやすい穴のことである。
ヴァルネラビリティ(脆弱性)とも言う。
この脆弱という漢字をツクリの危から類推してキジャクと読む人がいるが、ゼイジャクが正しい。

WindowsにもLinuxにもOS Xにもセキュリティ・ホールがまま見つかる。
だからしょっちゅうアップデートが掛かっている。
ただし今回のはちょっと影響度が大きく、またバグの作られ方が間抜けすぎるので大きな話題になっている。

これはSafariブラウザーでSSLが有効なサイトを見に行っても、暗号化が無効になってしまうというバグである。
ブラウザーで見に行くWebサイトには「http://なんとか〜」というサイトと「https://なんとか〜」というサイトがある。
後者がSSLが有効なサイトで、セキュアなサイトと言う。
セキュアなサイトであれば、ユーザー(ぼく)とサーバー(Amazonとか楽天とか・・・)のやりとりは暗号化される。
セキュアなサイトでなければ、やりとりは暗号化されず、クレジット番号やパスワードは平文で送られる。
平文とは暗号化されていない文字列のことで、ヒラブンと読む。
覚えること多くて大変だな。
(※2014-03-03追記:第1版では何を思ったか白文(ハクブン)と書いたが当然間違いである。教えてくださった方THX)

で、今回のiOSおよびOS Xのセキュリティ・ホールは、Safariでセキュアなサイトを見に行ってっも暗号化が無効になってしまい、ユーザーとサーバーの間にいる人(中間者、man in the middle)が簡単に傍受してしまう。
クレジット番号とかAmazonのパスワードとか傍受されたら大変である。

さて、この脆弱性があるかどうかは、https://gotofail.com/というサイトを見に行けばわかることになっている。
OS X 10.9.1のSafari7.0.1(9537.73.11)で行ってみると、確かにあぶない、と言われる。
20140302safari
一方、同じMacでFirefoxを使ってやってみると、「このブラウザーでは大丈夫だけどSafariはどうかな。。」という「警告」に変わる。
20140302fx
ということで、Safariさえ使わなければ大丈夫な気がする。

ただ、問題なのが、SafariはApple謹製純正ブラウザーであって、メールのリンクをクリック/タップするとか、ツイッターのリンクをクリック/タップしたときに、デフォルトで表示されるブラウザーということだ。
これはちょっと、かなり剣呑な気がする。

ちなみにこのバグのソースコードがAppleによって公開されている。上のサイトにも画像が乗っているが
if (err = SSLHashSHA1.final(&hashCtx, &serverRandom)) != 0)
 goto fail;
if (err = SSLHashSHA1.final(&hashCtx, &signedParams)) != 0)
 goto fail;
 goto fail;
というコードである。
AppleのOSはObjective Cという言語で書かれているが、if 文をコピペしていてgoto文をうっかり2回コピーしてしまった。
上の場合2個めのif文の条件が真である場合にのみgoto文が作動するように書きたかったのだが、2個めのgoto文はどんな条件でもこのコードを通過するという状態だ。
ちなみにPerlだと単文を実行する場合は後置if文を使うし、周りのコードが分からないけどたぶんこういう場合はgoto文じゃなくてlastを使うと思うので、
last if (err = SSLHashSHA1->final(\$hashCtx, \$serverRandom)) != 0;
last if (err = SSLHashSHA1->final(\$hashCtx, \$signedParams)) != 0;
的な書き方になるので、まずこの間違いは起きないのではないだろうか。
でもまあどんな言語を使って何を書いていても、間違いは起こりうる。
可及的速やかに直すのが大事である。

ところが!OS X版は2014年3月2日現在まだパッチが出ていない。
なんやそれ〜
gotoぐらいさっさと取ってほしい。
(※2014-03-03追記:ブログをアップした翌日に10.9.2アップデートが出た。まあ当たり前か。時事的な話題はめんどくさいなァ)

iOS版は出ている。
7.0.6である。
ところがぼくは、ちょっと気が重い。
脱獄しているからである。
ところが、7.0.6に今の脱獄パッチは適用しているということが分かった。
良かった。

ということで、過去の自分のブログエントリーを参考にして、iPhoneを入獄、アップグレード、脱獄した。

イジハピ! : 【第507回】iOS7の脱獄

実質的にはこの中で紹介されている2つのリンク(人様のブログ)の手順に従っただけだが、無事終わってハッピーである。
上のサイトに行ってみると、果たして下のメッセージが出た。

20140303safe
これで一安心。
早くMacの方のOS Xも対応してもらいたい。