#7【英語記事和訳】PoC Exploit Released for DoS Vulnerability in OpenSSL
- 概要
日付: 2020-05-05
OpenSSL の最近公開されたDoS 系の脆弱性を悪用するPoC が公開された.本脆弱性は,Bernd Edlinger 氏のGCCの静的コードアナライザーを用いて発見された.
悪用の仕方は簡単で,悪意のあるペイロードを本脆弱性の影響を受けるソフトウェアを使用しているサーバーに対して送信するだけである.
被害を受けるサーバーは一般的でないSSL_check_chain()関数を呼び出された場合であるが,ペイロード受け取るとシステムがクラッシュする可能性がある.
研究者によると,攻撃者が用意した悪意あるTLS サーバーを用意したり,中間者攻撃を実行することで,クライアントをダウンさせることも可能であることのこと.
- 和訳
最近パッチが当てられた OpenSSL の脆弱性の PoC (proof-of-concept) 悪用が公開されました。
OpenSSL バージョン 1.1.1.1d, 1.1.1e, 1.1.1f は、SSl_check_chain 関数のセグメンテーションの欠陥として記述されている高レベルの脆弱性の影響を受けています。CVE-2020-1967 として追跡されているこの欠陥は、OpenSSL 1.1.1.1g のリリースで 4 月 21 日にパッチが当てられました。
このセキュリティホールは Bernd Edlinger 氏が最近導入された GNU Compiler Collection (GCC) の静的コードアナライザーを用いて発見したものです。
セキュリティ研究者のImre Rad氏は、この脆弱性のPoCエクスプロイトを、エクスプロイトプロセスの説明とともに公開しました。
"この脆弱性の悪用は非常に簡単で、悪意のあるペイロードを脆弱なサーバに送信するだけです。
被害者側はもっと複雑です - アプリケーションが脆弱なのは、影響を受けたバージョンの lib を使用して SSL_check_chain() 公開 API 関数を呼び出した場合だけです。これは本当に一般的なことではありません - あえて言うならば、大多数のTLSサーバはこの関数を呼び出していません。しかし、そのようなサーバは、この脅威の深刻度が非常に高いのです。"
"単純なバージョンチェックをしたのか、関数呼び出しの検証をしたのかは定かではありませんが。影響を受けるサーバはペイロードを受信するとクラッシュします - ウォッチドッグがプロセスを監視しているかどうかによっては、一時的にダウンしたり、永久にダウンしたりします。"また、認証に相互 TLS を使用しているサービスも保護されていません - 脆弱性のあるコードは TLS 1.3 のハンドシェイク処理に存在します"
研究者によると、この脆弱性はマンインザミドル(MitM)攻撃や、悪意のあるTLSサーバを設定して、脆弱なクライアントから接続させることでも悪用できるとのことです。
"クライアントをダウンさせた場合の影響は通常低いと考えられているので、これ以上の分析はしませんでしたが、(脆弱性のあるバージョンの lib を使用してその関数を呼び出すことを考えると)脆弱性の悪用を防ぐことができるものは何もないと思います" と Rad 氏は指摘しています。
研究者は、悪用される可能性があるという懸念から、PoCの悪用を公開することを躊躇していたと述べています。
"スクリプト小僧がやったことを責められたくはありませんが、完全な公開についての Schneier の見解を思い出し、それが今後の道であることを認めざるを得ませんでした (他の人が同様の悪用法を簡単に開発する可能性があります)」と Rad は電子メールで述べています。
CVE-2020-1967は、2020年にOpenSSLで最初にパッチが当てられた脆弱性だった。数ヶ月前にSecurityWeekが報じたように、2014年のHeartbleed脆弱性の開示以来、OpenSSLのセキュリティは進化してきた。
Heartbleedが公開されてから2016年末までの間に、OpenSSLには十数件近くの重要度の高い脆弱性が発見されていましたが、2017年には1件だけ高重度の欠陥が確認され、2018年と2019年にパッチ適用された問題はすべて低重度または中重度のものでした。
- 原文
A proof-of-concept (PoC) exploit has been made public for a recently patched vulnerability in OpenSSL that can be exploited for denial-of-service (DoS) attacks.
OpenSSL versions 1.1.1d, 1.1.1e and 1.1.1f are affected by a high-severity vulnerability that has been described as a segmentation fault in the SSl_check_chain function. The flaw, tracked as CVE-2020-1967, was patched on April 21 with the release of OpenSSL 1.1.1g.
The security hole was discovered by Bernd Edlinger using a recently introduced GNU Compiler Collection (GCC) static code analyzer.
Security researcher Imre Rad has published a PoC exploit for the vulnerability, along with a description of the exploitation process.
“Exploitation of this vulnerability is pretty easy, one just needs to send the malicious payload to the vulnerable server — this can be done for example by using the patched openssl s_client utility available on my GitHub page,” Rad told SecurityWeek.
He added, “The victim's side is more complex — the application is vulnerable only if using the affected version of the lib and calling the SSL_check_chain() public API function. This is not really common — I'd even dare to say the vast majority of TLS servers don't call that function. But the ones that do — the severity of this threat is indeed high for them.”
“I've seen some vendors confirming they are affected — not sure though whether they did a simple version checking or verified the function call as well. The affected server crashes upon receiving the payload — depending on whether a watchdog is supervising the process or not, it may go temporarily or permanently down,” Rad said. “Also worth to mention, services using mutual TLS for authentication are not protected either — the vulnerable code resides in the TLS 1.3 handshake processing.”
The researcher said the vulnerability can also be exploited through a man-in-the-middle (MitM) attack or by setting up a malicious TLS server and getting a vulnerable client to connect to it.
“The impact of taking a client down is usually considered lower, so I didn't analyze this any further, but I see nothing that could prevent exploitation of it (given that using the vulnerable version of the lib and calling that function),” Rad noted.
The researcher said he was hesitant to make the PoC exploit public due to concerns that it could be abused.
“I don't want to be blamed for what script kiddies do — but then I recalled Schneier's views about full disclosure and I had to admit that is the way to go forward (others could develop a similar exploit easily anyway),” Rad said via email.
CVE-2020-1967 was the first vulnerability patched in OpenSSL in 2020. As SecurityWeek reported a few months ago, OpenSSL security has evolved since the disclosure of the Heartbleed vulnerability back in 2014.
While nearly a dozen critical and high-severity vulnerabilities were found in OpenSSL between the disclosure of Heartbleed and the end of 2016, in 2017 there was only one high-severity flaw identified, and in 2018 and 2019 all the patched issues had low or medium severity.
- 所感/メモ
Heartbleed以来のOpenSSL の大きな脆弱性で,DoS とはいえ注目している.PoC がでたようで,(Exploit DB にはまだ出ていなかった)容易にHeartbleed と同じく容易に悪用できてしまう.記事の内容を見ると,サーバーサイドだけでなくクライアントサイドにもクラッシュの影響を出すことができるらしい.
Heartbleed が2014年なので,かれこれ6年くらいはインパクトの大きい脆弱性はあまり出ていない認識だが,久しぶりにでたとのことなので,Heartbleed の時のようにPoC 検証して遊んでみたい.(もちろん自分の閉じた環境下で)
- 出典