2021/08/06

Defcon トーク「Timeless Timing Attacks (タイムレスタイミング攻撃)」

鍵 キー アンロック 侵入 漏洩 データ 流出 サイバー攻撃 key

2021 年 8 月 6 日 Trevor Collins 著

Tom Van Goethem 氏と Mathy Vanhoef 氏による最新の Defcon でのトーク「Timeless Timing Attacks (タイムレスタイミング攻撃)」では、ネットワーク上のタイミング攻撃の新しい実行方法について取り上げられています。タイミング攻撃とは、デバイスによるレスポンスまでの時間に基づき、データを抽出する攻撃のことです。わずかなレイテンシやジッタがあるだけでもこの攻撃は成立しないため、タイミング攻撃を成功させるには通常、攻撃者はコンピュータに直接接続していなければなりません。Defcon では、タイミング攻撃を行う際に、ネットワークのジッタやレイテンシの問題を解決する 2 つの方法について解説されています。

ネットワークのジッタに関わる問題を解決するには、2 つのリクエストを同時に送信し、パケットのレスポンス間のタイミングの差を測定するという方法があります。サーバがこれらのリクエストを並行して処理していれば、レスポンスパケットのうちどちらのレスポンスが早く返ってくるか確認できるため、ネットワーク上のレイテンシを測定する必要がなくなります。

その方法のひとつとして、TCP の輻輳制御があります。悪意のあるサーバは、クライアントに対して、返答を送信する前に ACK を待つように指示し、すべてのリクエストを一度に送信させることができます。それに対する応答を読み込む際、その順番を調べることで、どのリクエストが最初に終了したかを判断できます。あるリクエストが常に後に戻ってきて、基準となるリクエストよりも遅かった場合、この方法でパスワードやデータを抽出することができます。これをクロスサイトタイミング攻撃に利用した例が紹介されました。

また、「Dragonblood」を使って Wi-Fi のパスワードを抽出するデモもありました。以前は、Dragonblood を使った攻撃のタイミングでは、「eap-pwd」を使った場合、正しいパスワードの解読に十分な詳細が得られませんでした。しかし、アクセスポイントが Radius サーバに一度に複数のリクエストを送ることができれば、基準となるリクエストからレスポンスの順番を読み取ることができます。パスワード候補を含む複数の「PWD-id」リクエストを物理的な信号フレームで送信することで、アクセスポイントがフレームを同時に受信することがわかります。また、アクセスポイントに再認証要求を行うと、アクセスポイントはすべての要求をバッファし、信号パケットとして Radius サーバに送信して処理されます。その後、Radius サーバがアクセスポイントに応答し、PWD-id のレスポンスがクライアントに転送されます。レスポンス間のタイミングを測定することで、Radius サーバがリクエストを処理するのにかかった時間が判明します。もちろん、AP は Radius サーバからのレスポンスを処理する必要がありますが、これはタイミングにはそれほど影響しません。

Wi-Fi 攻撃についてはデモがなく、実用性は不明です。クロスサイトタイミング攻撃については、クロスサイトスクリプティングの発生を許可しない、という基本的なステップで防ぐことができます。