Python の自然言語処理ライブラリ NLTK において、pickle 形式のデータをロードする際の制限を回避し、任意コード実行(RCE)が可能になる脆弱性が報告された。NLTK には安全な読み込みのためにモジュールの許可リスト(allowlist)機能が存在するが、特定の関数だけでなくモジュールの名前空間全体を信頼する設定になっていたため、攻撃者は細工した pickle ファイルを通じて許可範囲内の危険な関数を呼び出せる状態であった。この問題により、本来制限されているはずの OS コマンド実行などが可能となっており、開発者は以前の保護メカニズムが不十分であったことを認めている。報告には PoC(概念実証)が含まれており、攻撃の実現性が示されている。
対象ソフト
NLTK (Natural Language Toolkit) は、Python で自然言語処理を行うための主要なライブラリである。教育、研究、およびデータサイエンスの現場で、テキスト解析や言語モデルの構築に広く利用されている。
影響
悪意を持って細工されたトークナイザやモデルのファイルを NLTK で読み込んだ場合、攻撃者によって任意の OS コマンドを実行される可能性がある。これにより、サーバー内の情報漏洩や、不正なプロセスの実行を招く恐れがある。
対応策
NLTK バージョン 3.10.3 以降にアップグレードすること。