公開日:2024/05/01 最終更新日:2024/05/01

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

概要

Rプログラミング言語の実装において、安全でないデータのデシリアライゼーションが発生する問題が指摘されています。

影響を受けるシステム

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

詳細情報

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が採番されています。

想定される影響

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

対策方法

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

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

ベンダ情報

ベンダ リンク
R Programing Language The Comprehensive R Archive Network

参考情報

  1. CERT/CC Vulnerability Note VU#238194
    R Programming Language implementations are vulnerable to arbitrary code execution during deserialization of .rds and .rdx files
  2. HiddenLayer Research
    R-BITRARY CODE EXECUTION: VULNERABILITY IN R’S DESERIALIZATION

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia