ソフトウェア・インテグリティ

 

[CyRC脆弱性勧告]GOautodialで発見された複数の脆弱性

認証の不備とローカル・ファイルインクルードの脆弱性により、GOautodialAPIを悪用され、情報漏洩と、リモートコードの実行の可能性があります。

Cyrc advisory.jpeg

概要

Synopsys Cybersecurity Research Center (CyRC) は、オールインワンのコールセンター・ソフトウェア・スイートGOautodialに複数の脆弱性を発見しました。世界中のコールセンターで50,000人が利用しているこのスイートは、オープンソースであり、無料でダウンロードできます。また、複数のプロバイダーから有料のクラウドサービスとして利用することもできます。発見された脆弱性をリモートで悪用し、認証なしでシステム設定を読み取り、認証されたユーザーが(無制限の)ファイルアップロード機能を介して任意のコードを実行することができます。

最初の問題(CVE-2021-43175:認証の不備)は、OWASPトップ10リストの「A01アクセス制御の不備」カテゴリに分類されます。この脆弱性により、GOautodialをホストしている内部ネットワークにアクセスできる攻撃者は、ユーザー名やパスワードなどの資格情報を必要とせずに、GOautodialサーバーからデフォルトパスワードなどの機密性の高い構成データを盗むことができます。このデータは、VoIP電話やサービスなどのネットワーク上の他の関連システムに接続するために使用できます。

2番目の問題(CVE-2021-43176:パストラバーサルを伴うローカルファイルインクルード)により、コンタクトセンターの従業員を含むあらゆるレベルの認証されたユーザーがリモートでコードが実行される可能性があります。 これにより、サーバー上のGOautodialアプリケーションを完全に制御し、従業員や顧客からデータを盗み、さらにはアプリケーションを書き直して、パスワードの盗用や通信のなりすまし(メッセージや電子メールの送信など)などの悪意のある振る舞いをすることができます。

影響のあるソフトウェア

2021年9月27日のコミットb951651以降のGOautodialAPI(https://github.com/goautodial/goAPIv2)のバージョンは脆弱であるように見えます。これには、公開されている最新のISOイメージのインストーラー、GOautodial-4-x86_64-Final-20191010-0150.isoが含まれます。

上記2点の脆弱性は、2021年10月20日のコミット15a40bcでパッチが適用されています。

影響

CVE-2021-43175: Broken authentication(認証の不備)
GOautodialは、さまざまなAPI関数を実装する他のPHPファイルにルーティングするユーザー名、パスワード、およびアクションを受け入れるAPIルーターを公開します。GOautodialの脆弱なバージョンは、ユーザー名とパスワードを適切に検証せず、呼び出し元がこれらのパラメーターに任意の値を指定して正常に認証できるようにします。

その結果、呼び出し元はGootoDialシステムの有効な認証情報を持たなくとも、2番目のPHPファイルを指定して呼び出すことができます。たとえば、このPOSTリクエストは、認証情報が有効ではなくとも認証が成功し、goAutodialからシステム設定を得ることができるのです。

POST /goAPIv2/goSystemSettings/goAPI.php?
goAction=goGetSystemSettingInfo&
goPass=notarealpassword&
goUser=notarealuser&
hostname=192.168.190.1&
responsetype=json&
session_user=goadmin

個々のAPI関数のほとんどは、ユーザーID、認証情報、およびセッション状態に関する独自の追加チェックを含むように見えます。これは、それらが悪用に対して脆弱ではないことを意味します。ただし、gogetSystemSettingInfo.phpはシステムパスワードを含む機微な構成の詳細を漏洩させます。

CVSS 3.1 base score: 5.3 (medium)
CVSS 3.1 vector:  CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N/E:P/RL:O/RC:C

CVE-2021-43176: Local file inclusion with path traversal(パストラバーサルを伴うローカルファイルインクルード)
APIルータは、ユーザーが提供する「action」パラメータを取り出し、API呼び出しを実装するために正しいPHPファイルを見つけてロードするための.phpファイル拡張子を追加します。脆弱なバージョンのGOautodialは、アクションを指定するユーザー入力のサニタイズ(不適切な部分を取り除くこと)をしません。これにより、攻撃者は、ディスク上に存在するGOautodial Webサーバープロセスによって読み取り可能な.php拡張子を持つPHPソースファイルを実行できます。CVE-2021-43175と組み合わせると、攻撃者が有効な認証情報なしでこれを行うことが可能です。

攻撃者が任意のPHPファイルをサーバーにアップロードできる場合、サーバー上で任意のコードが実行される可能性があります。

コールセンターの従業員など、GOautodialシステムの通常の認証済みユーザーは、添付ファイルを含むメッセージを他のユーザーに送信できます。これらの添付ファイルは、元のファイル名とともにサーバー上の予測可能な場所に保存されます。これは、GOautodialシステムの通常の認証済みユーザーが、サーバー上で任意のPHPファイルをアップロードして実行できることを意味します。

CVSS 3.1 base score: 8.8 (high)
CVSS 3.1 vector:  CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:P/RL:O/RC:C

緩和策

GOautodial API commit15a40bc以降にアップグレードすることをお勧めします。

発見者

Scott Tolley はSynopsys Cybersecurity Research Centerのリサーチャーで、ソフトウェア開発ライフサイクル(SDLC)において脆弱性を自動的に検証するテストツール、Seeker® interactive application security testing (IAST) ツールを使用してこの脆弱性を発見しました。
シノプシスは、GOautodialチームの応答性と、これらの脆弱性にタイムリーに対処したことを称賛したいと思います。

タイムライン

  • 2021年 9月22日:最初の開示
  • 2021年10月20日:GOautodial の脆弱性を修正
  • 2021年11月17日:シノプシスによる修正を確認
  • 2021年12月 7日:シノプシスによる脆弱性勧告の公開
 

この著者によるその他の情報