CVE-2026-61598 in djust情報

要約

〜によって VulDB • 2026年09月17日

djustは、RustによるパフォーマンスでDjangoにPhoenix LiveViewスタイルのリアクティブなサーバーサイドレンダリングを提供します。バージョン1.0.7より前では、`djust.mixins.model_binding.ModelBindingMixin` はデフォルトの `update_model` イベントハンドラを提供し、LiveViewの基本MROの一部であるため、すべてのLiveViewでこれが公開されます。これはクライアントから提供される名前(`field`)を持つビュー属性に `setattr` を実行しますが、その制御は以下のみによって行われます: `_` で始まる名前の拒否;フレームワーク内部の14項目を含むdenylist (`FORBIDDEN_MODEL_FIELDS`) の拒否;デフォルトがNoneで全許可となる任意の `allowed_model_fields` ;および `hasattr` による存在確認。その結果、クライアントはテンプレート内で `dj-model=` で実際にバインドされているフィールドだけでなく、公開されており既存のすべてのビュー属性を設定できます。denylist はフレームワークのパイプラインをカバーしていますが、開発者のビジネスロジックや認可状態については何も対象としていませんし、allowlist はオプトイン方式(デフォルトで無効)です。1つの `dj-model="search"` 入力をバインドするとともに、`self.account_id` / `self.is_admin` / `self.total_price` をビューの状態として保持している開発者は、クライアントが WebSocket経由で `{type:event, event:"update_model", params:{field, value}}` を介してそれらすべてを設定できることを認識しません。型強制は対象属性の型と一致するため(例: `"true"` -> bool True)、攻撃者の支援となります。この問題は djust 1.0.7 で修正されました。回避策として、dj-modelを使用するすべてのビュー(またはLiveViewをサブクラス化する)において `allowed_model_fields` を明示的にバインド可能なフィールドの最小リストに設定してください;また、authorization/ownership状態を dj-model バインディングと共有する公開されたビュー属性には保持しないでください。

If you want to get best quality of vulnerability data, you may have to visit VulDB.

責任者

GitHub M

予約する

2026年07月10日

モデレーション

承諾済み

エントリ

VDB-405941

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!