はじめに
目的
本資料はSSL/TLSに関する代表的な脆弱性を分かりやすくまとめることを目的としています。プロトコル自体、暗号スイート、実装の不具合など複数の層に分け、具体例を示して理解しやすく整理します。
対象読者
システム管理者、開発者、セキュリティ担当者、または技術的な基礎知識を持つ一般の方を想定します。専門用語は必要最小限に留め、具体例や簡単な説明で補足します。
本資料の構成
第2章から第6章までで次の項目を扱います。
– 代表的な脆弱性名(例:心臓出血やPOODLEなど)
– プロトコルバージョンの問題点
– 実装・ライブラリ起因の脆弱性
– 暗号スイートや設定上の問題
– 検索や確認に使えるキーワード一覧
各項目は概要、影響、対策の方向性を簡潔に説明します。
利用上の注意
本資料は学習と運用の参考を目的としています。具体的な対処は環境に応じて実施してください。攻撃手法の詳細な説明は控え、発見や対応に役立つ情報に絞って記載します。
代表的なSSL/TLS脆弱性名
POODLE
SSL 3.0のCBCパディング処理の欠陥を突く攻撃です。古いプロトコルを使うようダウングレードさせて、暗号化されたクッキーなどを1バイトずつ復号します。例:攻撃者が中間者になりブラウザ通信を操作する場面。
BEAST
TLS 1.0でCBC暗号の初期化ベクトルが予測可能な点を利用する攻撃です。悪意あるスクリプトでセッション情報(クッキー)を逐次取得します。現代のブラウザは対策済みです。
CRIME
TLSやSPDYの圧縮機能が情報漏えいの原因になります。攻撃者が入力を注入し、応答サイズの変化から秘密を推測します。例:ログインフォームと圧縮を組み合わせた場合。
BREACH
HTTPレスポンス圧縮を悪用してレスポンス内の秘密(トークンなど)を推定します。CRIMEと似ますが、対象はHTTPレベルの圧縮です。
Heartbleed
OpenSSLのハートビート実装にある境界チェック不足で、サーバーのメモリを読み出せます。秘密鍵やユーザ情報が漏れる恐れがあります。
FREAK / Logjam
どちらも暗号のダウングレード攻撃です。FREAKは弱いEXPORT RSA、LogjamはEXPORT DHを強制して鍵を破り中間者が復号します。
DROWN
サーバーがSSLv2をサポートしていると、その弱点を使って現代のTLS接続の秘密(RSA鍵)を盗用できます。
ROBOT
古いBleichenbacher型のRSAパディングオラクルを利用した復号攻撃です。RSA暗号文を段階的に解読できます。
Lucky 13
CBCモードでのMACとパディング処理の時間差を測ることで、部分的に平文を得るタイミング攻撃です。
SWEET32
3DESなど64ビットブロック暗号は大量のデータ転送でブロック衝突が起き、セッション内の情報を引き出せます。長時間の接続が危険です。
再ネゴシエーション攻撃
セッション再交渉時にクライアントデータを注入される問題です。安全な再ネゴシエーションが導入される前に報告されました。
TLSダウングレード攻撃
攻撃者が通信を古いプロトコル(SSLv3/TLS1.0など)へ強制し、既知の脆弱性を突く手法です。
プロトコルバージョンの脆弱性
概要
SSL 3.0やTLS 1.0/1.1は設計や仕様上の弱点が多く、現在は非推奨または無効化が推奨されます。特にSSL 3.0はPOODLE攻撃が知られており、多くのガイドラインで完全無効化が前提です。
なぜ脆弱なのか
古いプロトコルは暗号処理やハンドシェイクの仕様が弱く、攻撃者に隙を与えやすいです。たとえば暗号化の仕組み自体に回避手段があるため、平文を部分的に復元されることがあります。
代表的な問題例
- POODLE: SSL 3.0のパディング処理の欠陥を突く攻撃です。クッキーなど機密情報を盗まれる危険があります。
- BEAST: TLS 1.0でブロック暗号の使い方から生じる攻撃です。ブラウザ経由での情報漏えいが問題になります。
- ダウングレード攻撃: サーバーとクライアントの間で古いバージョンに落とされ、既知の脆弱性を突かれます。
対策
- SSL 3.0、TLS 1.0/1.1は無効化する。可能ならTLS 1.2以上を使用します。
- サーバーとクライアントで最低バージョンを設定し、ダウングレード防止機能を有効にします。
- 移行時は互換性テストを行い、古いクライアント向けに段階的な対応を検討します。
移行時の注意点
古い機器やソフトが接続できなくなることがあります。まず影響範囲を調べ、代替手段や段階的なスケジュールを用意すると安心です。
実装・ライブラリ起因の脆弱性
実装由来の脆弱性とは
ライブラリや実装のバグにより、暗号が正しく動作しない問題です。たとえばメモリの扱いを誤ると情報が漏れます。Heartbleedのように短いコードの不備が重大な流出につながった例があります。
代表的な例
- Heartbleed(OpenSSLのメモリ読み取り)
- バッファオーバーフロー(入力長チェック不足)
- サイドチャネル(時間差や電力で鍵が推測される)
CVEとバージョン照合の実務
脆弱性はCVEで公開され、対象のライブラリとバージョンが書かれます。運用ではまず自社のライブラリ一覧を作り、CVEデータベースや配布元のアドバイザリと突き合わせます。パッケージ管理ツールでバージョンを固定していれば確認が楽になります。
検出・対策の手順
- 資産管理:どのサーバーでどのライブラリを使っているかを把握します。
- 情報収集:CVEやベンダーの修正情報を定期的に確認します。
- テスト環境でパッチ適用と動作確認を行います。
- 本番で迅速にアップデートし、必要ならば一時的に脆弱な機能を無効化します。
運用上の注意点
- ベンダーのバックポート対応に注意してください。見かけ上のバージョンは古くても修正済みの場合があります。
- 代替ライブラリへ移行する際は互換性やサポート状況を確認してください。
暗号スイートと設定上の問題
概要
暗号スイートや鍵・署名の設定が古いままだと、既知の攻撃に対して弱くなります。こうした問題は「ゼロデイ」ではなく、設定ミスや時代遅れの選択による既知のリスクです。
主な問題点
- 古い暗号スイートの使用:RC4、3DES、EXPORT(弱いRSA/DH)、NULL/ANONなどは安全性が足りません。
- 不十分な鍵長:RSA鍵が短い(例:1024ビット)、DHパラメータが小さいと破られやすいです。
- 弱い署名アルゴリズム:SHA-1署名は衝突リスクがあり推奨されません。
具体例と影響
- RC4や3DESは復号が容易になっているため、通信の機密性が損なわれます。
- NULLスイートだと暗号化されずに平文が送られます。
- 短い鍵や弱い署名を使うと、中間者攻撃や証明書偽造のリスクが上がります。
対策(実践的)
- サーバー設定でRC4/3DES/EXPORT/NULL/ANONを無効化します。
- 鍵長はRSAは最低2048ビット(可能なら3072)、DHは2048ビット以上を使用します。ECDSAや楕円曲線鍵(P-256/P-384)を検討します。
- 暗号スイートはAES-GCMやChaCha20-Poly1305、鍵交換はECDHEを優先し、前方秘匿性を有効にします。
- 署名はSHA-256以上を使用します。
検出方法
セキュリティベンチマークや脆弱性診断ツールは、これらの設定ミスを指摘します。OpenSSLのs_clientや公開のスキャンサービス、testssl.shなどで確認できます。
一覧を確認するためのキーワード
キーワード例
- 「SSL 脆弱性 一覧」
- 「TLS 代表的な脆弱性 POODLE BEAST CRIME など」
- 「OpenSSL 脆弱性 CVE 一覧」
- 「SSL/TLS ベストプラクティス 非推奨 暗号スイート」
組み合わせの具体例(検索窓にそのまま入力)
- “SSL 脆弱性 一覧” site:example.com
- “OpenSSL” CVE OR “CVE-2020” など(CVE番号の断片で絞り込み)
- “POODLE” OR “BEAST” OR “CRIME” を同時に検索して代表例を確認
- “OpenSSL 1.0.2 CVE” で特定バージョンの問題を探す
- filetype:pdf “SSL 脆弱性”(ホワイトペーパーや公式資料を探す)
検索のコツ
- 引用符(””)でフレーズ検索するとノイズを減らせます。
- OR で複数候補を一度に探せます。AND は省略で複数ワード検索と同等です。
- site: を使って公式やベンダーのページに限定すると信頼性が上がります。
- CVE番号(例: CVE-2014-0160)で検索すれば詳細情報に直接たどり着けます。
絞り込みと確認
- 日付範囲で絞ると古い情報を除外できます。
- 英語キーワードも併用すると情報量が増えます。
- ベンダーのセキュリティアドバイザリやNVD、CVEリストなど公式ソースで最終確認してください。












