今年の初め、セキュリティ研究者のBhavuk Jain氏は、Appleサインインのゼロデイ脆弱性を明らかにした。これにより、攻撃者は電子メールアドレスを知っているだけで被害者のアカウントを簡単に制御できるようになる。Appleはこの脆弱性にパッチを当て、悪用の証拠は見つからないと述べた。
Appleサインインは、OAuth 2.0およびOpenID Connectと互換性のあるシングルサインオンプロバイダであり、Appleは昨年iOS 13で導入した。Appleによると、Appleサインインはプライバシーを念頭に置いて設計され、他のプラットフォームが提供するログインサービスとは対照的とのことだ。
Jain氏は、有効なApple IDがない場合でも、電子メールアドレスを知っているだけで、Appleサインインを使用してサードパーティサービスの被害者のアカウントにアクセスできる可能性があるこのプロセスの欠陥を発見した。つまり、攻撃者が通常のOAuthフローを使用してIDを認証すると、サードパーティのプラットフォームで被害者のアカウントにアクセスするために使用できるトークンを取得するために、他の電子メールアドレスを含むPOSTリクエストを偽造する可能性がある。
Appleに任意のメールIDのJWTをリクエストできることがわかりました。これらのトークンの署名が、Appleの公開鍵を使用して確認されたとき、有効であることが示されました。つまり、攻撃者は任意の電子メールIDをJWTにリンクし、被害者のアカウントにアクセスすることでJWTを偽造する可能性があります。
Jain氏によると、このバグは、上の画面のステップ2の「Exchange of JWT」フェーズで、任意の電子メールアドレスを使用して偽造POSTリクエストを送信することで悪用される可能性があり、Appleのサービスはそのサードパーティサービスの電子メールアドレスに有効なアクセストークンを提供することで応答する:
POST /XXXX/XXXX HTTP/1.1
Host: appleid.apple.com
{"email":"contact@bhavukjain.com"}
Appleのバグは悪用されやすいものだったが、攻撃は、サードパーティのサービスによって追加のセキュリティ対策が採用されていない場合にのみ成功する可能性があるとJain氏は言う。Appleは、ログを調査し、この脆弱性による誤用やアカウントの侵害はないと判断したと彼は付け加えている。
この種の動作を可能にする実際のバグはAppleによって明らかにされておらず、Jain氏によればそれはすぐに修正された。Hacker Newsのコメント投稿者は、2番目のPOSTで提供された電子メールアドレスが最初に認証を受けるために使用されたものと同じであるかどうかをチェックしなかったためにバグが発生した可能性を示唆した。これは、ユーザが実際の電子メールアドレスをサードパーティに送信することをオプトアウトできるようにするAppleサインインに関連している可能性がある。その場合、Appleのリレーメールアドレスに置き換えられる。