ブログ

エンジニアのためのセキュリティ攻略:共有&学習シリーズ - アクセス制御の不備

May 9, 2019
Jaap Karan Singh

ビジネスアプリケーションを構築する際、それが社内用であれ顧客向けの外部用であれ、すべてのユーザーにすべての機能を使わせることはまずないでしょう。もしそうしているなら、アクセス制御の不備という脆弱性を抱えている可能性があります。

アクセス制御の不備とは何か、なぜそれが危険なのか、そしてどのように修正すべきかを見ていきましょう。

アクセス制御の不備を理解する

アクセス制御の不備は、アプリケーションのコードに適切なセキュリティチェックやアクセス制限が組み込まれていない場合に発生します。また、アプリケーションの設定ミスにより、本来アクセスすべきでない機能やページにユーザーがアクセスできてしまう場合にも起こります。

例えば、経理担当者であれば、特定の口座への入金や社内口座間の資金移動を行う権限があるかもしれません。しかし、それらの口座から現金を引き出したり、外部の口座へ送金したりする権限までは不要なはずです。適切なアクセスチェックが行われていなければ、従業員が必要以上の操作を行えてしまう恐れがあります。

こうしたチェックは、コード内で行うことも、設定ファイルで行うことも可能です。例えば、どのユーザーがどのページにアクセスできるかをWebアプリケーションフレームワークに指示するXML設定ファイルなどが挙げられます。これにより、ユーザーは許可された機能にのみアクセスできるようになります。

なぜアクセス制御の不備が危険なのか

次のような例を考えてみましょう。攻撃者がユーザー作成コードの操作方法を見つけ出し、単純なPOSTリクエストで管理者ユーザーを作成できるようになったとします。攻撃者はユーザー名とパスワードを送信し、通信の途中でURLパラメータやリクエストボディに「admin」というロール(役割)を追加するように改ざんします。その結果、攻撃者はアプリケーションにログインし、即座に管理者権限を手に入れてしまいます。

必ずしも悪意のある攻撃者がシステムに侵入するとは限りません。適切なアクセス制御がなければ、本来部署間で共有されるべきではない機密情報が漏洩する可能性があります。もし社内の全従業員が人事給与データや財務データを見ることができたらどうなるでしょうか。会社の経営難による人員削減の計画を全従業員が知ってしまったらどうなるでしょう。これは従業員の士気を下げ、会社の評判を大きく損なうことになりかねません。

顧客の機密情報が失われる可能性もあります。企業はサービスを利用する顧客の個人情報を保管していることが多く、アクセス制御の欠如によってこれらが意図せず流出しないよう注意が必要です。例えば、システムでユーザーが自分の健康記録を照会できる場合、他人の健康情報まで照会できてしまわないでしょうか。URLに顧客IDが含まれていると、攻撃者はそのIDを順番に書き換えていくことで、他人の個人情報にたどり着いてしまう可能性があります。

アクセス制御の不備を克服する

ロールベースアクセス制御(RBAC)は、堅牢なアクセス制御を実装するための非常に効果的なツールです。Active Directoryを利用している方なら、グループを作成し、個人ではなくグループ単位で特定の項目へのアクセス権を付与するという考え方に馴染みがあるでしょう。アプリケーションも同様で、ロール(役割)を使って誰が何を見られるかを定義します。

これには2つの利点があります。第一に、誰かが管理者ロールから外れるたびに機能を変更する必要がないことです。以前は管理者だったが今はその権限を持つべきではないという場合、新しい人を管理者ロールに割り当て、前の人をそのロールから外すだけで済みます。コード側では、個々のユーザーが特定のページや機能にアクセスできるかをチェックするのではなく、ユーザーが管理者ロールを持っているかどうかを確認するだけでよくなります。

第二の利点は、メンテナンスの悪夢を回避できることです。すべての個人とすべての機能やページを紐付けるような細かすぎるアクセス制御は、時間が経つにつれて管理不能になります。ロールを使えば、複数の人を一つのロールに追加できるため、管理が非常に楽になります。全社員を含むロールもあれば、わずか5人だけのロールもあるでしょう。管理すべきロールの数が減るため、運用効率が向上します。1万人の会社であっても、アプリケーションの機能数に1万を掛けた数ではなく、わずか100個程度のロールで管理できるかもしれません。利用しているアプリケーションフレームワークで、堅牢なアクセス制御のためにどのようなオプションが用意されているか調べてみてください。

機能レベルでのアクセス制御を行うことも極めて重要です。すべての機能へのアクセスを保護し、ユーザーが特定のアクセス制御チェックを通過することを必須とします。最小権限の原則に従い、デフォルトではアクセスを拒否し、必要な場合にのみ許可を与えるようにします。機能ごとにアクセス制御を実装し忘れることは起こり得ます。アクセス制御を一元管理し、強制するための中心的なコンポーネントを利用しましょう。

機密機能を保護する

アクセス制御の不備は、データやアプリケーションを攻撃や悪用に対して無防備な状態にします。適切に保護されていない顧客データは大規模な情報漏洩につながり、会社の評判と収益を大きく損なう恐れがあります。

アクセス制御の不備は、攻撃者が本来アクセスすべきでない機能にアクセスできてしまうことで、アカウント乗っ取りにつながる恐れがあります。適切な機能レベルのアクセス制御を実装することで、悪意のある攻撃者だけでなく、内部関係者による誤操作からもアプリケーションを保護できます。

機能レベルのアクセス制御は完璧ですか?今すぐアクセス制御の不備を修正する課題に挑戦してみましょう: [ここから開始]

タグライン

AI主導の開発をリリース前にガバナンスする

AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。

デモを予約する
リソースライブラリ

他のブログ記事を見る

セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。

すべて表示
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

セキュリティ文化の統一:Sageはいかにしてチャンピオンプログラムを構築したか

Sageがどのようにして柔軟かつ関係性を重視したアプローチでセキュリティを強化し、200名以上のセキュリティチャンピオンを育成して、目に見えるリスク低減を実現したのかをご紹介します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

2026年サイバーセキュリティ意識向上月間:企業防衛に不可欠なAIセキュリティの理解

主要なAI企業の多くが、安全対策が追いつくまでの間、AI開発を世界的に減速させるよう公に呼びかける事態となっています。しかし現実には、深刻なセキュリティ問題はすでに顕在化しています。AI導入に伴う金銭的コストやリスクが増大し続ける中、多くのセキュリティリーダーや経営陣は差し迫った状況に追い込まれています。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

イネーブラー8:プログラムのブランディング

セキュアコーディングプログラムを成功させるには、優れたコンテンツ以上のものが必要です。イネーブラー8では、ブランディングによって参加を「憧れのステータスを得る体験」へと変える方法を解説します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

すべての従業員が今、AIサイバーセキュリティの最前線に立っている

エンタープライズテクノロジーの状況は、手遅れになるまで誰も予測できなかったほどの速さで変化しています。私たちは今、人間が書いたコードと基本的なコパイロット支援の時代から、エージェント型開発ライフサイクル(ADLC)の時代へと正式に足を踏み入れました。自律型AIエージェントは、複数の機能にわたってかつてない効率性をもたらす一方で、全く新しい種類のセキュリティリスクや規制リスクも引き起こしています。

詳細はこちら

AIを活用した開発をリリース前にセキュアに

開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。

デモを予約する
該当する項目が見つかりません。