R プログラミングの重大な脆弱性によりサプライ チェーン攻撃が可能に

HiddenLayer のセキュリティ研究者は、信頼できないデータを逆シリアル化することで任意のコードの実行を可能にする R プログラミング言語の脆弱性を発見しました。

この脆弱性は、医療、金融、政府産業の主要組織に重大な影響を与える可能性があります。

知らない人のために説明すると、R は、統計コンピューティング、データ視覚化、機械学習のためのオープンソース プログラミング言語およびソフトウェア環境です。

CVE 識別子 CVE-2024-27322 が割り当てられたこの脆弱性には、「R での Promise オブジェクトの使用と遅延評価が含まれている」と、人工知能 (AI) モデルおよび資産の主要なセキュリティ プロバイダーである HiddenLayer は記事の中で述べています。報告と共有したハッカーニュース

さらに、この脆弱性は、開発者とデータ サイエンティストの間で共有されることが多い RDS (R Data Serialization) ファイルまたは R パッケージのロードを通じて悪用される可能性があります。

研究者らによると、攻撃者は、対話時に被害者のターゲットデバイス上で実行される任意の R コードが埋め込まれた悪意のある RDS ファイルまたは R パッケージを作成する可能性があります。つまり、この脆弱性により、攻撃者は、ロードおよび参照されたときに任意のコードを実行する悪意のある RDS (R Data Serialization) ファイルを作成することができます。

R 内のいくつかの関数を使用してデータをシリアル化および逆シリアル化できます。これらの関数はある程度互いに異なりますが、最終的には同じ内部コードを利用します。

たとえば、シリアル化プロセス (serialize() または saveRDS()) と逆シリアル化プロセス (unserialize() および readRDS()) は、R パッケージの保存およびロード時にも利用されるため、ユーザーはサプライ チェーン攻撃にさらされることになります。

「R パッケージはこのエクスプロイトに対して脆弱であるため、パッケージ リポジトリを介したサプライ チェーン攻撃の一部として使用される可能性があります。攻撃者が R パッケージを乗っ取るには、rdxファイル悪意を持って作成されたファイルが含まれており、パッケージがロードされると、コードが自動的に実行されます」と同社は述べています。

R が広く使用されていることを考慮して、HiddenLayer はセキュリティの脆弱性を R のチームに開示し、その後、この問題は で解決されました。バージョン4.4.02024 年 4 月 24 日にリリースされました。

「攻撃者は、値を unbound_value に設定する Promise 命令と、任意のコードを含む式を含む RDS 形式のファイルを作成することで、この [欠陥] を悪用できます。遅延評価により、式は RDS ファイルに関連付けられたシンボルがアクセスされたときにのみ評価され、実行されます」と HiddenLayer 氏は付け加えました。

「したがって、これが単なる RDS ファイルである場合、ユーザーがそれを操作するためにシンボル (変数) を割り当てると、ユーザーがそのシンボルを参照したときに任意のコードが実行されます。オブジェクトが R パッケージ内でコンパイルされている場合、パッケージを CRAN などの R リポジトリに追加でき、ユーザーがそのパッケージをロードすると式が評価されて任意のコードが実行されます。