CS.AUTH.NOATTR

欠落している承認チェックの可能性

CS.AUTH.NOATTR チェッカーは、[Authorize] または [AllowAnonymous] 属性を使用することで、承認チェックを実行しない ASP.NET Controllers/PageModels にフラグを立てます。

脆弱性とリスク

コードがアクセス制御チェックを適用しない場合、ユーザーはデータにアクセスしたり、また実行が許可されてはならないアクションを実行することができます。これにより、情報の漏洩、サービス拒否、任意コードの実行などの、さまざまな問題を引き起こす可能性があります。

脆弱コード例

コピー
  using System;
  using System.Web;
  using System.Web.Mvc;public class AdministrationController : Controller
  {
      public ActionResult ViewSensitiveInformation() { }
  }

この例では、AdministrationController に [Authorize] 属性がないため、どのユーザーも潜在的にそのアクション ViewSensitiveInformation を呼び出すことができます。

修正コード例 1

コピー
  using System;
  using System.Web;
  using System.Web.Mvc;
   
  [Authorize(Roles = "Administrator")]
  public class AdministrationController : Controller
  {
      public ActionResult ViewSensitiveInformation() { }
  }

[Authorize] 属性を追加することで、管理者権限があるユーザーのみが、ViewSensitiveInformation が返す情報にアクセスできます。

修正コード例 2

コピー
  using System;
  using System.Web;
  using System.Web.Mvc;
   
  public class AdministrationController : Controller
  {
      [Authorize(Roles = "Administrator")]
      public ActionResult ViewSensitiveInformation() { }
  }

[Authorize] 属性を追加することで、管理者権限があるユーザーのみが、ViewSensitiveInformation が返す情報にアクセスできます。