OpenSSLの脆弱性(CVE-2020-1971)に関するIndyライブラリの影響
問題
2020年12月08日 (米国時間)、OpenSSLプロジェクトから OpenSSL の脆弱性(CVE-2020-1971) に関するアップデート情報が公開されました。
この公開された情報によると、OpenSSL には、X.509 証明書の GENERAL_NAME が EDIPartyNameを含む場合に、GENERAL_NAME_cmp 関数内で
NULL ポインタ参照が発生する脆弱性があります。
この脆弱性を悪用されると、OpenSSL を実行しているサーバーおよびクライアントアプリケーションにおいて、サービス運用妨害 (DoS) 攻撃が行われる可能性があります。
本症状の影響をうけるOpenSSLのバージョンは以下の通りです。
- OpenSSL 1.1.1 および 1.0.2 のすべてのバージョン
なお、OpenSSL Project によると OpenSSL 1.0.2、OpenSSL 1.1.0 については、既にサポートが終了しており、有償サポートを契約していない場合は1.0.2の修正バージョンを入手することができません。
そのため基本的にOpenSSL1.1.1i へのアップグレードを推奨しています。
ただし、Indyが現時点でサポートしているOpenSSLのバージョンは1.0.2迄で、1.1.1は非対応なため、推奨するバージョンへアップグレードできません。
エンバカデロでの対応
エンバカデロでは、お客様からQuality Portal経由で報告されたIndy関連の問題は、開発部からIndyコミュ二ティへ報告していますが、Indyプロジェクトに対して直接的な管理、制御は行っておりません。そのため、エンバカデロでも今回の脆弱性の修正、あるいは対応した版のIndyのリリース時期はわかっておらず、未定となっております。
※RAD Studioでは、新バージョンのリリース時にIndyのスナップショット(その時の最新版)をバンドルしています。
なお、10 Seattle以降のバージョンでは、今回のようなIndyのOpenSSLの脆弱性のサポートの対応が遅いという観点から一部の通信コンポーネントをIndyライブラリからHTTPクライアントライブラリへ移行した経緯がございます。
解決
今回の脆弱性に関するIndyライブラリ、ならびにDelphiのRTLに対する影響ですが、
- Indyライブラリの実装コードでGENERAL_NAME_cmp関数は使用していない
- Delphi RTLの実装コードでも同様にGENERAL_NAME_cmp関数は使用していない
以上の観点から、お客様のアプリケーションコード内で明示的にこの関数を使用しない限り、今回の問題は特に影響はいたしません。
またHTTPクライアントに関して、TNetHTTPClientなどのコンポーネントを利用されている場合は、実装コード内部のセキュリティ機能としてOpenSSLには全く依存していないため、こちらも影響を受けることはありません。
そのため、お客様のアプリケーション内で、もしIndyのTHTTPコンポーネントを利用している箇所がある場合には、今後も同様の脆弱性が見つかるリスクが考えられますので、できるだけ早い段階でTNetHTTPClientなどのHTTPクライアントへ移行することを推奨いたします。