ウェブサイト脆弱性:BEAST脆弱性と対策

ウェブサイト脆弱性:BEAST脆弱性と対策

2023年10月23日

出典: 日本の上場企業3715社の公式サイトのSSL/TLSセキュリティ脆弱性ダッシュボード

BEAST脆弱性とは何か

BEAST (Browser Exploit Against SSL/TLS)は、2011年に公にされた一部のバージョンのSSL/TLSプロトコルに存在する脆弱性です。特にTLS 1.0以前のバージョンと一部のSSL 3.0の実装に影響を与えています。

BEASTは、暗号化されたデータを解読するための攻撃手法であるブロック暗号の攻撃とも関連しています。具体的には、Cipher Block Chaining (CBC) モードと呼ばれるブロック暗号の一部で使用される暗号化方式に対する攻撃手法です。

攻撃者がネットワーク上で中間者となり、クライアントとサーバー間の通信を盗聴したり改ざんしたりすることで、暗号化されたHTTPクッキーなどの重要なデータを取得することが可能になります。

BEASTに対する対策としては、脆弱性のあるプロトコルバージョン(TLS 1.0やそれ以前)の使用を避け、より新しいバージョン(TLS 1.1以上)の使用を推奨します。また、RC4といったCBCモードを使用しない暗号化アルゴリズムの使用も一部の環境で推奨されています。

BEAST脆弱性の危険性

BEAST脆弱性が発見された当時、その影響は非常に深刻なものと見なされました。クライアントとサーバー間の通信を中間者攻撃で盗聴または改ざんする能力は、ユーザーの個人情報や機密データを大きく危険に晒す可能性がありました。

特に、ユーザーの認証情報(例えば、HTTPクッキーによるセッションID)を盗むことで、攻撃者はユーザーになりすましてWebサービスを利用できる可能性があったため、セキュリティ上非常に重要な問題でした。

ただし、現在では多くのウェブブラウザーがこの問題に対応し、デフォルトでより新しいTLSバージョンを使用するようになりました。また、サーバーサイドでも対策が施されており、この脆弱性を突くための攻撃が成功する確率は非常に低くなりました。

したがって、もしもあなたのウェブサイトがBEAST脆弱性を持っている場合、それはあなたのサイトが古いSSL/TLSプロトコルバージョンを使用しているか、またはサーバーの設定が適切でないことを意味します。これにより理論的には中間者攻撃による情報漏洩のリスクがありますが、現実的にはその可能性は非常に低いでしょう。

それにもかかわらず、最善のセキュリティを確保するためには、BEAST脆弱性の修正が推奨されます。具体的には、サーバーの設定を見直し、必要であれば更新して、最新かつ安全なTLSバージョンが使用されていることを確認することが必要です。

出典: 日本の上場企業3715社の公式サイトのSSL/TLSセキュリティ脆弱性ダッシュボード

フィッシングサイトテイクダウンサービスお客様事例:資本金数十億円規模の金融機関クライアント様。サービス開始後2日でテイクダウン成功。たった1通のメール、公開情報のみで、即日のドメイン停止。完全成功報酬でのご契約。緊急対応プランをご利用。ROIは1034%

BEAST脆弱性の対処法

現在、TLS 1.3は最新で最も安全なプロトコルとされています。TLS 1.3では、過去のバージョンで問題となっていた脆弱性(例えば、上記のBEAST脆弱性)が解消されています。また、新たに開発されたセキュリティ機能が導入されており、安全性が大幅に向上しています。

逆に、TLS 1.0や1.1などの古いプロトコルは、多くの脆弱性を抱えています。これらの脆弱性は攻撃者によって悪用される可能性があるため、古いプロトコルの使用は避けるべきです。

なお、ブラウザは通常、最新で最も安全なプロトコルを自動的に使用しますが、ブラウザが対応している最新のプロトコルでも、サーバー側が古いプロトコルしかサポートしていない場合、通信はその古いプロトコルで行われます。このような状況を防ぐためにも、サーバー側の設定で新しいプロトコルをサポートするようにすることが重要です。

BEAST脆弱性に対する解決策

BEAST脆弱性に対する具体的な解決策は、使用しているWebサーバーソフトでTLS1.1以下のプロトコルの使用をやめることです。SSL2.0、SSL3.0、TLS1.0、TLS1.1を使用プロトコルの設定から除外する事が必要になります。

以下のようにTLS1.2未満を除外することが、直接的な解決策となります。

ssl_protocols TLSv1.2 TLSv1.3;

Apacheの場合は以下のようになります

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

BEAST脆弱性を防ぐにはサーバーソフトの設定段階からモダンな設定を行うことが本質的かつ効果的です。Mozilla社が提供しているSSL Configuration Generatorを使用すれば、モダンな設定のテンプレートが生成できますから、再現性の観点から推奨されます。

モダンな設定の場合、以下のようになります。

Nginx

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /path/to/signed_cert_plus_intermediates;
    ssl_certificate_key /path/to/private_key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    # modern configuration
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers off;

    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

    # replace with the IP address of your resolver
    resolver 127.0.0.1;
}

Apache

# this configuration requires mod_ssl, mod_socache_shmcb, mod_rewrite, and mod_headers
<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile      /path/to/signed_cert_and_intermediate_certs
    SSLCertificateKeyFile   /path/to/private_key

    # enable HTTP/2, if available
    Protocols h2 http/1.1

    # HTTP Strict Transport Security (mod_headers is required) (63072000 seconds)
    Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>

# modern configuration
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
  • assignment_turned_in
    脚注 | Footnotes
    1. BEASTは「Browser Exploit Against SSL/TLS」の略称です。SSL/TLSはウェブ通信のセキュリティを担保するプロトコルです。
    2. TLS 1.0以前とは、TLSのバージョン1.0およびそれ以前のバージョン(SSL 2.0, SSL 3.0など)を指します。
    3. CBC(Cipher Block Chaining)モードは、ブロック暗号の運用モードの一つで、各ブロックの暗号化が前のブロックに依存する方式です。
    4. 中間者攻撃(Man-in-the-Middle Attack)は、通信の途中で第三者(攻撃者)が通信内容を傍受または改ざんする攻撃手法です。
    5. TLS 1.1以降のバージョンは、多くの既知の脆弱性に対処しているため、より安全です。
    6. RC4は、CBCモードを使用しないストリーム暗号の一例です。