GitHub Repo
Transformers 5.22.2、チャットテンプレートのサンドボックスを強化し、オブジェクト属性へのアクセスと入力型を制限
Hugging Faceは11月6日、Transformers 5.22.2をリリースしました。Jinjaチャットテンプレートのサンドボックス強化と入力のサニタイズが含まれています。Jinjaの最低バージョン要件も引き上げられたため、カスタムテンプレートやマルチモーダルメッセージの処理フローで互換性を確認してください。

Hugging Faceは11月6日、チャットテンプレートのJinjaサンドボックス強化を正式な修正版に含めたTransformers 5.22.2をリリースしました。モデルリポジトリからテンプレートを読み込む推論サービスでは、この更新は生成前のデータ処理境界に関わります。モデルの重みや推論コアとあわせて確認する価値があります。リリースノート
チャットテンプレートは、ロール、メッセージ本文、制御トークンをモデルが使用するトークン列にまとめるため、各リクエストの前処理に直接関わります。公式ドキュメントによると、モデルによって形式が異なる場合があり、制御トークンを誤ると性能が損なわれる可能性があります。そのため、エンジニアリングチームは通常、モデルに対応したテンプレートを使用する必要があり、テンプレートの実行環境も管理しなければなりません。チャットテンプレートのドキュメント
メンテナーは修正の説明で、サンドボックス内でアクセス可能なdictオブジェクトが、CPythonの配列オーバーフロー問題を引き起こす可能性があると述べています。今回の更新では、少数のメソッドのみを提供する辞書インターフェースに切り替え、namespaceへのアンダースコアで始まる属性の保存を制限し、テンプレートからアクセスできる内部機構を絞り込みました。これはメンテナーによる修正動機の説明であり、公開情報には影響を受ける環境の全容は示されていません。修正提案
もう一つの変更は、テンプレートから参照できるデータを事前にサニタイズすることです。対象には会話、ツール構造、ドキュメント、追加パラメーターが含まれます。一般的なコンテナは再帰的に変換され、NumPyのスカラー、dataclass、Pydanticモデルもそれぞれ処理されます。その他のオブジェクトは型名を示すプレースホルダーテキストに変換され、画像や配列などのオブジェクトのメソッドを通じて、テンプレートが追加機能にアクセスするのを防ぎます。また、jinja2の最低バージョン要件が3.1.0から3.1.6に引き上げられました。コード差分
これらの変更を踏まえると、アップグレード時の検証では、カスタムオブジェクトのフィールド、マルチモーダルコンテンツ、テンプレートのレンダリング結果を確認し、固定している依存関係のバージョンも点検する必要があります。Jinjaの公式説明も、サンドボックスは例外処理やCPU・メモリ制限と併用する必要があるとしています。今回の更新によって、テンプレートに関するあらゆるリスクが解消されたと見なすことはできません。今後は互換性に関する報告や、より詳細なセキュリティ情報を注視してください。Jinjaのセキュリティに関する説明