ホームページ > バックエンド開発 > C++ > Json.Net の「TypeNameHandling」設定 (自動) は外部 JSON データ攻撃に対して脆弱ですか?

Json.Net の「TypeNameHandling」設定 (自動) は外部 JSON データ攻撃に対して脆弱ですか?

DDD
リリース: 2025-01-07 14:39:42
オリジナル
965 人が閲覧しました

Is Your Json.Net `TypeNameHandling` Setting (Auto) Vulnerable to External JSON Data Attacks?

Json.Net TypeNameHandling を Auto に設定すると、外部 JSON データが脅威となる可能性がありますか?

JSON 逆シリアル化における、Json の TypeNameHandling 設定。ネットは、潜在的な脅威を軽減する上で重要な役割を果たします。ただし、ユーザーが提供した JSON データでこの設定を使用する場合の安全性については懸念が残ります。この問題を詳しく調べて、潜在的なリスクと予防策を検討してみましょう。

TypeNameHandling の脆弱性

外部 JSON ペイロードは、次のことを指定する "$type" プロパティを含めるように操作される可能性があります。逆シリアル化用の型。これらのタイプが注意深く検証されていない場合、攻撃者はそれらを悪用して「攻撃ガジェット」と呼ばれる不正なオブジェクトをインスタンス化する可能性があります。これらのガジェットは、リモート コード実行 (RCE) やファイル システム操作などの悪意のあるアクションを実行する可能性があります。

保護措置

Json.Net は、そのような攻撃を防ぐための安全対策を実装しています。 :

  • 不明なプロパティの無知: それ不明なプロパティを無視し、無関係な "$type" プロパティを持つ JSON ペイロードを無害にレンダリングします。
  • シリアル化互換性: 多態性値の逆シリアル化中に、解決された型が予期された型と一致するかどうかを確認します。そうでない場合は、例外がスローされます。

潜在的な抜け穴

これらの対策を講じたにもかかわらず、特定の状況では、たとえ明らかに型なしのメンバーが存在しない: