New R Programming Vulnerability Exposes Projects to Supply Chain Attacks
2024/04/29 TheHackerNews — プログラミング言語 R に新たに発見されたセキュリティ脆弱性 CVE-2024-27322 は、攻撃者が作成した悪意のRDS (R Data Serialization) ファイルを、読み込んで参照するとコードが実行され、侵害にいたるというものだ。この脆弱性について、AI アプリケーション・セキュリティ企業 Hidden Layer は、「R-lang における Promise オブジェクトの使用と遅延評価に起因する」と、The Hacker News に共有したレポートで述べている。

R-langとは、統計計算/データ可視化/機械学習などで用いられるオープンソースのプログラミング言語である。そして、RDS (R Data Serialization) とは、Python の pickle のように、R-lang のフォーマットで、データ構造やオブジェクトの状態をシリアライズして保存する役割を持つものだ。
このシリアライズ serialize()/saveRDS() と、デシリアライズ unserialize()/readRDS() のプロセスは、R-lang パッケージの保存と読み込みの際にも使用される。
脆弱性 CVE-2024-27322 の悪用に成功した攻撃者は、信頼できないデータをデシリアライズする際に任意のコード実行が可能になる。その結果として、特別に細工された R-lang パッケージを通じて、ユーザーをサプライチェーン攻撃にさらす可能性が生じる。
そのため、この脆弱性を悪用する攻撃者は、R-lang パッケージがデータの保存と読み込みに RDS フォーマットを利用することを悪用し、パッケージが解凍されてデシリアライズされる際に、自動的にコードを実行する可能性を手にする。
セキュリティ研究者の Kasimir Schulz と Kieran Evans は、「R-lang パッケージは、このエクスプロイトに対して脆弱であるため、パッケージ・リポジトリを介したサプライチェーン攻撃の一部として利用される可能性がある。攻撃者は、rdx ファイルを悪意を持って細工されたファイルで上書きすることで、R-lang パッケージを乗っ取ることができる」と説明している。
この脆弱性に関する報告があった後の、2024年4月24日にリリースされたバージョン 4.4.0 で問題は対処されている。
Hidden Layer は、「攻撃者は、値を unbound_value に設定する Promise 命令と、任意のコードを取り込んだ式を含む、RDS 形式のファイルを作成することで、この脆弱性を悪用できる。遅延評価により、式は RDS ファイルに関連するシンボルが、アクセスされたときにのみ評価され、実行される」と説明している。
さらに同社は、「したがって、対象が単なる RDS ファイルであれば、それを操作するためにユーザーがシンボル (変数) を割り当てると、そのシンボルをユーザーが参照したときに任意のコードが実行されることになる。つまり、オブジェクトが R-lang パッケージ内でコンパイルされている場合に、そのパッケージを CRAN などの R-lang リポジトリに追加すれば、そのパッケージをユーザーがロードしたときに式が評価され、任意のコードが実行される」と付け加えている。
R-lang を Wikipedia で調べてみたら、「R は、統計およびデータ視覚化のための OSS プログラミング言語でである。 データマイニング/バイオインフォマティクス/データ分析の分野で採用されてい。コアとなる R 言語は、再利用可能なコード/ドキュメント/サンプルデータなどを含む、多数の拡張パッケージにより強化されている。R はインタープリタ型言語として、ネイティブの CLI を備えている。 さらに、統合開発環境である RStudio やノートブック・インターフェイスである Jupyter などの、複数のサードパーティ製 GUI インターフェイスが利用が可能だ」と記されていました。おそらく、このブログでは初登場だと思います。
You must be logged in to post a comment.