Last Updated on 2024-06-15 05:35 by admin
研究者たちは、機械学習(ML)モデルに対する新たな攻撃方法を発見した。この方法は、Pythonオブジェクトをバイトコードに保存する「ピクリング」プロセスを利用して、MLプログラムに悪意のあるバイトコードを注入する。この攻撃は「Sleepy Pickle」と名付けられ、Flickingというオープンソースプログラムを使用して実行される。攻撃者は、ターゲットに毒入りの.pklファイルをダウンロードさせ、デシリアライズ時にPythonペイロードとして悪意のある操作コードを実行させる。
この攻撃方法は、ターゲットのシステムへのローカルまたはリモートアクセスを必要とせず、ディスクにマルウェアの痕跡を残さないため、ステルス性が高い。デシリアライズ中に動的に発生するため、静的解析にも抵抗する。攻撃は、MLモデル自体を操作することも可能であり、例えばモデルにバックドアを挿入したり、その重みを操作して出力を変更することができる。
この種のリスクを避けるために、組織はPythonオブジェクトではなくテンソルデータのみを扱うSafetensorsという安全なファイル形式を使用することが推奨される。Safetensorsは任意のコード実行のデシリアライズのリスクを排除する。しかし、Safetensorsファイルをダウンロードする場合でも、そのデータを生成した個人や組織がMLモデルにバックドアや悪意のある挙動を含ませていないかどうかについては慎重に検討する必要がある。
【ニュース解説】
研究者たちが「Sleepy Pickle」と名付けた新たな攻撃手法を発見しました。この手法は、Pythonで書かれた機械学習(ML)モデルに対して、悪意のあるコードを注入するものです。具体的には、Pythonオブジェクトをバイトコードに変換して保存する「ピクリング」というプロセスを悪用します。MLモデルはしばしばPickle形式でパッケージ化され配布されますが、この形式は以前から既知のリスクを持っていました。
攻撃者は、Flickingというオープンソースプログラムを使用して、ターゲットに毒入りの.pklファイルをダウンロードさせることで攻撃を実行します。このファイルがデシリアライズされる際、悪意のある操作コードがPythonペイロードとして実行されます。この攻撃方法の特徴は、ターゲットのシステムに対する直接的なアクセスを必要とせず、ディスクにマルウェアの痕跡を残さないことで、検出を避けることができる点にあります。
さらに、この攻撃はMLモデル自体を標的にすることも可能です。例えば、モデルにバックドアを挿入したり、モデルの重みを操作して出力を変更することができます。これにより、攻撃者はモデルを通じてユーザーに有害な提案をさせたり、機密情報を盗み出したりすることが可能になります。
このようなリスクを回避するためには、Pythonオブジェクトではなくテンソルデータのみを扱うSafetensorsというファイル形式の使用が推奨されます。Safetensorsは任意のコード実行のリスクを排除しますが、それでもなお、MLモデルを提供する個人や組織を信頼することが重要です。モデルに悪意のある挙動やバックドアが含まれていないかどうかを慎重に検討する必要があります。
この攻撃手法の発見は、MLモデルの安全性に対する新たな課題を提示しています。組織は、使用するMLモデルの安全性を確保するために、信頼できるソースからのみモデルを取得し、可能であればSafetensorsのような安全なファイル形式を使用することが求められます。また、MLモデルを取り扱う際には、データとコードを厳格に分離し、システム内での信頼管理に注意を払うことが重要です。これにより、もしモデルが不正な挙動を示したとしても、ユーザーや組織の資産に影響が及ばないようにすることができます。