概要
最近発見された脆弱性により、Common Unix Printing System(CUPS)を実行しているLinuxシステム上で、攻撃者がリモートでコードを実行できる可能性があります。この脆弱性チェーンにより、lpユーザー権限で任意のコマンドを実行できます。攻撃はLinuxシステムを標的としていますが、CUPSを使用しているmacOSシステムにも影響する可能性があります。
TL;DR
- 攻撃ベクター:広域ネットワーク(WAN)— インターネットに公開されたサーバーにも影響
- 攻撃結果:
lpユーザー権限でのリモートコード実行(RCE)— cupsdのAppArmorプロファイルに由来する一部制限あり - ユーザー操作の必要性:あり(ユーザーが何かを印刷する必要がある)
- CVE数:RCEのために4つのCVEが悪用
- 露出状況:インターネット上で数千のCUPSサービスが公開され、脆弱
- ベンダーへの影響:Linux以外も含め、追加ベンダーが開示対象
- 関連CVE:
CUPSの概要
CUPSは、Unix系オペレーティングシステム向けのオープンソース印刷管理システムです。コンピューターをプリントサーバーとして動作させ、印刷ジョブやキューを管理できます。モジュール式の設計により、CUPSは重要な印刷サービスを提供し、LinuxデスクトップやmacOSで一般的に利用されています。
cups-browsedとは?
cups-browsedはCUPS内の補助デーモンで、ネットワーク上のプリンターを検出し、自動的に設定するために使用されます。
CUPSはどこで使われているか?
Censysのデータを用いて、CUPSのバージョン別に公開サーバー数のおおよその推定値を以下のとおり算出しました:
- CUPS/2.0:23,000台
- CUPS/2.1:5,000台
- CUPS/2.2:5,000台
- CUPS/2.3:12,000台
- CUPS/2.4:18,000台
脆弱性の概要
この脆弱性は当初、9月5日にメンテナーへ報告されました。2024年9月26日、EvilSocket(Simone Margaritelli)が脆弱性を公開(RCEエクスプロイトも併せて公開)しました。これは、CVEおよびパッチが提供される前に脆弱性の詳細が漏えいしていたことも一因です。このような状況は、脆弱性がもたらし得る影響を最小化するために、責任ある開示と透明性のある対応がいかに重要であるかを浮き彫りにします。
以下は、関連するCVE番号とともに攻撃を分解したものです:
- 初期侵入(CVE-2024-47176):
cups-browsed(<= 2.0.1)がUDPポート631で認証なしのリクエストを受け付けます。攻撃者は細工したパケットを送信し、悪意あるIPPサーバーに対するGet-Printer-Attributesリクエストをトリガーします。 - IPP属性インジェクション(CVE-2024-47076、CVE-2024-47175):
libcupsfiltersおよびlibppdが、悪意あるサーバーからのIPP属性を適切に検証できません。これにより攻撃者は悪意あるデータをCUPSシステムへ注入し、一時的なPPDファイルを作成できます。 - コマンド実行(CVE-2024-47177):注入されたデータには、CUPSに
foomatic-ripフィルターの実行を指示するFoomaticRIPCommandLineというPPDパラメーターが含まれます。印刷ジョブが送信されると、攻撃者のコマンドが実行されます。
攻撃フロー
- 標的マシンは、悪意あるIPPサーバーへ接続するようにだまされてトリガーされます。
- サーバーはIPP属性を送信し、一時ファイルに悪意あるPPDディレクティブを注入します。
- 印刷ジョブにより、注入されたコマンドの実行がトリガーされます。
侵害指標(IoCs)
オンラインで見つかった既に公開済みのPOCに基づくと、この攻撃における脆弱性チェーンでは以下の手法が使用されています。興味深いことに、公開されたPOCは元の報告に含まれていたPOCと同一であり、開示プロセス中に漏えいが起きたことを示唆しています。
観測された挙動:
- ポート631へのUDPリクエスト
- その後に新しいセッション
- ユーザーまたはグループ
lpでの任意コマンド実行(新規プロセスの作成)cfGetPrinterAttributes5経由でfoomatic-ripフィルターを実行する際、cups-filtersでコマンドインジェクション
- ユーザー
lpでファイルシステム全体に作成されたファイルfind / -user lp -o -group lp 2>/dev/null
- ファイル作成にcupsFilter2のFoomatic-ripフィルターが使用された。
公開POCで使用されるファイル:
- インターネットに公開されている脆弱なサーバーがある場合、以下のファイルの存在を確認してください:
/tmp/PWNED/tmp/I_AM_VULNERABLE
- これらが存在する場合、誰かがあなたのインフラを正常に悪用したと想定してください。つまり、公開POCがあなたのインフラに対して成功裏に実行され、誰かがそれを認識していることを意味します。
Oligoが攻撃検知にどのように役立つか
Oligoでは、当社のApplication Detection and Response(ADR)技術が、このCUPS RCE攻撃で悪用されたような脆弱性を検知するための独自のアプローチを提供します。Oligo ADRは、プログラムのスタックと挙動を分析して異常を特定します。
Oligoはアプリケーションの複数箇所から振る舞いデータを収集するため、当社ADRはコマンドインジェクション攻撃によって引き起こされるプログラム実行フローの変化を検知できます。一般に、論理的な脆弱性(すなわち、メモリ関連のヒープ/スタックオーバーフロー等ではないもの)は、‘コードフロー’(スタック/挙動/スタックトレース等)を直接変化させないため、現代的なアプローチにとって課題となりがちです。これは、アプリケーションの複数箇所からデータを収集・分析することがいかに重要であるかを示しています。
専門家のヒント
Avi Lumelsky
AIセキュリティ研究者
Avi Lumelskyは、エンジニアリングとAIを専門とするセキュリティ研究者です。Oligo Securityでは、オープンソースプロジェクトの脆弱性を発見することでAIインフラを保護しています。以前はDeci AI(現在はNVIDIAの一部)に在籍し、モデル最適化に注力していました。彼の取り組みはGoogleやMetaなどの大手企業向けのレポートにつながり、ForbesやHacker Newsでも取り上げられています。また、オープンソースのeBPFプロジェクトを保守し、AIフレームワークや推論サーバーにおける脆弱性の調査も行っています。
購読して最新のセキュリティ更新情報を入手
最新アプリもレガシーアプリも防御するために構築
Oligoは、K8s上に構築された最新のクラウドアプリや、オンプレミスでホストされる旧来のアプリにも、数分で導入できます。