【活用ガイド】

JVNDB-2024-003173

R プログラミング言語の実装において、安全でないデータのデシリアライゼーションが発生する問題(CVE-2024-27322)

概要

R プログラミング言語ではデータのシリアライズやデシリアライズがサポートされており、シリアライズされたデータは R Data Serialization(RDS)と呼ばれる形式で .rds ファイルや .rdx ファイルとして保存されます。また、R は遅延評価もサポートしており、Promise クラスを実装し必要なタイミングで呼び出すことにより実現できます。この Promise クラスのオブジェクトには、評価時に実行される式と、式の結果が格納される値とが含まれ、PROMSXMP と呼ばれる RDS 形式でシリアライズすることが可能です。

R 1.4.0 から 4.4.0 より前のバージョンでは、RDS 形式によりシリアライズされた Promise クラスのオブジェクトが eval() 関数により読み込まれる際、そのオブジェクト内の値が未評価の状態で参照されると、オブジェクト内の式が直ちに(適切な遅延評価の実行タイミングより前に)実行されてしまう問題があります。そのため、攻撃者は悪意のあるコードを式として含む Promise クラスオブジェクトを .rds ファイルや .rdx ファイルにシリアライズし、それらのファイルをロードさせることにより、システム内で任意のコードをデシリアライズさせ、実行させることが可能になります。

この問題に対して、CVE-2024-27322 が採番されています。
CVSS による深刻度 (CVSS とは?)

影響を受けるシステム


R Project
  • R 1.4.0 から 4.4.0 より前のバージョン

想定される影響

システム上で任意のコードが実行される可能性があります。
対策

[アップデートする]
R プロジェクトは、この脆弱性を修正した R 4.4.0 を提供しています。バージョン 4.4.0 では、シリアライズされたデータ内の Promise オブジェクトの使用が制限され、適切な遅延評価のタイミングで使用されるように修正されています。

[信頼できないデータをデシリアライズしない]
.rds や .rdx、.rdb ファイルをコンテナまたはサンドボックス環境で使用するなど、信頼できないデータを含むファイルを読み込ませないよう留意してください。
ベンダ情報

R Project
CWEによる脆弱性タイプ一覧  CWEとは?

共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2024-27322
参考情報

  1. JVN : JVNVU#96606632
  2. US-CERT Vulnerability Note : VU#238194
  3. 関連文書 : R-BITRARY CODE EXECUTION: VULNERABILITY IN R’S DESERIALIZATION
更新履歴

  • [2024年05月02日]
      掲載