本文の内容は、2024年9月29日にMichael Clark が投稿したブログ(https://sysdig.com/blog/detecting-and-mitigating-remote-code-execution-exploits-in-cups/)を元に日本語に翻訳・再構成した内容となっております。
2024 年 9 月 26 日、 Common Unix Printing System (CUPS) パッケージの複数の脆弱性に関する詳細が公開されました。合計 4 つの CVE (CVE-2024-47176、CVE-2024-47076、CVE-2024-47175、CVE-2024-47177) が公開され、多くの Unix および Linux ディストリビューションに影響を与えています。脆弱性のうち 3 つは High と評価され、1 つは Critical と評価されています。パッチを適用しないと、リモートの攻撃者が影響を受けるシステムで任意のコマンドを実行できるようになります。
以下では、これら 4 つを一緒に使用した場合の潜在的な影響、Falco でそれらを検知する方法、および実行できる緩和手順を分析します。
分析
ここで悪用されているプロセスは “cups-browsed” で、プリンターの検出とアクセスに使用されます。デフォルトでは、UDP ポート 631 にリストされ、世界中に公開されています。このサービスとリモートでやり取りするのに認証は必要ありません。リサーチャーによると、数十万のシステムでこのポートがインターネットに公開されており、 “cups-browsed” デーモンが応答しました。
関連する 4 つの脆弱性が組み合わされて、脆弱な CUPS インストールでリモート コードの悪用が実行されます。
- CVE-2024-47176 は、 “cups-browsed” のポート 631 が開いており、認証されていないアクセスが許可されていることを指します。
- CVE-2024-47076 により、このエクスプロイトでは検証やサニタイズを行わずにデータを渡すことができます。
- CVE-2024-47175 は別の検証およびサニタイズの問題であるため、エクスプロイトがさらに続行される可能性があります。
- CVE-2024-47177 は、以前の脆弱性を利用して渡されたデータを “foomatic-rip” プロセスを使用して実行することを可能にします。
実際には、このエクスプロイトでは、攻撃者が制御するシステムに URL を含む UDP パケットを送信するだけで済みます。そこから、攻撃者はリスナーを待機させ、脆弱なシステムが接続するとエクスプロイトチェーンを開始できます。最後に、攻撃者は “foomatic-rip” プロセスとして任意のコマンドを実行し、エクスプロイト後の目標を継続できます。
検知
このエクスプロイトは、通常の動作ではないため、コマンドを実行する “foomatic-rip” プロセスを探すことで検出できます。または、環境で CUPS を実行しない場合は、UDP ポート 631 でリッスンしているプロセスを探すという方法もあります。Sysdig Secure は、エクスプロイト後のアクティビティを大量に検出しますが、これらのルールにより、さらに可視性が高まります。
Falco は、次のルールを使用してこのエクスプロイトを検出するためにも使用できます。
次のルールは、Sysdig Runtime Threat Detection ポリシーで Sysdig Secure のお客様に自動的に提供されます。
- rule: Possible Arbitrary Command Execution through CUPS (CVE-2024-47177)
desc: The footmatic-rip process was seen executing common shell programs which may indicate that an attacker has exploited CVE-2024-47177. Ensure that this is expected behavior and CUPS has been patched for this vulnerability.
condition: spawned_process and shell_procs and proc.pname="foomatic-rip"
exceptions:
- name: proc_name_pname
fields: [proc.name, proc.pname]
comps: [in, in]
output: The process %proc.pname was seen executing the shell %proc.name with cmdline %proc.cmdline which may indicate arbitrary command execution through the CUPS vulnerability CVE-2024-47177. (proc.exepath=%proc.exepath proc.cmdline=%proc.cmdline user.name=%user.name image=%container.image.repository:%container.image.tag proc.pcmdline=%proc.pcmdline container.id=%container.id container.name=%container.name)
priority: CRITICAL
tags: [host, container, MITRE]
次のルールは、Sysdig Runtime Notable Events ポリシーで Sysdig Secure のお客様に自動的に提供されます。
- rule: Suspicious cups-browsed process listening on UDP (CVE-2024-47176)
desc: The cups-browsed process was seen listening for incoming connections on port 631. This may indicate that it is vulnerable to CVE-2024-47176. Ensure that this is expected behavior and the process has been patched.
condition: evt.type=bind and evt.dir=< and fd.l4proto=udp and fd.port=631 and proc.name="cups-browsed"
exceptions:
- name: proc_name_proc_pname
fields: [proc.name, proc.pname]
comps: [in, in]
output: Process %proc.name is listening on port %fd.cport using the %fd.l4proto protocol which may indicate it is vulnerable to CVE-2024-47176. (proc.name=%proc.name proc.pname=%proc.pname fd.name=%fd.name proc.cmdline=%proc.cmdline proc.pcmdline=%proc.pcmdline container.id=%container.id evt.type=%evt.type evt.res=%evt.res proc.pid=%proc.pid proc.exepath=%proc.exepath container.name=%container.name image=%container.image.repository)
priority: INFO
tags: [host, container, MITRE]
緩和
脆弱性管理プロセスを直ちに開始し、CUPS が環境で実行されていないことを確認する必要があります。UbuntuやRedHatなどのベンダーは、すでにディストリビューション用のパッチをリリースしています。
より戦術的な緩和策としては、サービスをシャットダウンし、ファイアウォール ルールを使用して脆弱なサービスへのアクセスを阻止することができます。Latio Tech では、これらの緩和策を実装する方法について いくつかの提案を行っています。
Sysdig Secure のお客様の場合、プラットフォームでは、上記のルールのいずれかがトリガーされた場合の対応方法についていくつかのオプションが提供されています。 “Kill Process” を使用すると、攻撃者が起動したシェルを終了できます。または、コンテナ化された環境でより完全な対応を行うには、 “Kill Container” を使用してワークロード全体を排除できます。詳細なフォレンジックレビューを行うには、syscall キャプチャを自動的に取得できます。
まとめ
CUPSはクラウド環境で使用される可能性は低いものの、一部のベンダーによって有効化された状態で提供されることがあり、チームが気づかないうちに稼働している場合があります。脆弱なソフトウェアパッケージを発見するためには、インベントリを含む堅牢な脆弱性管理システムが必要です。パッチの展開中にシステムを保護するためには、リアルタイムの脅威検知および対応が、インシデントに即座に反応し、自動的に対応することを可能にします。