Apache ArrowのPMCメンバーの須藤です。
2023-11-09にPyArrow 14.0.1がリリースされました。このバージョンでは「Apache Arrowファイル・Apache Parquetファイル読み込み時に任意のPythonコードを実行できる」という脆弱性を修正しています。信頼できないファイルを読み込むような使い方をしている人はすぐに対応してください。自分が作ったファイルを自分で読み込むというように信頼できるファイルのみを読み込んでいる場合はこの脆弱性は問題になりません。
なお、この脆弱性はPyArrowのみで発生し、Apache ArrowのC++実装やRubyバインディングなど他の言語用のライブラリーでは発生しません。
対応方法
対応方法は次の2つです。
- PyArrowを14.0.1にアップグレードする。
pyarrow-hotfix
パッケージを使う。
すでにPyPI/conda-forgeにはPyArrow 14.0.1がアップロードされているので14.0.1を使うようにすれば対応できます。
しかし、現在使っているPyArrowのAPIとPyArrow 14.0.1のAPIが違っていてすぐにアップデートできない(自分たちのコードをたくさん変更しなければいけなくてすぐに対応できないとか)というケースもあるでしょう。その場合はpyarrow-hotfix
パッケージを使ってください。
pyarrow-hotfix
はPyArrow 0.14.0から14.0.0までのすべてのバージョンと一緒に使えます。そして、それぞれのバージョン用にこの脆弱性を修正する変更が入っています。そのため、PyArrowのバージョンをそのままにこの脆弱性に対応できます。もし、すぐにPyArrowのバージョンをアップデートできない場合はpyarrow-hotfix
を使ってください。
詳細
私もPMCメンバーの1人としてこの脆弱性の対応に関わったのでなにが原因でどのように対応したかの詳細を知ってはいるのですが、公式にすべての情報が公開されるまで私が説明することは控えておきます。(ということで、後でここを更新するかも。)
現時点での公式のアナウンスは以下のとおりです。
- メーリングリストでのアナウンス:CVE-2023-47248: PyArrow, PyArrow: Arbitrary code execution when loading a malicious data file
- ブログでのアナウンス:Apache Arrow 14.0.1 Release
- CVE:CVE-2023-47248
まとめ
PyArrow 0.14.0から14.0.0に任意のコードを実行できる脆弱性があることがわかりました。この脆弱性に対応したPyArrow 14.0.1がリリースされているので信頼できないApache Arrowファイル・Apache Parquetファイルを読み込む使い方をしている人は迅速に対応してください。対応方法は次の2つのどちらかです。
- PyArrow 14.0.1にアップグレード
pyarrow-hotfix
を使う(PyArrow 14.0.1にアップグレードできない場合)
脆弱性への対応方法に関するサポートも含むApache Arrowのサポートサービスが必要な方はお問い合わせください。