ニュース

統計解析向けのプログラミング言語「R」の実装に欠陥、任意コード実行のおそれ

JVNが注意喚起

脆弱性レポート「JVNVU#96606632:」

 脆弱性ポータルサイト「JVN」は5月1日、脆弱性レポート「JVNVU#96606632」を公開した。統計解析向けのプログラミング言語「R」の実装で、安全でないデータのデシリアライゼーションが発生する問題(CVE-2024-27322)が指摘されているという。最悪の場合、システム上で任意のコードが実行される可能性がある。

 R言語ではデータのシリアライズ(ここではメモリ上のデータ状態をストレージに保存すること)やデシリアライズ(シリアライズしたデータを復元して、処理を再開できるようにすること)がサポートされており、シリアライズされたデータは「R Data Serialization」(RDS)と呼ばれる形式(*.rds、*.rdx)で保存される。また、「R」は「Promise」クラスを介した遅延評価もサポートしており、このクラスのオブジェクトは「PROMSXMP」と呼ばれるRDS形式でシリアライズできる。このデータには評価時に実行される式と、式の結果が格納される値とが含まれる。

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

 報告者であるHiddenLayerによる脆弱性の評価は、「CVSS 3.1」の基本値で「8.8」。

 この問題は「R 4.4.0」で解決済み。また、.rdsや.rdx、.rdbファイルをコンテナーまたはサンドボックス環境で使用するなど、信頼できないデータを含むファイルを読み込む際にはセキュリティに十分配慮する必要がある。