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以降にアップグレードすることをお勧めします。