OpenSSL MITM CCSインジェクション攻撃
過去数年にわたって、さまざまな暗号化ライブラリでいくつかの重大な脆弱性が発見されました。 詳細が公開されてパッチがリリースされる前に、それらの一部のみを実際に大規模に使用できましたが、Heartbleedなどの深刻な脆弱性により、開発者、研究者、および一般ユーザーはこれらの製品の信頼性に細心の注意を払う必要がありました。
OpenSSLバージョン1.0.1hで修正された最近のバグのうち、主なものは、OpenSSLおよびTLSプロトコルに対するMITM攻撃(CVE-2014-0224)の可能性です。
CVE-2014-0224とは何ですか?心配する必要がありますか?
簡単な答え:あいまいですが、他のセキュリティ脆弱性と同様に、延期して心配するよりも、修正する方が常に良いです。
翻訳者のメモ :実行して更新するだけでいいようです。 この脆弱性は、SSLの全ポイントを無効にします。
この脆弱性を悪用するには、次の条件を満たしている必要があります。
- クライアントとサーバーの両方が脆弱でなければなりません。 クライアント側では、OpenSSLのすべてのバージョンが脆弱です。 サーバー側では、現在バージョン1.0.1のみが脆弱であると見なされています。 クライアントまたはサーバーのいずれかで脆弱性が修正された場合、脆弱性の悪用は不可能になります。
- 攻撃者は「中間者」でなければなりません。 攻撃者はパケットを傍受して変更できる必要があります。 10年前、このような攻撃ベクトルは、インターネットプロバイダーがインターネットトラフィックが流れるすべてのネットワークデバイスにアクセスできるため、インターネットプロバイダー以外にはほとんど不可能と思われました。
(翻訳者のメモ:10年前、不合理なプロバイダーは、たとえばarp-poisoningを使用してアクティブなスニファーで近隣のトラフィックをリッスンできるようになりました)
ただし、カフェやレストランなどで自由に利用できるさまざまなパブリックワイヤレスアクセスポイントの出現により、MITMはより現実的になりつつあります。 さらに、偽のアクセスポイントを作成できるソフトウェアが多数あります。 クライアントがそのようなアクセスポイントに接続するとすぐに、攻撃者はクライアントからのトラフィックの「中間者」になることができます。 中間者攻撃が成功すると、資格情報や機密情報が攻撃者に公開されたり、攻撃者に被害者の身元を偽る機会が与えられたりする可能性があります。
この攻撃はどのように機能しますか?
SSL / TLSセッションは、適切な側のClientHelloおよびServerHelloメッセージを介したネゴシエーションによって初期化されます。 プロトコルのこの部分は、使用されるプロトコルのバージョン、暗号化プロトコル、暗号化キー、メッセージ認証コード(MAC)、初期化ベクトル、使用される拡張機能などのセッション属性の設定を担当します。
さまざまな理由で、クライアントとサーバーの両方が、ネゴシエーションフェーズ中に暗号アルゴリズムを選択するための戦略を変更することを決定できます(ネゴシエーションプロトコルと混同しないでください)。 これは、ChangeCipherSpec(CCS)要求を使用して実現されます。 CCSは、クライアント側とサーバー側から送信される1つのパケットで構成され、次のデータが新しい暗号化アルゴリズムとキーによって保護されることを通知します。
標準(RFC 2246、RFC 5246)によると、「セキュリティパラメータをネゴシエートした後、メッセージ「Finished」が送信されたことを確認する前に、ハンドシェイク中にCCSが送信されます。」 ただし、OpenSSLの場合、これはそうではなく、セキュリティパラメータが合意される前であってもCCSを受け入れます。 間違った順序でChangeCipherSpecを受け入れると、両側の状態が同期しなくなることが予想されます。 通常、これにより、他の脆弱性がない場合、両方の当事者が切断する必要があります。
この脆弱性を悪用するには、「中間者」が必要です:
新しい接続が確立されるまで待ってから、ClientHello / ServerHelloメッセージが続きます。 CCSパケットを両方向に送信します。これにより、OpenSSLは長さゼロのマスターキーを使用します。 この「ゼロ」キーに基づいてセッションキーが作成され、将来のセッションキーも脆弱になります。
ネゴシエーションパラメーターを再初期化します。
攻撃者は、送信されたパケットを解読し、修正することさえできます。
OpenSSLはこの脆弱性を次のように修正しました。マスターキーがインストールされるまでCCSパケットを受信できず、長さゼロのマスターキーは許可されません。
自分を守る方法は?
OpenSSLパッケージを、ディストリビューションが提供する最新バージョンにアップグレードします。
翻訳者注:
OpenSSLのこの脆弱性は、2014年5月1日にKIKUCHI Masashi(Lepidum Co. Ltd.)によって報告されました。 そのパッチに基づいて、OpenSSLの修正はOpenSSLチームのStephen Hensonによって開発されました。
修正されたバージョンがリリースされます
OpenSSL 0.9.8-0.9.8za
OpenSSL 1.0.0-1.0.0m
OpenSSL 1.0.1-1.0.1h
ゲントのバグ (修正済みバージョン(openssl-1.0.1h)はすでにportageにあります)
ubunt(trusty)で修正 (openssl(1.0.1f-1ubuntu2.2)trusty-security; urgency = medium)
debian wheezy (1.0.1e-2 + deb7u10)に修正があります。 残りのdebian(squeeze、jessie、sid)は現在脆弱です。
翻訳を手伝ってくれたamaraoとvaldikssに感謝します。