Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

POODLE攻撃(プードルこうげき)とは | 意味や読み方など丁寧でわかりやすい用語解説

POODLE攻撃(プードルこうげき)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

プードルこうげき (プードルこうげき)

英語表記

POODLE (プードル)

用語解説

POODLE攻撃は、主にSSL 3.0プロトコルの脆弱性を悪用し、暗号化された通信の内容、特にセッションクッキーなどの機密情報を窃取する可能性のあるサイバー攻撃の一つである。POODLEは「Padding Oracle On Downgraded Legacy Encryption」の略であり、その名の通り、古い暗号化プロトコルへのダウングレードと、パディングオラクルという暗号攻撃手法を組み合わせることで成立する。システムエンジニアを目指す上で、このような過去の脆弱性とその対策を理解することは、現在のセキュアなシステム設計や運用に役立つ。

この攻撃は、2014年にGoogleの研究者によって公表された。当時、インターネット上の多くのウェブサイトやブラウザがまだSSL 3.0をサポートしていたため、広範な影響が懸念された。SSL 3.0は、現在広く利用されているTLS (Transport Layer Security) の前身にあたる暗号化プロトコルであり、HTTPS通信の基盤を築いた技術である。しかし、時間の経過と共に新たな脅威が発見され、よりセキュアなTLS 1.0、1.1、1.2、そして1.3へと進化してきた経緯がある。現代のシステムではSSL 3.0はほとんど使われていないか、サポートが終了しているが、当時はこの古いプロトコルを無効化していないシステムが少なくなかった。

POODLE攻撃が成立するには、まず攻撃者が通信路の中間に割り込む、いわゆる中間者攻撃 (Man-in-the-Middle, MitM) の状態を作り出す必要がある。これは、攻撃者がユーザーとウェブサーバー間の通信を傍受し、改ざんできる状況を意味する。次に、攻撃者はクライアント(ウェブブラウザなど)とサーバーに対して、より新しいTLSバージョンではなく、意図的に古いSSL 3.0プロトコルを使用するように仕向ける。このプロセスを「ダウングレード攻撃」と呼ぶ。多くのブラウザは、より新しいプロトコルでの接続が失敗した場合、互換性のために古いプロトコルでの再試行を試みる「フォールバック」という機能を持っていたため、このダウングレード攻撃が可能だった。攻撃者は、TLS接続をエラーにしてSSL 3.0での再接続を強制するのである。

ダウングレードが成功し、通信がSSL 3.0で行われるようになると、攻撃者はSSL 3.0の暗号ブロックチェーンモード (CBCモード) で使用されるパディング処理の脆弱性を悪用する。CBCモードでデータを暗号化する際、データ長がブロックサイズの倍数でない場合、残りのスペースを埋めるために「パディング」と呼ばれる余分なデータが追加される。SSL 3.0の仕様では、復号時にこのパディングが正しい形式であるかどうかの検証が甘かった。具体的には、パディングの最終バイトの値がパディング長を示しているか否かのみをチェックし、他のパディングバイトの内容を適切に検証しなかった。

攻撃者はこのパディング検証の甘さを利用して、暗号化されたメッセージ、例えばユーザーのセッションクッキーの一部を、1バイトずつ解読していく。攻撃者は特定の暗号化されたブロックを改変し、それをサーバーに送信する。サーバーは改変されたブロックを復号し、パディングの検証を行う。このとき、もし攻撃者の改変が成功し、サーバーが「正しいパディングである」と判断すれば、それは攻撃者の推測が正しい方向に進んだことを示す。逆に、パディングエラーが発生すれば、推測が誤っていたことを意味する。

攻撃者は、このサーバーのパディング検証結果(エラーになるか否か)を「オラクル(神託)」として利用し、多数の試行錯誤を繰り返すことで、元の平文データを1バイトずつ推測し、最終的に暗号化されたセッションクッキーなどの機密情報を完全に復元することが可能となる。セッションクッキーが盗まれれば、攻撃者はそのユーザーとしてウェブサイトにログインできるため、アカウント乗っ取りなどの深刻な被害に繋がる。この攻撃手法は、特にブラウザとウェブサーバー間で頻繁にやり取りされるセッション情報に対して有効であった。

POODLE攻撃への対策として最も根本的かつ重要なのは、SSL 3.0プロトコルを完全に無効化することである。サーバー管理者側では、ウェブサーバーやロードバランサーなどの設定を見直し、SSL 3.0のサポートを無効にし、TLS 1.0以降のより安全なプロトコルのみを受け入れるように設定する必要がある。クライアント側、特にウェブブラウザのユーザーは、ブラウザの設定でSSL 3.0を無効にするか、最新バージョンのブラウザを使用することが推奨される。現代の主要なブラウザは、この攻撃の公表を受けて速やかにSSL 3.0のサポートを終了するか、デフォルトで無効化する措置を取った。また、TLSプロトコルの拡張である「TLS_FALLBACK_SCSV (Signaling Cipher Suite Value)」の導入も、ダウングレード攻撃自体を防ぐ有効な手段となった。これは、クライアントが意図的に古いプロトコルで再接続を試みる場合、サーバーがそれを検知して接続を拒否できるようにするもので、悪意のあるダウングレード攻撃をより困難にする。

POODLE攻撃の事例は、たとえ古いプロトコルであっても互換性のために残しておくことが、いかに深刻なセキュリティリスクにつながるかを示す典型的な例であり、システム運用において常に最新のセキュリティ基準を適用し、不要なレガシープロトコルや機能を無効化することの重要性を改めて認識させる教訓となった。

関連コンテンツ