Ruby Workersにおけるデシリアライゼーションの脆弱性が完全な侵害を可能に

概要

A severe Remote Code Execution (RCE) vulnerability has been identified in RubitMQ job workers, stemming from unsafe JSON deserialization practices. この脆弱性は、Ruby背景システムにおけるデータ処理の設計レベルでの信頼仮定から生じています。

脆弱性の詳細

この脆弱性の核心は、Oj.loadを使用してジョブペイロードを処理することにあります。開発者は通常、JSONを安全なデータ交換フォーマットと見なしますが、RubyのOjライブラリにはオブジェクトデシリアライゼーション機能があり、完全に機能するオブジェクトを再構築できます。

技術的な分析

この脆弱性は、特定のディレクティブ(例:^o)が存在する場合、システムは単なるデータパースではなく、アプリケーションで定義されたクラスのインスタンスを生成します。これにより、アプリケーションが能力ベースの動的呼び出しを使用している場合、オブジェクトが特定のメソッドに対応するかどうかを確認し、それを実行するというセキュリティ上のリスクが生じます。

CVE情報

  • CVE ID: CVE-2024-XXXX
  • CVSSスコア: 9.8 (Critical)

この脆弱性は、Oj.loadを介したRubitMQの不安全なデシリアライゼーションにより、オブジェクトインジェクションを通じてリモートコード実行が可能となります。攻撃者は、アプリケーションコード内に存在するNodeユーティリティクラスをインスタンス化するJSONペイロードを作成することでこの脆弱性を利用します。

影響を受けた製品

  • RubitMQ Job Worker (JSON Processor)

攻撃者は、Unixのfindコマンドの-execフラグを使用する引数を注入することにより、バックグラウンドワーカーが任意のシェルコマンドを実行させることができます。

対策

  • RubitMQ Job Worker (JSON Processor):アップデートが必要
  • Ruby Oj Gem Default Load Configuration:設定変更が必要

元記事: https://gbhackers.com/deserialization-flaw-in-ruby-workers/