サイバーリーズンでは、影響力のある新たな脅威に関する情報をお客様にお伝えするために脅威分析レポートを発行しています。今回の脅威分析レポートでは、CVE-2024-21762、CVE-2024-23113、CVE-2024-47575のような重要な脆弱性を取り上げています。本レポートは、これらの脆弱性がもたらす脅威に関する情報をまとめた上で、そのような脅威から身を守るための実践的な推奨事項を提供するものです。

現在の状況

サイバーリーズンGSOCのMDR(Managed Detection and Response)チームは、次に挙げる3件の「Fortinet製品に含まれている重大な脆弱性」を悪用したインシデントを積極的に調査しています。

  • CVE-2024-21762:FortinetのSSL VPNデーモン(sslvpnd)における境界外書き込みの脆弱性
  • CVE-2024-23113:FortiGateのファブリック管理デーモン(fgfmd)におけるフォーマット文字列のバグ
  • CVE-2024-47575:FortiGateのファブリック管理サービスデーモン(fgfmsd)における認証の欠如

これらの脆弱性は、セキュリティ研究者によって特定されているものであり、特定の事例において積極的に標的とされています。サイバーリーズンの監視下にある環境において、これらのCVEに関連するポストエクスプロイト活動を検知しています。

影響

FortinetのSSL VPNデーモン(sslvpnd)の脆弱性CVE-2024-21762を悪用すると、攻撃者は、この脆弱性の影響を受けるシステム上でリモートコードを実行することが可能になります。これにより、攻撃者は、標的としたシステムを完全に制御できるようになり、すべてのセキュリティ防御を迂回して、さらなる悪意ある活動を行えるようになる可能性があります。このような悪用は、機密データやネットワークシステムへの不正アクセスなどのような深刻なリスクをもたらします。

FortiGateのファブリック管理デーモン(fgfmd)の脆弱性(CVE-2024-23113)を悪用すると、攻撃者は、認証を必要とせずにリモートでコードを実行できるようになります。これにより、攻撃者は、当該システム上で任意のコードをリモート実行できるようになるため、同システムの完全なハッキングが行えるようになる可能性があります。その結果、重要なネットワーク管理システムの制御権を入手した上で、被害者組織の運用を中断させることや、不正に入手したアクセス権を利用して、その後の悪意ある活動を行うことが可能となります。

FortiGateのファブリック管理サービスデーモン(fgfmsd)の脆弱性(CVE-2024-47575)を悪用すると、攻撃者は、リモートシェルの生成や重要な管理機能への不正アクセスなどのような、さらなる悪意ある活動を実行できるようになります。また、Connect_tcp、Keep_Alive、File_exchangeなどのメソッドを悪用することで、任意のコードを実行し、システム設定を操作し、影響を受けるシステムにおける永続的な制御権を獲得できるようになります。これは、被害者組織に重大なセキュリティリスクをもたらします。

攻撃者の特定

これらの脆弱性を悪用すると、リモートコード実行、不正なデータ流出、内部ネットワークへのより深いアクセスなどが可能となるため、脆弱性のあるシステムを活用している組織のリスクは著しく高まります。国家支援型の攻撃者と金銭的動機に基づくサイバー犯罪集団が組み合わさって、これらの脆弱性を積極的に利用していることを示す証拠が存在しています。彼らは、政府、防衛、医療、金融などの幅広い業界を標的としています。

たとえば、SOHOルーターやファイアウォールなどの機器へのハッキングは、多くの場合、中国が支援する攻撃者による犯行とされてきました(Joint Advisoryを参照)。一般に、このような未知の脆弱性の悪用は、APT27やAPT40のようなよく知られたグループが採用しているTTPと一致しています。脆弱性が公開されると、ランサムウェアや認証情報窃取攻撃を展開する金銭的動機に基づく脅威アクターも、この弱点を悪用するようになります。

これらの脆弱性は、インターネット上に露出されているあらゆるインフラを標的とする攻撃者が増加傾向にあることを浮き彫りにしています。

主な調査結果

  • ネットワークインフラへの深刻な影響:これらの脆弱性が悪用されると、システムの完全なハッキングが引き起こされる可能性があります。これには、機密データへの不正アクセス、システム構成の操作、重要なネットワーク管理システムにおける永続的な制御権の取得などが含まれます。
  • 潜在的なサプライチェーンへのリスク:これらの脆弱性が悪用された場合、プライマリシステムに影響を与えるだけでなく、ネットワーク内におけるラテラルムーブメントを実現する機会を攻撃者に提供することになるため、その結果として、パートナー、サプライヤー、およびその他の関連組織がハッキングを受ける可能性があります。
  • 防御戦略を見直す必要性:Fortinet製品に依存している企業や組織は、自らの防御戦略を直ちに見直した上で強化する必要があります。これには、適切なセグメンテーションの実施、公開インフラの堅牢化、アタックサーフェスを縮小するための不要な露出の制限などが含まれます。
  • サイバーリーズンによるポストエクスプロイテーション活動の検知:Cybereason Defense Platformは、これらの脆弱性が悪用された場合のポストエクスプロイテーション活動を検知します。

脆弱性の分析

■脆弱性CVE-2024-21762

2024年2月8日、Fortinet社は、FortiOSにおけるリモートコード実行を引き起こす可能性のある重大な脆弱性である「CVE-2024-21762」を公表しました。この脆弱性は、FortiOSオペレーティングシステムのSSL VPNデーモンに含まれている「境界外書き込み(Out-of-Bounds Write)」の脆弱性です。このCVEの深刻度は、Common Vulnerability Scoring System(CVSS)による評価で10点満点中9.6点となっています。この脆弱性は、現時点で攻撃者により積極的に悪用されている可能性があります。

●FortiOSの概要
FortiOSとは、Fortinet社のFortiGateセキュリティアプライアンスのために開発した専用のオペレーティングシステムです。FortiOSは、さまざまな脅威から企業ネットワークを保護するために設計された、サイバーセキュリティ機能の包括的なスイートを提供します。

FortiOSは、次のような多くの機能を実行します。

次世代ファイアウォール(NGFW)
FortiOSは、FortiGateのNGFW機能を強化します。これにより、ディープパケットインスペクション、アプリケーション制御、URLフィルタリング、ステートフルインスペクションが可能となります。FortiOSは、トラフィックのヘッダとペイロードを分析することで、悪意あるアクティビティを検知してブロックします。また、アプリケーションの動作とユーザーIDに基づいてポリシーを適用します。

仮想プライベートネットワーク(VPN)
FortiOSはIPsec VPNとSSL VPNの両方をサポートしており、企業ネットワークへのリモートアクセスにおいてセキュアで暗号化された通信を提供します。また、FortiOSは、柔軟なクライアントベースまたはブラウザベースの接続を可能にすることで、ユーザー、ブランチオフィス、データセンター間におけるセキュアなデータ転送を実現します。

侵入防止システム(IPS)
FortiOSにはIPSが搭載されています。IPSは、ネットワークトラフィックを分析して既知のシグネチャと動作の異常を見つけることで、攻撃を検知してブロックします。FortiOSは、既知の脅威と新たな脅威の両方から、リアルタイムで企業や組織を保護します。

●境界外書き込み(Out-Of-Bounds Write)脆弱性の概要
境界外書き込み(Out-of-Bounds Write)の脆弱性は、プログラムが割り当てられたメモリ境界の外側にデータを書き込むことで発生するものであり、これは予期せぬ動作やクラッシュ、セキュリティリスクにつながる可能性があります。この脆弱性は、アプリケーションがメモリバッファを不適切に管理し、隣接するメモリロケーションを上書きしてしまうことで発生します。C言語において、この種の脆弱性を引き起こす主な関数としては、strcpy()、gets()、memcpy()、sprintf()が挙げられます。

たとえばmemcpy()関数は、メモリブロックをある場所から別の場所にコピーするのに使われます。この関数には次の3つの引数があります。

  • デスティネーションバッファ
  • ソースバッファ
  • コピーされるバイト数

安全でないコードの例:

上記コードの出力結果:

安全なコードの例:

上記コードの出力結果:

●HTTP転送エンコーディングの概要
チャンクエンコーディングは、サーバーが大量のデータをクライアントに送信する場合に便利です。これは、データを複数のチャンクに分割して送信するものです。チャンクは長さが0のチャンク(0rn)で終了します。チャンクのデータサイズは、各チャンクの先頭で知ることができる。



●悪用
SSLVPNDエラーモジュールに脆弱性が発見されました。この脆弱性を悪用する場合、攻撃者は「/remote/invalidpage 」にHTTPリクエストを送信することで、この関数をトリガします。このHTTPリクエストは、「Transfer-Encoding:chunked」というヘッダを持ちます。このヘッダの後には、読み込むバイト数を決定するためのチャンク長が続きます。攻撃者は、境界外書き込みの脆弱性をトリガするために長いサイズのフィールドを送信します。SSLVPNDエラーモジュールのコードは、データをスタックに書き込む前にチャンクのサイズをチェックしません。メモリスタックに書き込むことで、攻撃者は、システムコールにアクセスしてリモートコード実行を実現できます。

●脆弱性のあるバージョン

  • FortiOS 7.4: 7.4.0~7.4.2
  • FortiOS 7.2: 7.2.0~7.2.6
  • FortiOS 7.0: 7.0.0~7.0.13
  • FortiOS 6.4: 6.4.0~6.4.14
  • FortiOS 6.2: 6.2.0~6.2.15
  • FortiOS 6.0: 6.0.0~6.0.17
  • FortiProxy 7.4: 7.4.0~7.4.2
  • FortiProxy 7.2: 7.2.0~7.2.8
  • FortiProxy 7.0: 7.0.0~7.0.14
  • FortiProxy 2.0: 2.0.0~2.0.13
  • FortiProxy 1.2: 全バージョン
  • FortiProxy 1.1: 全バージョン
  • FortiProxy 1.0: 全バージョン

■脆弱性CVE-2024-23113

fgfmデーモン(fgfmd)にフォーマット文字列の脆弱性が発見されました。この脆弱性のクリティカルスコアは9.8です。攻撃者は、この脆弱性を悪用する場合、細工したペイロードパケットを送信することで、リモートコード実行を実現できます。攻撃者は認証される必要なしに、この脆弱性を悪用できます。

この脆弱性は2024年2月8日に初めて公表されました。

●fgfmプロトコル(Fotigate to Fortimanagerプロトコル)の概要
fgfmプロトコルは、FortiGateとFortimanager間におけるセキュアな通信を実装するものです。FortiManager Device Managerモジュールは、fgfmプロトコルを使用してFortigateデバイスと通信します。fgfmプロトコルは、IPv4用のTCP/541(IPv6 over TCP/542)を使用してSSL(Secure Sockets Layer)上で実行されます。FortiManagerユニットのDevice Managerは、fgfmプロトコルを使用して、新しいデバイスグループの作成、デバイスのプロビジョニングと追加、ポリシーパッケージとデバイス設定をインストールします。

fgfmプロトコルは、次の機能を実行します。

到達可能性ステータス
FortiGateユニットは、FortiManagerにキープアライブメッセージを送信します。FortiManagerがキープアライブメッセージを受信しない場合、当該FortiGateユニットは無効または到達不能と見なされます。

構成のインストールと取り出し
FortiGateユニットは、FortiManagerユニットからのキープアライブメッセージも受信します。FortiManagerからのキープアライブメッセージには、当該ユニットのOSバージョン、AVおよびIPSデータベースのバージョン、構成情報が含まれます。FortiManagerがFortiGateユニットに対してアップデートをプッシュすることはありません。FortiGate ユニットは、常にFortiManagerからアップデートをダウンロードします。

認証
Fortigateは初期セットアップの一部として証明書を送信し、FortiManagerユニットは当該デバイスのシリアル番号を使用してそのFortigateユニットを検証します。その後、FortiManagerは、認証のためにFortiGateユニットに証明書を返送します。FortiGate ユニットは、Fortimanagerユニットのシリアル番号を信頼できるシリアル番号のリストと比較します。シリアル番号が一致した場合、認証プロセスは完了します。

RTM経由でJSONを監視
RTMトラフィックは、fgfmトンネルを使用してSSL接続経由でトンネリングされます。
fgfmプロトコルには、フェイルセーフリカバリー機能が組み込まれています。

フォーマット文字列脆弱性の概要
Print関数には次の2つのコンポーネントが含まれています。

  • フォーマット文字列:指定した文字列を含みます(例:“Hello”)
  • フォーマット指定子:印字するデータや読み取るデータのタイプとフォーマットを定義します。指定された文字列は、フォーマット指定子に基づいて解釈されます。フォーマット指定子の例としては、「%x(16進数出力)、%n(ポインタ)、%s(文字列)」などが挙げられます。


安全なコードの例:

上記コードの出力結果:

上記のコードは安全であり、フォーマット文字列の脆弱性はありません。
脆弱性のあるコード:

上記コードの出力結果:

上記のコードが脆弱である理由は、それがフォーマット指定子を含んでいないからです。この場合、データは特定のフォーマットに変換されません。入力文字列に他のフォーマット指定子を追加することで、メモリアドレスをリークすることや、バッファサイズによってはバッファをオーバーフローさせることが可能となります。

悪用
私たちはfgfmプロトコルをリバースし、コードブロックをたどることで脆弱なコードを見つけ出そうとしました。その結果、fgfmデーモンのコードブロックは着信接続をリッスンしており、接続を受信した時点で、同コードブロックは次の条件をチェックすることが分かりました。

  1. HTTP応答ステータスコードが200であるかどうか
  2. 認証リクエスト(auth)パラメータが渡されたかどうか

上記の両方の条件が満たされた場合、私たちは脆弱なコード関数に到達します。下記のコードブロックに基づくならば、authip、fmg_fqdn、mgmtipパラメータを使うことで脆弱なコードブロックに到達できると推測できます。

脆弱なコードにはフォーマット文字列が含まれていません。
snprintf(param_1 + 0xcc, 0x7f, *(undefi ned8 *)(lVar2 + 8))

  • param_1 + 0xcc:バッファ
  • 0x7f:バッファに書き込む文字数
  • *(undefined8 *)(lVar2 + 8):文字列の文字(エクスプロイトコード)

この脆弱性は、上記の脆弱なコードにフォーマット文字列(%s)を追加することで修正されました。
脆弱性のあるバージョン

  • Fortinet FortiOS 7.4.0~7.4.2
  • Fortinet FortiOS 7.2.0~7.2.6
  • Fortinet FortiOS 7.0.0~7.0.13
  • FortiProxy 7.4.0~7.4.2
  • FortiProxy 7.2.0~7.2.8
  • FortiProxy 7.0.0~7.0.14
  • FortiPAM 1.2.0
  • FortiPAM 1.1.0~1.1.2
  • FortiPAM 1.0.0~1.0.3
  • FortiSwitchManager 7.2.0~7.2.3
  • FortiSwitchManager 7.0.0~7.0.3

■脆弱性CVE-2024-47575

FortiManagerデバイスに認証欠落の脆弱性が見つかりました。FortiManagerは、他のデバイスとの通信にfgfmdデーモンを使用します。この脆弱性はfgfmプロトコルに存在していました。この脆弱性はゼロデイ攻撃として悪用されており、その深刻度は9.8(緊急)です。

この脆弱性は2024年10月23日に初めて公表されたものであり、悪用されるとリモートコード実行が実現される可能性があります。

●FortiManagerの概要
FortiManagerは、Fortinetのセキュリティインフラにおける製品を集中管理するための統合プラットフォームです。FortiManagerは、FortiGate、FortiWiFi、FortiAP、およびその他のデバイス向けに、ポリシーベースのプロビジョニングと構成管理を一元化して提供します。

●FortiManagerによるデバイス管理
FortigateデバイスをFortimanagerデバイスに追加するには、次の3つの方法があります。

  1. IPアドレスを使用する(FortiManager コンソール -> Add device -> Discover)
  2. シリアル番号を使用する(FortiManagerコンソール -> デバイスの追加 -> モデルデバイスの追加)
  3. FortiGate Centralの管理オプションを使用する

この方法は、FortiManagerユニットがFortiGateデバイスへの接続を開始できない場合に使用します。FortiGateデバイスは、FortiManagerユニットに接続要求を送信します(Root ADOM 経由)。FortiManagerは、有効なX509証明書とシリアル番号を持つすべてのFortigateデバイスを受け入れます。FortiManagerは他の認証メカニズムを実装していないため、デバイスは未登録デバイスウィンドウの下に表示されます。そのため、この方法には「認証の欠落」という脆弱性があります。

●FortiGateとFortiManager間の認証プロセス
FortiGateとFortiManager間における認証プロセスでは、fgfmプロトコルを使用して証明書を交換します。FortiGateとFortiManagerの両ユニットには、X509証明書とシリアル番号が含まれています。X509証明書は、Fortinetにより(認定CA経由で)署名されています。

  • FortiGateデバイスは、最初の接続セットアップ時に証明書を提示します。
  • FortiManagerは、証明書とシリアル番号を検証します。検証後、新しいデバイスは未承認デバイスセクションにリストされます。
  • 管理者は、新しいデバイスを手動で認証する必要があります。
  • 管理者による認証後、FortiManagerユニットは SSL経由でFortiGateデバイスに証明書を送信します。
  • FortiGate デバイスは、認証メッセージ、証明書、ローカル シリアル番号テーブルのシリアル番号を比較して検証します。これらが一致した場合、認証は完了します。

悪用
攻撃者は、物理的なFortiGateデバイスから証明書とシリアル番号を抽出します。有効なX509証明書/シリアル番号を持つ攻撃者は、FortiManagerユニットに悪意あるリクエスト(Get Authリクエスト)を送信することで、不正なFortiGateデバイスをFortiManagerに登録します。

FortiManagerは証明書とシリアル番号を検証します。検証に成功すると、不正デバイスは未登録デバイスセクションにリストされます。fgfmプロトコルは、今後の通信のためにSSLトンネルを設定します(Get IPリクエスト経由)。

この段階で、攻撃者は下記のメソッド(機能)にアクセスするためのリクエスト(ペイロード付き)を作成できます。これらのメソッドはfgfmプロトコルの一部であり、いくつかのメソッドはシステムコール(execve)を実装しています。攻撃者は、さらなる悪意ある活動のためにシステムコールを悪用することができます。

  • Connect_tcp
  • Keep Alive
  • File_exchange
  • Dev_register
  • Get_fgt_sess

Watchtowerの研究者は、File_exchangeメソッドを悪用してリモートシェルを起動することに成功しました。Rapid7の研究者は、Connect_tcpメソッドを悪用して、root権限でリモートシェルを起動することに成功しました。

脆弱性のあるバージョン

  • FortiManager 7.6.0
  • FortiManager 7.4.0~7.4.4
  • FortiManager 7.2.0~7.2.7
  • FortiManager 7.0.0~7.0.12
  • FortiManager 6.4.0~6.4.14
  • FortiManager 6.2.0~6.2.12
  • FortiManager Cloud 7.4.1~7.4.4
  • FortiManager Cloud 7.2.1~7.2.7
  • FortiManager Cloud 7.0.1~7.0.12
  • FortiManager Cloud 6.4(全バージョン)

■既知のポストエクスプロイテーション活動
上記のCVEは、リモートでコードを実行するために活発に悪用されています。攻撃者は、さらなる悪用を行うために、価値の高いサーバーを標的にしています。私たちは、さらなるポストエクスプロイテーション活動を観測しています。これには、C2通信の確立、新しい管理者ユーザーアカウントの作成、悪意あるSSHソフトウェアを使用したデータの流出、端末を暗号化するランサムウェアのインストールなどが含まれます。
ポストエクスプロイテーション活動は、攻撃グループによって異なる可能性があります。

●戦術その1 – スキャンによる偵察:
試行に成功すると、攻撃者はFortinetファイアウォールを使用してネットワークをアクティブにスキャンし、接続されたデバイスを特定することでネットワーク検出を実行します。攻撃者は、netscanやAdvanced IP Scannerなどのサードパーティスキャナを使用する必要はありません。

●戦術その2 – ユーザーパスワードのリセット:
攻撃者は、net.exeを使ってユーザーのパスワードをリセットする可能性がありあります。攻撃者は、これまで何百人ものユーザーのパスワードを変更しています。
Sample Command: net user useraccount AttackerPassword

●戦術その3 – RDPの悪用
攻撃者は、SMBとRDPのスキャンを実行することで、さらに悪用する価値の高いターゲットを見つけようとします。その後、攻撃者はMicrosoft Terminal Services Client(mstsc.exe)を使用して、バックアップサーバー、電子メールサーバー、および機密情報を含むその他のサーバーへのRDP接続を確立しようと試みます。

●戦術その4 – シャドウコピーの削除
攻撃者はボリュームシャドウコピーを削除しようとします。これが行われると、被害者はシャドウコピーを使用して端末ファイルを復元できなくなります。

コマンド例:
C:\Windows\System32\cmd.exe” /c vssadmin delete shadows /all /quiet C:\Windows\System32\cmd.exe” /c bcdedit / set{default} recoveryenabled no

●戦術その5 – ランサムウェア
攻撃者は、最終的にランサムウェアを実行して端末を暗号化した後、身代金要求書をドロップします。

コマンド例:
regsvr32.exe /n “/i:-pass=password -enc=3 -uac -path=MACHINEFOLDER” C:\locker.dll

環境の監視

  • Cybereasonセンサーを削除する試み
  • 未承認のリモート監視および管理(RMM)ツール
  • アカウントを作成または変更するための「net user」コマンドの不審な実行
  • 不明な.dllが不明な/許可されていない宛先と通信している
  • 未承認のIPアドレスまたはドメインからの接続
  • FortiManagerコンソールに未承認の新しい FortiGateデバイスが存在している

FortiManager の脆弱性(CVE-2024-47575)に関連する侵害の痕跡(IoC)については、Mandiant threat intelligence articleをご覧ください。

サイバーリーズンによる推奨事項

Cybereason Defense Platformを使うと、Fortinetにおけるポストエクスプロイト活動を検知して防止できます。サイバーリーズンでは下記の措置を行うことを推奨しています。
お客様は、メーカーが提供するアップデートおよび関連するCISAアドバイザリに合わせて、影響を受けるFortinetのバージョンに対して直ちにパッチを適用してください。

  • Fortiguardの複数のアクティビティログに関して、定期的なログレビューを実施すること。
  • 予期されるアクティビティに関してFortiManagerのログをベースライン化し、新しいデバイスの追加に関連するログがないか確認すること。
  • FortiManagerの未登録デバイスセクションに予期しない新しいデバイスがないかどうか毎日確認すること。
  • Variant Payload Prevention(VPP)およびBehavioral Execution Prevention(BEP)がポリシーごとに有効になっていることを確認すること。
  • Cybereason Defense PlatformのInvestigation画面とハンティングクエリセクションに示されているクエリを使用して、悪用された可能性のある資産をプロアクティブに検索すること。検索結果に基づいて、感染した端末の隔離やペイロードファイルの削除など、さらなる修正措置を実行します。
  • 「Block & Prevent」機能を試用して、関連するIoCをカスタムレピュテーションリストに追加すること。

参考文献

【調査結果資料】セキュリティ対策に関する調査結果レポート(2024年1月実施)

サイバーセキュリティ担当者を対象に、製品・体制・人材など各社が取り組んでいるセキュリティ対策の状況の実態を調査するため、昨年に続き2024年1⽉に「セキュリティ対策に関するアンケート」を実施しました。

他社がどういった対応をしてるかを把握していただき、今後のセキュリティ対策の強化に役立てていただくため、調査結果を資料にまとめました。ぜひご活用ください。
https://www.cybereason.co.jp/product-documents/survey-report/11921/