Sangomaは、認証されていないリモート攻撃者がFreePBXで任意のコマンドを実行し、管理者アカウントを乗っ取ることを可能にする2件の重大な脆弱性を修正しました。この件について、プロジェクトのセキュリティチームは「Red」という緊急度評価を出しています。
インターネットに公開されたFreePBX 16または17を運用している組織は、直ちにパッチを適用することが推奨されています。
1つ目の脆弱性はGHSA-37j8-fhxx-9vhpとして追跡されており、17.0.9より前のバージョンのFreePBX 17に搭載されたUser Control Panel(UCP)のNodeサーバーに影響します。
UCPサーバーはポート8001(非TLS)または8003(TLS)でリッスンし、アクセスを許可する前にsocket.io接続を認証するためにcheckAuthミドルウェアに依存しています。
アドバイザリによると、最近のsocket.io v4リリースで導入された変更により、FreePBXが依存していた認証保護機能が失われてしまいました。
この結果、資格情報を一切持たない攻撃者でも、特別に細工されたsocket.ioイベントを送信できるようになり、そのイベントはAsterisk Manager Interface(AMI)に中継されます。これにより、ユーザーの操作を一切必要とせず、asteriskユーザー権限で任意のコマンドが実行されてしまいます。
この脆弱性のCVSS-B v4.0スコアは9.3(Critical)で、ネットワーク経由で攻撃可能であること、攻撃の複雑さが低いこと、権限やユーザー操作が不要であること、そして機密性・完全性・可用性への影響が大きいことを反映しています。
この問題は報告者のmil1200氏が開示し、GitHubのchrsmj氏が調整を行い、Sangomaのエンジニアがバージョン17.0.9で修正版をリリースしました。防御側は、UCPログインページのHTMLソース内にあるx-pjax-versionメタタグを確認することで、自身のバージョンを検証できます。
Sangomaは直ちにアップデートを行うことを推奨しており、緩和策としてFreePBX FirewallモジュールのResponsive Firewall機能を有効にすることも勧めています。この機能は、SIPエンドポイントの登録に成功したIPアドレスのみにUCPへのアクセスを制限するものです。
2つ目のアドバイザリであるGHSA-g27h-xf3q-h3rmは、FreePBX 16(16.0.11より前)とFreePBX 17(17.0.6より前)の両方にまたがるmissedcallモジュールを対象としています。
このモジュールは、監視対象の内線番号への着信が応答されなかった場合に、発信者IDの名前をデータベースに記録します。しかし、INSERTクエリを構築する際、発信者名をエスケープやパラメータ化を行わずにSQL文字列へ直接連結してしまっています。
攻撃者はこれを悪用し、SQLインジェクションのペイロードを含む悪意のあるSIP Fromヘッダーを細工することで攻撃を仕掛けられます。
着信側のCaller ID Name(CNAM)フィールドは、PSTNのCNAM(15文字までに制限)のような制限を受けないため、SIPトランクやインターネット経由の直接発信を利用する攻撃者は任意のSQLを注入できます。これによりデータベースが破損し、管理者コントロールパネルの認証情報が改ざんされて不正アクセスを許してしまう可能性があります。
この脆弱性もCVSS-B v4.0で9.3(Critical)というスコアが付いていますが、missedcallモジュールはすべての環境に導入されているわけではないため、FreePBXは「Amber」の緊急度を割り当てています。匿名の着信を受け付けているシステムが最もリスクにさらされます。
対策としては、着信を信頼できるSIPトランクに制限すること、管理パネルへのアクセスにMFA/SAMLを適用すること、そしてSIPのFromヘッダーがFreePBXに到達する前にサニタイズするSBC(セッションボーダーコントローラー)を導入することが挙げられます。
これら2つの脆弱性はいずれも、目新しい攻撃手法によるものではなく、アーキテクチャ上のギャップに起因しています。一方はサードパーティ製ライブラリ(socket.io)の挙動に、もう一方は安全でないクエリ構築に原因があり、VoIPプラットフォームにおける依存関係の監査と入力のサニタイズの重要性を改めて浮き彫りにしています。
セキュリティチームは、パッチ適用を最優先事項とし、Connectivity → Firewall配下のファイアウォールルールを監査するとともに、過去に侵害された兆候がないか管理者アカウントのアクティビティログを確認する必要があります。
ANY.RUNでSOC調査の死角を減らし、脅威をより早期に封じ込めることで、対応コストと事業への支障を軽減しましょう。
翻訳元: https://cyberpress.org/critical-freepbx-flaws-commands-hijack-admin-accounts/