Skip to main content

NumPyの任意コード実行の脆弱性

著者
Headshot of Hayley Denbraver

Hayley Denbraver

NumPy Arbitrary Code Execution Vulnerability small

2019年2月4日

0 分で読めます

科学技術計算に広く使われているPythonのオープンソースパッケージNumPyで最近発見された脆弱性により、任意のコード(悪意のあるコードを含む)が実行されるおそれがあります。

NumPy

NumPyは、数学、科学、工学向けのオープンソースソフトウェアパッケージ群であるSciPyエコシステムの一部です。NumPyは産業界と学術界の両方で利用されており、GitHubで9,000を超えるスターと700人以上のコントリビューターを獲得しています。PyPIのBigQueryで確認できる記録によると、NumPyは直近3か月で約400万回ダウンロードされています。

脆弱性について

2019年1月16日、GitHubユーザーのnanshihuiが、numpy.load関数はPythonのpickleモジュールの使用方法に起因して、任意コード実行の脆弱性があると報告するIssueを作成しました。Pythonのpickleモジュールは、Pythonオブジェクトをシリアライズおよびデシリアライズします。「Pickling」はPythonオブジェクトの階層構造をバイトストリームに変換し、「unpickling」はバイトストリームをオブジェクトの階層構造に戻します。信頼できないソースからpickle化された配列を受け入れるのは危険です。unpicklingの前に検証する方法がないためです。悪意のあるシェルコードが入力として渡された場合、unpickling時に実行される可能性があります。

この脆弱性は、2015年10月にリリースされたバージョン1.10から最新バージョン1.16までのNumPyに存在します。この脆弱性の詳細はこちらからSnykのデータベースで確認できます。

影響を受けるNumPyのバージョンでは、pickle化されたオブジェクト配列の読み込みがデフォルトで許可されています。これは信頼できるソースの場合にのみ行うべきですが、デフォルトの動作としては不適切です。

現在、この脆弱性が悪用された事例は確認されていませんが、問題への認知が広がれば状況が変わる可能性があります。この脆弱性の悪用に認証は不要で、特別な技術的知識も必要ありません。

この記事の執筆時点では、修正パッチやアップグレードはまだ提供されていませんが、NumPyチームが対応を進めています。信頼できないソースからデータを読み込むすべての allow_pickle=False の呼び出しに numpy.load を渡せば、脆弱性の影響を受けないようにできます。

影響を受けていますか?

Snykをご利用の場合、脆弱性のあるNumPy依存関係を含むプロジェクトがあれば、通常のアラートでお知らせします。

まだSnykをお試しでない方は、こちらの使いやすいインターフェースをお試しいただくか、CLIを使ってローカルでテストを実行してみてください。

続きを読む

illustration hero ai
Blog

PHPが重大な未認証RCEの脆弱性2件を修正(CVE-2026-109618、CVE-2026-109619):今すぐアップデート

PHPのリクエスト処理に重大な脆弱性が2件あり、未認証のリモートコード実行につながるおそれがあります。修正版にアップグレードするか、旧バージョンにはベンダー提供のバックポートを適用してください。

blog feature ai lilac
Blog

エージェント型修正で脆弱性バックログをプルリクエストに変える

Evo Remediation Agentがオープンプレビューで利用可能になり、Evo Agentic AppSecに依存関係の自動解決機能が加わりました。AppSecチームは継続的な修正キャンペーンを実施できるようになりました

AI Background min crop
Blog

AIが、あなたが受け入れてきたあらゆるリスクを一気に顕在化させる:AI Security Panel: Unfilteredから得た7つの洞察

AIによって攻撃はより安価かつ高速になり、組織がすでに抱えているリスクが露呈しています。4人のセキュリティリーダーが、機械の速度に対応する防御と迅速な修復が今不可欠である理由を語ります。