Datasetsライブラリにコード実行の欠陥|研究者の修正案は未統合

2026年10月23日(協定世界時、以下UTC)、Hugging Face が開発する OSS のデータ読み込みライブラリ「Datasets」に、外部から渡されたファイルでコードが実行される欠陥があるとする勧告が出ました。脆弱性の番号は CVE-2026-57845 です。番号を割り当てた VulnCheck が同じ日に勧告を出し、GitHub の勧告データベースにも 18:31 UTC(日本時間10月24日 3時31分)に GHSA-9hc7-p88p-mwm8 として載りました。深刻度はどちらも「高」です。対象は、Datasets 5.1.0 以前で、非推奨の pandas 用の読み込み部品を使って、攻撃者が用意したファイルを読み込んだ場合です。勧告には修正版の記載がなく、研究者が出した修正案は、10月23日 20:37 UTC の時点で開発元に取り込まれていません。
カメ先生機械学習のデータを読み込むライブラリで、特定の読み込み方をしたときにだけ、ファイルの中に仕込まれた処理が動く欠陥が見つかった。
カメ子データを読み込むだけで、プログラムが動いてしまうんですか。
カメ先生pickle という保存形式は、読み戻すときに処理を呼び出せる作りになっている。Datasets の pandas 用の部品は、この形式のファイルを確かめずに読み戻していた。普段よく使う Parquet や CSV の読み込みは、この部品を通らない。
カメ子誰でも危ないわけではなく、pandas 用の部品を名指しして、出どころの分からないファイルを読んだときに限られるんですね。
- Hugging Face の Datasets 5.1.0 以前で、非推奨の pandas 用の部品が pickle 形式のファイルを検証せずに読み戻し、ファイルに仕込まれた処理が利用者の権限で動く欠陥が公表された
- 対象は、この部品を名指しして、攻撃者が用意したデータのファイルを読み込む使い方。勧告に修正版の記載は無く、10月5日公開の 5.1.0 が最新のまま
- 研究者の修正案は未統合で、開発元の反応は出ていない。悪用の報告、Hub に置かれたデータセットの pickle の検査の扱いも公表されていない
AIの導入・活用、何から始めるべきかお悩みですか?
デボノはアカウント開設・初期設定など「そもそものAI導入」から社内定着まで伴走支援。マーケティング活用など一歩進んだご相談にも対応します。
10月23日に公開された2つの勧告の中身
GitHub の勧告データベースに載った GHSA-9hc7-p88p-mwm8 は、欠陥の内容を次のように書いています。Datasets の 5.1.0 までには、信頼できないデータを読み戻す欠陥(安全でない逆シリアル化)があります。攻撃者は、細工した pickle 形式のファイルを用意します。非推奨の pandas 用の読み込み部品は、そのファイルを pandas の pickle 読み込みの機能に検証せずに渡します。利用者がこの部品を指定してデータセットを読み込むと、ファイルに埋め込まれた処理が、利用者のプログラムと同じ権限で動きます。
欠陥の分類は、信頼できないデータの逆シリアル化を表す CWE-502 です。深刻度の評価は、共通の評価方式 CVSS の第3.1版で 10点満点の8.8 と記されています。ネットワーク越しに狙え、攻撃に特別な条件は要らず、事前の権限も要りません。ただし、利用者がファイルを読み込む操作を必要とします。
CVE の番号を割り当てた VulnCheck の勧告も、同じ10月23日付です。対象を Datasets 5.1.0 以前とし、修正版の欄には何も書いていません。CVSS の第4版で 8.7点と評価し、発見者として研究者の Sai Teja Erukude 氏の名前を挙げました。米国の脆弱性データベース NVD には 16:16 UTC に登録され、10月23日 20:37 UTC の時点の状態は「分析待ち」です。
Datasets の役割と、pandas 用の部品が担ってきた読み込み
Datasets は、機械学習で使う学習用や評価用のデータを読み込み、整えるための Python のライブラリです。Hugging Face が開発し、OSS として公開しています。Hugging Face の共有サイト Hub に置かれたデータセットも、手元や社内のサーバーにあるファイルも、同じ関数で読み込めます。読み込んだデータは、列ごとにまとめて保存する Arrow 形式に変換され、手元に一時保存されます。
ファイルの形式ごとに、読み込みを受け持つ部品があります。Parquet、CSV、JSON、Arrow などの部品は、ファイルの拡張子から自動で選ばれます。pandas 用の部品は、その自動の選択には入っていません。ライブラリのソースコードで拡張子と部品の対応表を見ると、pickle 形式の拡張子は含まれていません。この部品が動くのは、読み込みのときに利用者が「pandas」と名指しした場合です。
pandas は、表形式のデータを扱う Python の代表的なライブラリです。pandas で作った表は、pickle 形式でそのまま保存できます。Datasets の pandas 用の部品は、そうして保存された表のファイルを読み戻し、Arrow 形式に変える役割でした。部品の更新の記録を見ると、2021年1月の時点ですでにこの部品がありました。
2021年から2026年10月23日までの経緯(UTCと日本時間)
pandas 用の部品が非推奨になってから、欠陥が公表されるまでには約2年7か月あります。その間に、Datasets は3回、大きな版の番号を上げました。開発元の更新の記録と、勧告の公開時刻を並べると次のとおりです。
| 日時(UTC) | 日本時間 | 出来事 |
|---|---|---|
| 2021/1 | 2021/1 | この時点で pandas 用の部品がライブラリにある(更新の記録で確認できる最も古い時期) |
| 2024/3/12 | 2024/3/13 | pandas 用の部品を非推奨にする変更が統合される。理由は「説明書に載っておらず、pickle に頼っていて安全でない」 |
| 2024/4/19 | 2024/4/19 | 非推奨の警告を含む最初の版 2.19.0 が公開される |
| 2024/9/11 | 2024/9/11 | 3.0.0 公開。pandas 用の部品は残る |
| 2025/7/9 | 2025/7/9 | 4.0.0 公開。データセットに付いた処理の台本の実行を廃止。pandas 用の部品は残る |
| 2026/6/5 | 2026/6/5 | 5.0.0 公開。pandas 用の部品は残る |
| 2026/10/5 15:39 | 2026/10/6 0:39 | 5.1.0 公開(10月23日 20:37 UTC の時点の最新版) |
| 2026/10/23 1:26 | 2026/10/23 10:26 | 研究者が修正案(8879番)を開発元のリポジトリに出す |
| 2026/10/23 16:16 | 2026/10/24 1:16 | NVD に CVE-2026-57845 が登録される。VulnCheck の勧告も同日付 |
| 2026/10/23 18:31 | 2026/10/24 3:31 | GitHub の勧告データベースに GHSA-9hc7-p88p-mwm8 が載る |
| 2026/10/23 20:37 | 2026/10/24 5:37 | 修正案は未統合のまま。コメントもレビューの依頼も無い |
表の通り、研究者が修正案を出したのは、NVD への登録の約15時間前です。修正案の説明文には、技術的な解説と検証用のコードの置き場所が書かれています。研究者は、それらを自身のリポジトリで公開しています。GitHub の勧告と VulnCheck の勧告も、その公開先を参考情報に挙げました。
pickle 形式と、読み戻すときに呼び出される処理
pickle は、Python のプログラムの中のデータを、そのままの形でファイルに保存するための形式です。Python に最初から入っている仕組みで、機械学習の分野でも広く使われています。Hugging Face の説明書によると、PyTorch のモデルの重みの標準の保存形式も pickle です。
この形式は、データの値だけでなく、読み戻すときに呼び出す関数の指定も書き込めます。Python の公式の説明書は、信頼できない出どころの pickle を読み戻してはならないと注意しています。Hugging Face の説明書も、pickle を読み戻すとコードが実行されうると説明しました。読み戻す側の関数が中身を検証しない限り、ファイルを作った人が選んだ処理が、読み込んだ人の環境で動きます。
今回の欠陥は、この性質を持つ pickle を、Datasets の pandas 用の部品が出どころを問わずに読み戻していたことです。勧告によると、ファイルに埋め込まれた処理は、読み込んだプログラムの権限で動きます。学習用のサーバーで動かしていれば、そのサーバーにある認証情報やデータに手が届く権限です。ファイルの細工の仕方は、研究者の解説に書かれています。
影響を受ける版と、対象になる読み込み方
2つの勧告が対象とする版は、Datasets の 5.1.0 以前のすべてです。部品が非推奨になった 2.19.0 より前の版にも、同じ部品があります。勧告と修正案の説明を突き合わせると、対象になる条件と、ならない条件は次のとおりです。
| 使い方 | この欠陥の対象か | 根拠 |
|---|---|---|
| pandas 用の部品を名指しし、外部から受け取った pickle のファイルを読む | 対象 | 勧告が説明する条件そのもの |
| pandas 用の部品を名指しし、自社で作った pickle のファイルだけを読む | 勧告の想定する攻撃の形ではない | 攻撃者がファイルを用意できることが条件 |
| Parquet・CSV・JSON・Arrow のファイルを、拡張子に任せて読む | 対象外 | pandas 用の部品を通らない |
| 以前に作った Arrow 形式の一時保存を使い回す | 修正案でも使い続けられる | 修正案の説明文 |
| データを順に流して読む方式で、pandas 用の部品を名指しする | 修正案では、データを取り出す時点で止まる | 修正案の説明文 |
攻撃者が用意したファイルが届く経路は、勧告に細かく書かれていません。Datasets は、Hub のデータセットも、ウェブ上のファイルも、手元のファイルも読み込めます。Hub から取ったか、社内で受け渡したかに関わらず、pandas 用の部品で読む pickle のファイルを他人が作っていれば、勧告の条件に当てはまります。
CVSS の評価で利用者の操作が必要とされているのは、この部品を指定して読み込む操作を利用者自身がするためです。部品を名指しするのは利用者のプログラムの側です。Datasets を入れているだけでは、この欠陥の対象にはなりません。

2024年3月の非推奨と、大きな版3回を越えて残った部品
pandas 用の部品を非推奨にする変更は、2024年3月12日に開発元のリポジトリへ統合されました。変更の説明文は、理由を2つ挙げています。この部品は説明書に載っていないこと。読み込みを pickle に頼っていて安全でないこと。さらに、GitHub と Hub を検索しても、この部品を使っている例を1つも見つけられなかったと書かれています。
このとき部品に足された警告の文は、「pandas 用の部品は非推奨で、次の大きな版で削除される」という内容です。この警告は 5.1.0 の部品にも同じ文で残っています。実際には、2024年9月の 3.0.0、2025年7月の 4.0.0、2026年6月の 5.0.0 と、大きな版が3回出ても部品は削除されませんでした。
2024年3月の時点で、開発元は pickle に頼る作りを安全でないと書いていました。2026年10月の勧告は、同じ部品を欠陥として番号を付けたものです。警告は出ていたが、読み込み自体は止まっていなかった期間が約2年7か月ありました。この部品を実際に使っている利用者の数は、開発元も研究者も公表していません。
研究者の修正案8879番が変える部分
研究者が10月23日 1:26 UTC に出した修正案は、pandas 用の部品のうち、ファイルを開いて表を作る部分を置き換えます。置き換えた後は、ファイルを開く前、pickle を読み戻す前に、必ず誤りとして止まる作りです。止まるときの通知文は、pickle のファイルはコードを実行しうるため読み込みを無効にした、と説明します。そのうえで、Parquet・Arrow・CSV・JSON のファイルを使うか、手元にある pandas の表を直接変換するよう勧めています。
修正案の説明文によると、部品そのものを作ることと、互換性のある Arrow 形式の一時保存を使い回すことは、引き続きできます。一方で、ファイルの場所を調べる処理と取得は、止まる前に行われる場合があります。データを順に流して読む方式では、取り出しを始めた時点で止まります。
変更されたファイルは2つで、部品の本体と試験です。説明文には、pandas 用の部品と Parquet の読み込みに関わる25件の試験と、書き方の検査が通ったとあります。10月23日 20:37 UTC の時点で、この修正案にコメント・レビューの依頼・分類の札はいずれも付いていません。統合するかどうかを決めるのは開発元です。
GitHub の8.8点と VulnCheck の8.7点:2つの勧告の食い違い
この件を取り上げた報道は、10月23日 20:37 UTC までに確認した範囲では見つかりませんでした。代わりに、2つの勧告の書き方に違いがあります。1つは点数です。GitHub の勧告の表の見出しの点数は CVSS 第3.1版の 8.8、VulnCheck の勧告と NVD の登録は第4版の 8.7 です。GitHub の勧告の詳しい欄には、第4版の8.7も並んでいます。
点数の差は、評価方式の版の違いから来ます。第3.1版の評価では、利用者の操作が「必要」とされています。第4版では、利用者の操作が「受動的」とされています。第4版は利用者の関わり方を「受動的」と「能動的」に分けて扱います。受動的は、利用者が特別な判断をせず普段の操作をする中で起きる、という区分です。どちらの版でも、ネットワーク越しに狙えることと、機密性・完全性・可用性への影響が「高」である点は同じです。
もう1つは発見者の扱いです。VulnCheck の勧告は Sai Teja Erukude 氏を発見者として挙げていますが、GitHub の勧告の発見者の欄は空です。修正版については、どちらの勧告も記載していません。VulnCheck の勧告は対処の案内も書いておらず、参考情報に研究者の解説と修正案を挙げるだけです。修正版は無く、修正案は出ているが未統合という状態が、2つの勧告と開発元のリポジトリから読み取れます。
審査前の勧告と、Dependabot の通知が届かない仕組み
GitHub の勧告データベースで、GHSA-9hc7-p88p-mwm8 は「未審査」の勧告として載っています。GitHub の説明書によると、未審査の勧告は NVD の情報から自動で載るもので、GitHub の担当者が内容の正しさや完全さを確かめる前の段階です。審査済みの勧告には、どの配布元のどのパッケージが対象かという情報が付けられます。
この勧告の、影響を受けるパッケージの欄は空です。Python のパッケージ配布サイト PyPI のどのパッケージが対象かが、機械で読める形では書かれていません。GitHub の説明書は、未審査の勧告に対して Dependabot は通知を作らないと明記しています。Dependabot は、リポジトリの依存関係に脆弱性があると自動で知らせる GitHub の仕組みです。
このため、Datasets を依存関係に入れたリポジトリでも、10月23日 20:37 UTC の時点では、この勧告による自動の通知は届きません。GitHub が勧告を審査し、対象のパッケージと版の範囲を付ければ、通知の対象になります。審査がいつ行われるかは公表されていません。
Hugging Face Hub の pickle 検査が見ている範囲
Hugging Face は、Hub に上がるファイルを自動で検査しています。同社の説明書によると、検査は2種類です。1つは OSS のウイルス対策ソフト ClamAV による検査です。もう1つは、pickle のファイルが読み戻すときに呼び出す関数の一覧を、ファイルを実行せずに取り出す検査です。取り出した一覧はファイルの横に表示され、怪しいものは目立つように示されます。
説明書は、この検査を「完全ではない」と書いています。安全かどうかを確かめるのは利用者の責任だとも述べています。説明書は、ClamAV の検査は pickle を使った攻撃を捉えられないとも説明しました。説明書が例に挙げているのは、PyTorch のモデルの重みのファイルです。
説明書には、検査が「Hub に上がるすべてのファイル」に行われると書かれています。ただし、データセットのリポジトリに置かれた pickle のファイルにも、同じ一覧の表示が出るかは、明記されていません。今回の欠陥では、攻撃に使うファイルが Hub を通る必要はありません。社内の共有の場所やウェブ上に置かれたファイルは、Hub の検査の外にあります。
現時点で分かっていないこと
10月23日 20:37 UTC の時点で、2つの勧告と開発元のリポジトリ、NVD の登録で確かめられなかった点は次の5つです。どれも続報で変わりえます。
- Hugging Face が研究者の修正案を統合するか、別の形で直すか。修正を含む版を出す時期
- この欠陥が実際の攻撃に使われたかどうか。悪用の報告は、確認した範囲では見つからない
- Hub のデータセットのリポジトリに置かれた pickle のファイルが、モデルのファイルと同じ検査と表示の対象か
- pandas 用の部品を実際に使っている利用者や組織の数
- NVD の分析と、GitHub の勧告の審査が終わったときの点数と対象範囲
Hugging Face からの声明は、10月23日 20:37 UTC までに確認した範囲では出ていません。修正案にも、開発元の担当者のコメントは付いていません。研究者がいつ開発元に知らせたか、修正案より前に非公開の窓口で連絡があったかも、公表されている資料からは分かりません。
GitHub の勧告が審査されれば、対象のパッケージと版の範囲が付きます。そのとき、5.1.0 以前という範囲が保たれるか、修正版の番号が入るかは、開発元の対応しだいです。修正案の通り部品の読み込みが止められれば、pandas 用の部品で pickle を読む使い方そのものができなくなります。

勧告と修正案、開発元の警告が案内していること
2つの勧告とも、修正版の番号を示していません。VulnCheck の勧告は対処の案内を書かず、研究者の修正案を参考に挙げています。修正案に書かれた通知文は、pickle のファイルの代わりに Parquet・Arrow・CSV・JSON のいずれかを使うよう勧めています。手元にある pandas の表は、Datasets の変換の機能で直接読み込むよう案内しています。
開発元は、2024年4月の 2.19.0 から、pandas 用の部品を使うたびに非推奨の警告を出しています。警告の文は、次の大きな版でこの部品を削除すると予告するものです。Hugging Face の pickle の説明書は、モデルのファイルについて、信頼できる利用者や組織のものを読み込むよう勧めています。そのうえで、pickle を使わない保存形式の safetensors を紹介しています。
具体的な確かめ方や、自社の環境でこの部品が使われているかの調べ方は、勧告に書かれていません。研究者の解説には技術的な詳細があります。開発元が修正を出した場合は、開発元のリポジトリのリリースの告知と、GitHub の勧告の更新に載ります。
2024年2月に JFrog が報告した悪性モデル約100件
pickle の性質が Hub で問題になったのは、今回が初めてではありません。セキュリティ企業 JFrog は2024年2月27日、Hub に置かれた機械学習のモデルのうち、約100件に悪性の処理が入っていたと報告しました。誤検知を除いた数です。最も多かったのは PyTorch のモデルで、TensorFlow の Keras のモデルが続きました。
JFrog の報告によると、新しく作られたアカウントが上げた PyTorch のモデルは、読み込むと外部のサーバーにつながり、攻撃者が端末を操作できる状態を作る作りでした。PyTorch のモデルの保存には pickle が使われています。同じ型の処理を持つモデルは、別のアカウントからも見つかりました。JFrog は、見つかったものの多くは研究目的の検証や報奨金の調査だったとも書いています。
報告の時点で、Hub の pickle の検査は危ないモデルに警告を付けていましたが、ダウンロードは止めていなかった、と JFrog は書いています。問題のモデルは削除されたり、取得を止められたりしました。2024年の件はモデルの重みのファイル、2026年10月の件はデータセットの読み込みの部品です。pickle を読み戻すという仕組みは同じです。
Transformers の2024年4月の勧告と、Datasets の2026年7月の勧告
Hugging Face の OSS で、pickle の読み戻しに番号が付いた例は以前にもあります。2024年4月10日に公開された勧告 CVE-2024-3568 は、Transformers の TensorFlow 用のモデルが学習の途中経過を読み込む部分で、pickle を使っていた欠陥です。勧告によると、細工したファイルを読み込ませるとコードが実行されえました。4.38.0 で直り、CVSS の点数は3.4で「低」と評価されました。
Datasets 自身にも、2026年7月24日に別の勧告 CVE-2026-66007 が出ています。フォルダの構成からデータセットを作る部品で、付属情報に書かれたファイル名の検証が足りず、手元の別のファイルを読み出せる欠陥でした。深刻度は「中」で、点数は6.5です。こちらは 5.0.1 という修正版が示されていました。
10月5日の 5.1.0 の更新の告知にも、安全に関わる修正が含まれています。圧縮ファイルの中の場所の確かめ方の誤りの修正と、HDF5 形式の外部への参照を禁じる変更です。また、2025年7月の 4.0.0 では、データセットに付けた処理の台本を読み込み時に実行する仕組みが廃止されました。今回の欠陥は、5.1.0 の時点で残っていた読み込みの経路の1つにあたります。
よくある質問
Datasets を使っていれば、すべて対象ですか
勧告が対象とするのは、5.1.0 以前の版で、pandas 用の部品を名指しして、攻撃者が用意したファイルを読み込む使い方です。ライブラリのソースコードを見ると、この部品は拡張子からの自動の選択に入っていません。Parquet や CSV などを読む使い方は、この部品を通りません。
最新の版に上げれば直りますか
10月23日 20:37 UTC の時点で最新は 5.1.0 で、これも対象に含まれます。修正を含む版はまだ出ていません。研究者の修正案は開発元のリポジトリに出ていますが、統合されていません。
Hub から取ったデータセットなら、検査で止められますか
Hugging Face の説明書によると、Hub は pickle のファイルが呼び出す関数の一覧を取り出して表示しますが、検査は完全ではないと書かれています。データセットのリポジトリの pickle に同じ表示が出るかは明記されていません。今回の欠陥では、Hub を通らないファイルも攻撃に使えます。
攻撃に使われた例はありますか
10月23日 20:37 UTC までに確認した範囲では、悪用の報告は見つかりませんでした。研究者は技術的な解説と検証用のコードを公開しています。
- 確認した日時:2026年10月23日 20:37 UTC(日本時間10月24日 5時37分)。GitHub の勧告、VulnCheck の勧告、NVD の登録、開発元のリポジトリの修正案と更新の記録、リリースの一覧、Hugging Face と GitHub の説明書を確認しました
- 修正案の状態、GitHub の勧告の審査、NVD の分析は、続報で変わる可能性があります
- 研究者の検証用のコードは開いていません。欠陥の仕組みは、勧告と修正案の説明の範囲で記しています
まとめ
2026年10月23日、Hugging Face の Datasets 5.1.0 以前に、非推奨の pandas 用の部品が pickle のファイルを検証せずに読み戻す欠陥 CVE-2026-57845 が公表されました。攻撃者が用意したファイルをこの部品で読み込むと、ファイルに仕込まれた処理が利用者の権限で動きます。CVSS の点数は、GitHub の勧告の第3.1版で8.8、VulnCheck の勧告の第4版で8.7です。
この部品は2024年3月に開発元自身が安全でないとして非推奨にし、大きな版3回を越えて残っていました。研究者の修正案は読み込みを必ず止める内容で、10月23日 20:37 UTC の時点で未統合です。修正版の時期、悪用の有無、Hub のデータセットの pickle の検査の扱いは公表されていません。GitHub の勧告は未審査のため、Dependabot の通知は届かない状態です。
※本記事にはAIが活用されています。編集者が確認・編集し、可能な限り正確で最新の情報を提供するよう努めておりますが、情報の完全性、正確性、最新性、有用性等について保証するものではありません。本記事の内容に基づいて行動を取る場合は、読者ご自身の責任で行っていただくようお願いいたします。
AIの導入・活用、何から始めるべきかお悩みですか?
デボノはアカウント開設・初期設定など「そもそものAI導入」から社内定着まで伴走支援。マーケティング活用など一歩進んだご相談にも対応します。
