ホームページ > バックエンド開発 > C++ > 逆シリアル化を特定の型に制限している場合でも、Json.Net の「TypeNameHandling.Auto」を使用した自動 JSON 逆シリアル化は安全ですか?

逆シリアル化を特定の型に制限している場合でも、Json.Net の「TypeNameHandling.Auto」を使用した自動 JSON 逆シリアル化は安全ですか?

Mary-Kate Olsen
リリース: 2025-01-07 14:16:41
オリジナル
874 人が閲覧しました

Is Automatic JSON Deserialization with Json.Net's `TypeNameHandling.Auto` Secure, Even When Limiting Deserialization to a Specific Type?

Json.Net TypeNameHandling Auto により外部 JSON は脆弱になる可能性がありますか?

問題:

ユーザーがカスタム JSON オブジェクトをアップロードする Web サイト アプリケーションでは、潜在的な脅威を認識することが不可欠です自動化された JSON 型の逆シリアル化から発生します。問題は、逆シリアル化される唯一の型が特定の型 (例: MyObject) であり、MyObject のメンバーのいずれも System.Object 型または動的型を持たない場合、自動型逆シリアル化が脆弱性の影響を受けやすいかどうかです。

答え:

これらの条件を遵守するとリスクが大幅に軽減されますが、完全な保護は保証されません。 Json.Net の TypeNameHandling 設定を Auto に設定すると、MyObject に対応するフィールドが存在しない場合でも、「$type」情報に基づいてオブジェクトを作成できる可能性があります。

詳細な説明:

Json.Net をターゲットとする攻撃は、TypeNameHandling 設定を悪用して、受信側システムを侵害するように設計されたオブジェクトである「攻撃ガジェット」を構築します。 Json.Net の保護メカニズムには、不明なプロパティの無視と型の互換性のチェックが含まれます。ただし、明らかな型なしメンバーがなくても攻撃ガジェットを構築できるシナリオもあります。