TLS_FALLBACK_SCSV Not Supported
TLS_FALLBACK_SCSV がサポートされていません
概要
この脆弱性は、サーバーが TLS_FALLBACK_SCSV (Signaling Cipher Suite Value) をサポートしていないことを示しています。これは、SSL/TLS 接続におけるプロトコルのダウングレード攻撃を防ぐために設計されたメカニズムです。
TLS_FALLBACK_SCSV が重要である理由は以下のとおりです。
- 接続の失敗により、クライアントがより低いプロトコルバージョンにフォールバックしたことを示せるようになります。
- サーバーが悪意のあるダウングレードの試みを検出し、防止できるようにします。
- SSL/TLS 接続において可能な限り最高レベルのセキュリティを維持するのに役立ちます。
TLS_FALLBACK_SCSV がサポートされていない場合、サーバーは次のようなリスクにさらされます。
- プロトコルダウングレード攻撃: 攻撃者は、より古く、安全性の低いプロトコルバージョンの使用を強制できます。
- 中間者 (MitM) 攻撃: より弱いプロトコルにダウングレードすることで、攻撃者が通信を傍受して復号することが容易になります。
- 古いプロトコルの脆弱性の悪用: 古い SSL/TLS バージョンには、ダウングレードが発生したときに悪用される可能性のある既知の脆弱性がある場合があります。
シナリオ例:
攻撃者がクライアントとサーバー間の最初のハンドシェイクを傍受したとします。攻撃者は接続を操作して失敗させ、クライアントにより低いプロトコルバージョンで再試行させます。TLS_FALLBACK_SCSV がなければ、サーバーはこのダウングレードを受け入れ、古いプロトコルバージョンの脆弱性に接続がさらされる可能性があります。
TLS_FALLBACK_SCSV サポートの欠如は、SSL/TLS セキュリティのベストプラクティスに違反しており、さまざまなセキュリティ標準や規制のコンプライアンスに影響を与える可能性があります。
推奨事項
TLS_FALLBACK_SCSV (Signaling Cipher Suite Value) がサポートされていない場合、ダウングレード攻撃につながる可能性があります。このリスクを軽減するための戦略を以下に示します。
プロアクティブな戦略
-
SSL/TLS バージョンのフォールバックを無効にする: 古い SSL/TLS バージョンへのフォールバックを無効にするようにサーバーを構成します。これにより、攻撃者が接続に脆弱なプロトコルの使用を強制するのを防ぎます。
-
最小 TLS バージョンの適用: クライアント側とサーバー側の両方で、許容される最小の TLS バージョン (TLS 1.2 など) を設定し、脆弱なバージョンへのダウングレードを防ぎます。
-
定期的なセキュリティスキャン: インフラストラクチャの定期的なスキャンを実行して、TLS 構成の弱点を特定し、対処します。
-
異常な TLS ネゴシエーションパターンの監視: プロトコルのダウングレードを強制しようとする試みを検出するための監視を実装します。
実装例
- Nginx の構成
Nginx で SSL/TLS バージョンのフォールバックを無効にし、最小 TLS バージョンを適用するには:
server {
listen 443 ssl;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
# その他のSSL設定...
}
- Apache の構成
Apache の場合、同様の結果を得るために次の構成を使用します:
<VirtualHost *:443>
SSLEngine on
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder on
# その他のSSL設定...
</VirtualHost>
- テスト用の OpenSSL コマンド
OpenSSL を使用してサーバーの TLS 構成をテストします:
openssl s_client -connect example.com:443 -tls1_2
このコマンドは、TLS 1.2 接続を確立しようとします。成功した場合は、サーバーが最新の TLS バージョンを使用するように正しく構成されていることを示します。
ダウングレードの試みの監視
- fail2ban の使用
fail2ban を使用して、ダウングレードの試みの可能性についてログを監視できます:
/etc/fail2ban/filter.d/tls-downgrade.confにカスタムフィルターを作成します:
[Definition]
failregex = SSL routines:SSL23_GET_CLIENT_HELLO:unsupported protocol.*client=<HOST>
/etc/fail2ban/jail.localに jail を追加します:
[tls-downgrade]
enabled = true
filter = tls-downgrade
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600
- fail2ban を再起動します:
sudo systemctl restart fail2ban
この構成により、サポートされていない(古い可能性が高い)SSL/TLS バージョンを使用して繰り返し接続しようとする IP アドレスが禁止されます。
これらの対策を実装することで、TLS_FALLBACK_SCSV がサポートされていない場合でも、TLS ダウングレード攻撃のリスクを大幅に軽減できます。
リンク
- RFC 7507 - TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks
- OWASP TLS Cheat Sheet
- NIST Guidelines for TLS Implementations
標準
- SOC2_CONTROLS:
- CC_6_7
- CC_7_1
- CCPA:
- CCPA_1798_150
- GDPR:
- ART_32
- PCI_STANDARDS:
- REQ_2_3
- REQ_4_1
- REQ_6_5
- HIPAA_CONTROLS:
- SECURITY252
- SECURITY212
- SECURITY213