OpenSSLの新たな重大な脆弱性:知っておくべきこと
2022年10月31日
0 分で読めます編集者注:2022年11月1日
Snykは、自社のシステムとツールでOpenSSL v3が使用されているか確認しました。その結果、Snyk Brokerのバージョン4.127.0~4.134.0では、影響を受けるOpenSSL 3.0が使用されていることが判明しました。バージョン4.135.0以降にアップグレードしてください。Snyk Brokerを使用すると、お客様はサポート対象の社内SCMプラットフォームをSnykと連携できます。
2022年10月25日、OpenSSLプロジェクトは、重大なセキュリティ脆弱性に対処するOpenSSLのリリース(バージョン3.0.7)を近日公開すると発表しました。脆弱性は1件ではなく2件あり、2022年11月1日(火)に公開され、OpenSSLプロジェクトは問題と修正について詳しく説明するブログを公開しました。Snykも別のブログで、脆弱性の詳細と、深刻度が「重大」から「高」に引き下げられた理由を解説しています。この記事では、このような脆弱性に備えるためのSnykの活用方法に焦点を当て、最新情報に基づいて内容を更新しています。
Snykはアドバイザリを公開しました。現時点で判明している情報を掲載しており、新たな情報が公表された場合は更新します。
脆弱性について
OpenSSLプロジェクトはこの脆弱性を「重大」としていますが、OpenSSL 3.0より前のバージョンには影響しないと説明しています。つまり、OpenSSL 3.0未満のバージョンを使用している場合、現時点では影響を受けないはずです。
OpenSSLプロジェクトのセキュリティポリシーでは、「重大な脆弱性」を次のように定義しています。
これは、一般的な構成に影響し、悪用される可能性も高い脆弱性です。たとえば、サーバーメモリの内容が大量に漏えいする(ユーザーの詳細情報が明らかになる可能性がある)脆弱性、リモートから容易に悪用してサーバーの秘密鍵を侵害できる脆弱性、または一般的な状況でリモートコード実行が起こり得る脆弱性が該当します。こうした問題は非公開で扱われ、サポート対象の全バージョンについて新しいリリースが公開されます。可能な限り速やかに対処するよう努めます。
深刻度を「重大」に引き下げた理由については、OpenSSLのブログをご覧ください。
脆弱なOpenSSLのバージョン(3.0以降)は、Ubuntu 22.04 LTSやRHEL 9などのLinux OSで現在使用されています。一方、DebianなどのLinuxディストリビューションでは、OpenSSL 3.xは最新リリースにのみ含まれており、これらはまだテスト版と見なされるため、本番システムで広く使われている可能性は低いでしょう。影響を受けるバージョンのLinuxを使ってビルドされたコンテナイメージも影響を受けます。ただし、多くの人気のあるDocker公式イメージでは、OpenSSL 1.xを使用し、影響を受けないDebian Bullseye(11)やAlpineが使われている点にご注意ください。Webトラフィックの処理で広く使われているnginxやhttpdなどのプロジェクトのDocker公式コンテナイメージも、BullseyeやAlpineを使用しているため影響を受けません。
Node.js 18.xと19.xもデフォルトでOpenSSL 3を使用しています。そのため、今後数日以内にNode.jsのアップデートが提供される見込みです。
また、開発者がC/C++を使用している場合、コードにOpenSSL v3のパッケージを組み込んでいる可能性があります。該当するOpenSSLパッケージがないか、コードを確認してください。
脆弱性が公開される前に影響の有無を確認する方法
今回の脆弱性で興味深いのは、OpenSSLプロジェクトがリリースの1週間前に、重要なセキュリティ修正を予定していると発表したことです。少なくとも1件の重大な脆弱性があると告知されていたため、影響を受ける可能性のあるアプリケーション、コンテナ、サーバーを探す時間がありました。脆弱性が公開された後であれば、Snykなどのセキュリティツールが当然その存在を検出し、修正方法を提示します。しかし、公開前にSnykを活用して対策を立てるには、どうすればよいでしょうか。
以下の手順は今回のOpenSSLの脆弱性を対象としていますが、ソフトウェア部品表(SBOM)があり、すべてのオープンソースパッケージとコンテナを対象にSCA分析を実施していれば、事前に詳細が判明しているあらゆる脆弱性に活用できます。
BusinessまたはEnterpriseプランをご利用のSnykのお客様は、脆弱なバージョンのOpenSSL(3.0.x)を含むすべてのプロジェクトを確認できます。レポートから依存関係に移動し、検索ボックスにopensslと入力すると、3.0.xのバージョンが使われている箇所を確認できます。プロジェクトのリンクから、該当するプロジェクトに移動できます。必要に応じて、データをCSVファイルにエクスポートすることもできます。

Snyk APIを利用できるお客様(BusinessおよびEnterpriseプラン)も、APIを使ってこのデータを抽出できます。たとえば、Snyk Labsチームが提供するユーティリティsnyk-deps-to-csvを使って、依存関係をCSVに抽出できます。また、dependencies APIを直接利用することもできます。
無料アカウントを含むすべてのSnykユーザーは、Snykダッシュボードでプロジェクトを選択し、「Dependencies」タブをクリックして「openssl」を検索すると、脆弱なバージョンのOpenSSLをスキャンできます。ここでも、影響を受けるのはOpenSSL 3.0.xのバージョンです。

まだSnykでプロジェクトをテストしていない場合は、Snyk CLIを使ってテストできます。
OpenSSLなどのオープンソースパッケージや、OpenSSLを使用する推移的依存関係についてコードプロジェクトをテストするには、
snyk testを実行するとCLI上で結果を確認でき、snyk monitorを実行するとSnykのWeb UIで結果を確認できます。C/C++を使用しており、パッケージマネージャーを介さずに(unmanaged)OpenSSLがプロジェクトに含まれているか確認するには、
snyk testの実行時に--unmanagedオプションを追加します。
コンテナイメージをテストするには、
snyk container testを実行するとCLI上で結果を確認でき、snyk container monitorを実行すると結果をSnykのWeb UIに送信できます。上記いずれの種類の
testでも、CLIで依存関係の一覧を表示するには--print-depsオプションを追加します。monitorコマンドを使用する場合、依存関係はSnykのWeb UIに自動的に報告されます。Linuxを使用している場合は、ターミナルで
openssl versionコマンドを実行するだけで、使用中のOpenSSLのバージョンを確認できます。

新たなOpenSSLの脆弱性を緩和する方法
2022年11月1日(火)に脆弱性が発表され、セキュリティリリースが予定されていることをチームに知らせましょう。チームが問題と今後のリリースを把握しておくことが、備えとして最も重要です。
アプリケーションとインフラを評価し、OpenSSL 3.0以降をどこかで使用していないか確認しましょう。
2022年11月1日(火)に、脆弱なOpenSSLのインストールを更新できるよう準備しましょう。
脆弱性の検出と修正にSnykをお使いの場合、詳細が公開される2022年11月1日に、脆弱性をデータベースに登録し、プロジェクトをスキャンした際に検出できるようにします。修正が利用可能になり次第、Snykが追跡している脆弱なバージョンを更新するよう通知します。
慌てないでください!
重大な脆弱性への対応はストレスになることがありますが、慌てないでください。OpenSSLプロジェクトには、セキュリティインシデントに責任を持って対処し、迅速に修正を提供してきた長年の実績があります。
Snykのような脆弱性検出ツールをまだ使っていない場合、今が試すよい機会かもしれません。こうしたツールを使えば、今回のようなインシデントが発生した際に通知を受け取れ、修正が利用可能になったときには、セキュリティ修正の展開にも役立ちます。
すべての問題を修正することはできませんが、重大な脆弱性を把握し、迅速に更新することは、リスクを減らし、侵害を防ぐための確実な対策です。
詳細情報
脆弱性の公開に備えるうえで、次の関連リソースも参考になります。
Docker DSA 2022-0001:CVEの公開に先立つ暫定アドバイザリ。影響を受けるパッケージと公開コンテナイメージの一覧が掲載されています。
SANS Internet Storm Center:影響を受けるLinuxディストリビューションの一覧
DistroWatch:影響を受けるLinuxディストリビューションの一覧
Node.jsのお知らせ:Node.jsのセキュリティリリースに関する案内。Node.js v18.xおよびv19.xがOpenSSL v3を使用していることが記載されています。
キャプチャー・ザ・フラッグを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、キャプチャー・ザ・フラッグの課題の解き方を学びましょう。



