iDictについてご存知の方も多いでしょう。これは、総当たり攻撃(正しいパスワードを見つけるために、一連のパスワードを次々に試す手法)を用いてiCloudアカウントを侵害するために設計された、広く公開されているクラッキングツールです。報道によると、この脆弱性はAppleによって数日以内に修正されました(ただし、Appleはコメントを控えています)。
開発者はAppleに事前に詳細を知らせずにコードを公開しましたが、これは異例のことです。通常は、企業が脆弱性を修正する時間を確保するために、この情報を非公開で公開するのが一般的です。
iDictは、Appleが特定のURLでパスワード入力の失敗を繰り返した場合の対処方法に「痛々しいほど明白な」問題があると著者が主張する点を根拠にしています。この種の問題は、昨年夏のiCloud「ハッキング」後に明らかになった報告と類似しています。このハッキングでは、iCloudへのパスワード入力の試行が制限されずに行われ、さらに有名人の経歴などに基づいたセキュリティ質問への回答が試みられました。
iDictの開発者は、このツールが「二次認証」を回避したと主張している。これは2段階認証のハッキングではなく、攻撃者がセキュリティ質問への回答を回避できる方法のようだ。開発者のコードリポジトリページには、Appleが「レート制限」を有効にしたと記載されており、このツールは現在では無効になっているはずだ。レート制限とは、特定のソースまたは特定のアカウントからのクエリ数を追跡し、上限に達した時点で制限をかけるプロセスである。
攻撃の解剖学
しかし、具体的にはどのように機能したのでしょうか?この攻撃、情報漏洩のリスク、そしてAppleがすべきこと(そして、そうでないかもしれないこと)について検証してみましょう。
iDict や、特別な知識を必要としない類似のリモート攻撃は、3 つの要素に依存しています。個々のアカウントのパスワードに対して過度なテストを実行する方法、アカウント ロックアウトのトリガー、クエリを削減するための調整、またはアカウントが攻撃されていることをアカウントの所有者 (または Apple) に通知するためのアラートを回避する方法、そして弱いパスワード (場合によっては弱いセキュリティの質問も) です。
あなたが作った「分からない」パスワード?そんなことはない。
アカウントに強力なパスワード(できればそのアカウントに固有のパスワード)を関連付けておくと、iDict が発見したような URL エクスプロイトによるものでも、パスワード ファイルやデータベースが盗まれて時間の経過とともに解読される場合でも、ブルート フォース手法によってアカウントがハッキングされるリスクをほぼすべて回避できます。
ソニーの無能さにもかかわらず、IT部門やその他の担当者が「Password」というファイルに暗号化されていないパスワードを保存することを許可していましたが、ほとんどのサイトでは、プレーンテキストを解読不可能な形式に変換する一方向ハッシュアルゴリズムを使用してパスワードを暗号化しています。古いアルゴリズム(怠慢と更新不足のために現在も使用されている)には脆弱性があり、政府機関や犯罪組織が個々のアカウントのパスワードを解読しようとすると、解読に成功する可能性があります。より賢明なサイトでは、より強力な方法を採用しています。
弱いパスワードを選択した場合、ブルートフォース攻撃によって、キャプチャされた暗号化パスワードを家庭用コンピューター機器で毎秒数十億ものパスワードと照合することが可能になります。そう、毎秒です。このような最も弱いパスワードの場合、一致するパスワードが1つ見つかるだけで、攻撃者は同じパスワードを使用しているすべてのアカウントを見つけ出すことも可能になります。(強力なパスワードとは? 15~20文字の非常に長いパスワード、または文字、数字、句読点を組み合わせた意味不明なパスワードです。)
しかし、iDictのエクスプロイトでは、暗号化されたパスワードを取得する方法がありません。代わりに、ソフトウェアはパスワードを1つずつテストします。Appleがこの脆弱性を修正する前は、クエリに対する明らかな抑制措置は取られていなかったにもかかわらず、コードはAppleの認証サーバーが各試行に応答するまで、次の試行をテストできません。
iDictには、Apple IDの最低要件を満たす数百個のデフォルトパスワードのリストが付属していました(上の画像を参照)。これらのパスワードは、コードを使って誰でも追加(または変更)できます。この短いリストはさらに危険で、ハッカーが攻撃を連鎖させる可能性があります。さらに、他のサービスのアカウントから抽出したパスワードを使って、iDictのようなエクスプロイトでApple IDを破ろうとすることもできます。同じ人物が過去に使用した可能性のあるパスワードを使うことも可能です。(Apple IDはメールアドレスなので(何年も前に設定されたレガシーアカウントを除き)、簡単に照合できます。)
2 段階認証は攻撃に対する防御手段の 1 つです。
リストに記載されているパスワード、または類似のパスワードを使用している場合は、すぐに変更してください。さらに良い方法として、まだ設定していない場合は、2段階認証も有効にしてください(また、今後回復キーを見つける方法も覚えておいてください)。
iDict攻撃が成功するために必要な他の2つの要素はAppleの管理下にあり、長年オンライン認証サーバーを運用してきたにもかかわらず、Appleが依然としてこれらの脆弱性を抱えていることは懸念すべき点です。認証やパスワード回復などを扱う、公開されているURLはすべて、Appleによってずっと前にテストされているはずです。また、アップデートがリリースされる際には、スロットリング、監視、通知が機能していることを確認するために、定期的にテストされるべきです。iDictに関するすべての詳細が正確であれば、Appleは対策を強化する必要があります。
現実世界、現実の問題
iDictがリリースされた直後にツイートしたところ、セキュリティ上の懸念からApple IDアカウントがロックダウンされました。おそらく、誰かがiDictソフトウェアと私のApple IDを使ってアカウントをクラックできないか試したのでしょう。幸い、私は強力なパスワードと2段階認証を設定していました。また、復旧キーの入手方法について書いたばかりだったので、復旧キーの場所が分かり、アカウントへのアクセスを復元してキーをリセットすることができました。
また、2014年後半には、パスワードで保護されたアカウントでApple IDまたはiCloudの情報が、通知やその他の警告なしに変更されたという報告を数件受けました。あるケースでは、ユーザーの住所と電話番号が入れ替わっていましたが、どうやら変更とは無関係の人物が使用しているアカウントに変更されていたようです。同様の現象に遭遇された方は、詳細を伺いますのでご連絡ください。
Glenn Fleishmanは、ワイヤレスネットワークの設定とセキュリティ保護に関する著書『Take Control of Your Apple Wi-Fi Network』の著者です。Boing BoingとThe Economistに定期的に寄稿し、Macworldのシニア寄稿者でもあります。