コンテンツにスキップ

LOGJAM Common Prime Vulnerability

LOGJAM Common Prime の脆弱性

説明

この脆弱性は、サーバーが広く共有されているDiffie-Hellman(DH)素数を使用していることを示しており、効率的な事前計算攻撃を可能にします。これにより、国家主導の攻撃者がインターネットトラフィックの大部分をパッシブに復号化できるようになります。

LOGJAM-common_primesは、サーバーが何百万ものインストール環境で共有されている標準的なDHパラメータ(素数)を使用している場合に発生します。共有の素数を使用することは安全であると考えられていましたが、数体ふるい法(number field sieve algorithm)により、攻撃者は素数ごとに高コストな暗号化テーブルを一度事前計算するだけで、その素数を使用するあらゆる接続を迅速に解読できるようになります。

仕組み:

  1. 攻撃者は、広く使用されているDH素数(Apache/OpenSSLのデフォルトパラメータなど)を特定します。
  2. ターゲットの素数に対して高コストな事前計算(数週間の計算時間)を実行します。
  3. その素数を使用するあらゆるサーバーからのDH鍵交換をパッシブにキャプチャします。
  4. 事前計算されたテーブルを使用して、個々の接続を数分で解読します。
  5. 同じ素数を共有する何百万ものサーバー全体に攻撃をスケールさせます。

要件:

  • サーバーが一般的な/デフォルトのDH素数(1024ビット以下)を使用している。
  • 最初の事前計算のための重要な計算リソース(1024ビットで約1億ドル)。
  • ターゲット接続からのネットワークトラフィックをキャプチャする能力。
  • 中間者攻撃(MITM)の能力は不要であり、純粋なパッシブ攻撃である。

例のシナリオ: 大手クラウドプロバイダーが数千台のサーバー全体でデフォルトの1024ビットDHパラメータを使用しています。国家主導の攻撃者は、この特定の素数のために数ヶ月かけて暗号化テーブルを事前計算します。完了すると、彼らはインターネットトラフィックをパッシブに監視し、これらのサーバーへのあらゆるTLS接続をリアルタイムで復号化できるようになり、アクティブな干渉や検知なしに何百万ものユーザーに影響を与えます。

最も一般的な1024ビットの単一の素数を解読すると、トップHTTPSドメインの18%でのパッシブな盗聴が可能になり、最も一般的な2つの素数を解読すると、世界中のVPNサーバーの66%およびSSHサーバーの26%が侵害されることになります。

推奨事項

LOGJAM共通素数攻撃を軽減するには:

主要な防御 - 一意のDHパラメータを生成する:

# 一意の2048ビットDHパラメータを生成する
openssl dhparam -out unique-dhparams.pem 2048

# Apache: カスタムパラメータを使用する
SSLOpenSSLConfCmd DHParameters /path/to/unique-dhparams.pem

# Nginx: 一意のパラメータの指定  
ssl_dhparam /path/to/unique-dhparams.pem;

デフォルト/一般的な素数を避ける:

これらの広く侵害された素数は決して使用しないでください: - デフォルトのApache 512ビット素数(何百万ものサーバーで使用)。 - デフォルトのOpenSSL 512ビット素数(1995年以降SSLeayに存在)。 - RFC 5114の標準素数(NSAの影響を受けている可能性あり)。

ECDHEへの移行:

最適なソリューション - DHの脆弱性を完全に排除します:

# Apache: DHEよりECDHEを優先する
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:!DHE

# Nginx: ECDHE暗号のみを使用する
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:!DHE;

最小2048ビットのパラメータを使用する:

DHEが必要な場合:

# 最小キーサイズの確保
ssl_dhparam_size 2048;  # Nginx

共通素数のテスト:

# サーバーからDHパラメータを抽出する
openssl s_client -connect example.com:443 -cipher DHE 2>&1 | \
  openssl dhparam -inform PEM -text -noout

# 既知の脆弱な素数と比較する
# 素数がApacheのデフォルトまたはその他の一般的な値と一致するかどうかを確認する

追加の保護:

  • 有限体DHを完全に排除するTLS 1.3を使用する。
  • 中間者攻撃の試みを検出するためにcertificate pinningを実装する。
  • 大規模なトラフィック分析を示す異常な接続パターンを監視する。
  • 暗号スイートを選択する際には、Perfect Forward Secrecyの影響を考慮する。

重要な見解: 強力な1024ビットのDHパラメータであっても、多くのサーバーで共有されると、事前計算コストが償却されるため脆弱になります。一意性はサイズと同じくらい重要です。

リンク

基準

  • SOC2_CONTROLS:
    • CC_6_7
    • CC_7_1
  • CCPA:
    • CCPA_1798_150
  • GDPR:
    • ART_32
  • PCI_STANDARDS:
    • REQ_4_1
    • REQ_6_2
    • REQ_11_3