Unit 42がOpenLiteSpeed Web サーバーに3つの脆弱性を発見

Cloud vulnerabilities conceptual image, covering topics such as OpenLiteSpeed vulnerabilities

This post is also available in: English (英語)

概要

Unit 42の調査チームは、オープンソースのOpenLiteSpeed Web Serverに3種類の脆弱性を調査・発見しました。これらの脆弱性は、エンタープライズ版であるLiteSpeed Web Serverにも影響します。これらの脆弱性をつなぎ合わせて悪用すると、攻撃者はWebサーバーを侵害し、完全な特権でのリモートコード実行を獲得できます。今回発見された脆弱性は以下の通りです。

  1. リモートコード実行(CVE-2022-0073) 深刻度: 高 (CVSS 8.8)
  2. 特権昇格(CVE-2022-0074) 深刻度: 高 (CVSS 8.8)
  3. ディレクトリトラバーサル(CVE-2022-0072) 深刻度: 中 (CVSS 5.8)

OpenLiteSpeedは、LiteSpeed Technologiesが開発・保守しているLiteSpeed Web Server Enterpriseオープンソース版です。LiteSpeed Web Serverは、最も人気のあるWebサーバーの第6位にランクインしています。ShodanとパロアルトネットワークスCortex Xpanseの分析によると、LiteSpeedは全Webサーバーアプリケーションの約2%を提供していて、全世界で約190万台のユニークサーバーが存在することが明らかになっています。

Unit 42は2022年10月4日、LiteSpeed Technologiesに対し、当該脆弱性に関する責任ある開示を行い、改善策を提案しました。LiteSpeed Technologiesは2022年10月18日、報告された脆弱性を緩和する修正バージョン(v1.7.16.1)をすみやかに公開しました。

OpenLiteSpeedのバージョン1.5.11から1.7.16まで、およびLiteSpeedのバージョン5.4.6から6.0.11までを利用している場合、ソフトウェアを最新の修正対応版(v1.7.16.1、6.0.12)に更新することが推奨されます。

Prisma Cloud WAASまたは高度な脅威防御[1][2]を有効にした次世代ファイアウォール(NGFW)をご利用中のパロアルトネットワークスのお客様は、同攻撃をブロックする新しいルールとシグネチャによりこれらの脆弱性からの保護を受けています。

関連するUnit 42のトピック Containers, cloud

目次

背景
リモートコード実行
特権昇格
ディレクトリトラバーサル
回避・緩和策
結論

背景

LiteSpeedはパフォーマンスに特化したWebサーバーです。私たちの調査からは、インターネットに公開されているLiteSpeedサーバーのインスタンスは190万台あることが判明しています。

セキュリティ意識の向上・啓発のための社会貢献活動の一環として、弊社はLiteSpeed Web Serverのオープンソース版であるOpenLiteSpeedの監査を行いました。

私たちは、脆弱性が発見された場合はそれらをベンダーに開示することを念頭に、攻撃者の振る舞いをまねた研究に取り組みました。調査の結果、エンタープライズ向けソリューションとオープンソース向けソリューションの両方に影響を与える3つの脆弱性が発見されました。これらの脆弱性をつなぎあわせて悪用した場合、管理者用ダッシュボードへの認証情報を持つ攻撃者は、脆弱なコンポーネント上での特権コード実行を獲得できる可能性があります。

リモートコード実行

この脆弱性のCVE番号: CVE-2022-0073

攻撃の最初の段階でリモートコード実行を試みたところ、OpenLiteSpeed Web Serverの管理者用ダッシュボードにはコマンドインジェクションの脆弱性があることがわかりました。脅威アクターがブルートフォース攻撃やソーシャルエンジニアリングによってダッシュボードの認証情報を得た場合、この脆弱性を悪用すればサーバー上でコードを実行できます。

この脆弱性はExternal App Commandフィールドに存在します。このフィールドにはサーバーの起動時に実行したいコマンドを指定できます。

この機能は危険と考えられているため、悪用への対策がなされています。私たちはこの対策を回避し、External App Commandの機能を悪用して、サーバー上に悪意のあるファイルをダウンロードし、 nobodyユーザーの権限で実行することに成功しました(nobodyはLinux マシンに伝統的に存在する非特権ユーザー)。

特権昇格

この脆弱性のCVE番号: CVE-2022-0074

サーバー上でコードを実行できるようになった後は、さらに踏み込んでnobodyからrootへの特権昇格をはかりました。

OpenLiteSpeedのDockerイメージをnobodyとして探索していたところ、PATH環境変数に設定ミスがあることがわかりました。CWEのuntrusted search pathを使えば、この設定ミスを権限昇格に悪用可能です。

相対パスでバイナリを実行する場合、オペレーティングシステムはディレクトリの一覧を含むPATH変数を参照します。このとき、PATHに記載されているディレクトリと同じ順序で、記載されたフォルダ内でそのバイナリが検索されます。

今回の問題はPATHの2番目のディレクトリが/usr/local/binだったことです。このディレクトリはユーザーnobodyが管理するディレクトリです。

つまり、攻撃者が非特権ユーザー(nobodyなど)としてコードを実行し、正規バイナリに偽装した悪意のあるファイルを/usr/local/binに置いておくと、このバイナリはPATH環境変数の2番目のディレクトリに存在することから、より高い特権をもつプロセスが実行してくれることを期待できます。

このエクスプロイトにあたって私たちはentrypoint.sh(図1)というスクリプトを悪用しました。このスクリプトはrootとしてgrepのバイナリを繰り返し実行する内容になっています。

entrypoint.shスクリプトのコードスニペット。rootとして実行され、バイナリgrepを繰り返し実行する
図1. entrypoint.shスクリプト。PATH環境変数の設定ミスを突いたgrepコマンドの利用

これらの脆弱性をつなぎ合わせれば、リモートコード実行を獲得してrootに特権を昇格できます(図2参照)。

脆弱性をつなぎ合わせてリモートコード実行を獲得し、rootに特権を昇格できることを示すコードスニペット
図2. エクスプロイトに成功

この脆弱性を悪用するには、攻撃者の管理下にあるユーザーが/usr/local/binに対する書き込み権限を持つ必要があります。通常、デフォルトではこの権限は付与されていません。ただしOpenLiteSpeedのDockerコンテナの場合、このディレクトリはデフォルトでユーザーnobodyによる書き込みが可能です。

ディレクトリトラバーサル

この脆弱性のCVE番号: CVE-2022-0072

最後に私たちが発見した問題はディレクトリトラバーサルの脆弱性です。これを悪用すれば、攻撃者がセキュリティ対策を回避し、禁じられたファイルにアクセス可能になります。サーバーを侵害した攻撃者は、秘密のバックドアを作成し、当該脆弱性を悪用してこのバックドアにアクセスできるようになります。

LiteSpeedでブラウズするさい、当該サーバーは、クライアントから見えるべきエンドポイントのみが、それらクライアントからアクセスできるエンドポイントであるようにしています。この実装は、要求されたURLにディレクトリトラバーサルを引き起こす文字が含まれていないことを検証することによって行っています。その結果、禁止されたエンドポイントにはアクセスできないようになります。

この検証は、2060行目と2061行目の2つの正規表現で行われていますが、これらの正規表現の検証をなんとか回避することで当初はアクセスできなかったパスにアクセスできるようになりました。

この脆弱性を悪用すれば、攻撃者はWebのルートディレクトリにある任意のファイルにアクセスできます。ただし、アクセスできるのはこのディレクトリに限られます。

回避・緩和策

Unit 42は2022年10月4日、LiteSpeed Technologiesに対し、当該脆弱性に関する責任ある開示を行い、改善策を提案しました。LiteSpeed Technologiesは開示された脆弱性に対応する修正バージョンv1.7.16.1(OpenLiteSpeed用)と 6.0.12(LiteSpeed用)を公開しました。

前述のコマンドインジェクションの緩和対策の正規表現は、CVE-2022-0073への緩和策として、外部スクリプトのダウンロードを防止できるよう、curlfetchwgetなどのバイナリを含める変更がなされました。

CVE-2022-0072への緩和策として、前述の書き換え条件の正規表現は変更されました。

ols-dockerfilesリポジトリにもパッチが適用されました。ユーザーnobodyの管理するパスをPATH変数の最後に置くように設定してバイナリ実行のハイジャックを防止することで、CVE-2022-0074を緩和しています。

結論

WebサーバーをはじめとするWeb技術はこの数十年で大きく進歩してきました。安全性は格段に向上しましたが、技術進歩が速いので、いまも脆弱性は発見されつづけています。

クラウドセキュリティの向上に向けた取り組みの一環として、パロアルトネットワークスでは、高度な脅威モデルやクラウドプラットフォーム、Webサーバー、その他関連技術の脆弱性テストを含む、パブリッククラウドとWebアプリケーションのリサーチに積極的に投資しています。

パロアルトネットワークスのお客様は、以下の製品とサービスによって、これらの攻撃からの保護を受けています。

  1. Prisma Cloud WAASのお客様は、同脅威の緩和用仮想パッチを受け取っています。これにより、脆弱性のある資産にパッチが適用されるまでの間継続して保護されます。
  2. 高度な脅威防御[1][2](シグネチャ93190、93191)を有効化した次世代ファイアウォールは前述の攻撃をブロックします。

LiteSpeed Technologiesには、報告された問題への迅速な対応と修正の作成、開示プロセスでのプロフェッショナルなご対応をいただきましたことを感謝申し上げます。ありがとうございました。

パロアルトネットワークスはファイルサンプルや侵害の兆候などをふくむこれらの調査結果をCyber Threat Alliance (CTA サイバー脅威アライアンス) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使用して、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害することができます。詳細についてはCyber Threat Allianceにてご確認ください。

2022-11-16 09:45 JST: 2022-11-15 の英語版の更新を反映 (著者名を脆弱性発見者1名のみに変更)