Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OWT2017jp - Least Privilege

OWASP Japan
September 30, 2017

OWT2017jp - Least Privilege

OWT2017jp
Least Privilege Design and Implementation
by 長山哲也, 神戸デジタル・ラボ

OWASP Japan

September 30, 2017
Tweet

More Decks by OWASP Japan

Other Decks in Technology

Transcript

  1. あなた誰? 長山 哲也 所属 株式会社神戸デジタル・ラボ セキュリティソリューション事業部 セキュリティ運用支援チーム リーダー 経歴 •

    Sierでの金融機関システムのインフラを担当。セキュリ ティ要件定義を作成したことでセキュリティに興味を持つ • KDLにてWebアプリケーション/プラットフォーム脆弱性 診断/標的型攻撃メール訓練を担当 • その後、コンサルタントとしてリスク分析、セキュリティ 要件定義支援、ポリシー策定支援、セキュア開発支援等を 実施 • コンサルタントと並行してASPの企画開発主導 言語 Python
  2. 最小権限の重要性と難しさ - 脆弱性を見つけても修正しにくい A1.代行は自社内の限られた者 が使うため操作して良い A2.代行は委託先も利用するた め全て操作できてはいけない A3.そもそもどこまで使うか想 定していない 後一週間で、、

    • そもそも権限設定の機能なかったから作らなきゃ • 権限での絞り込み機能を作らなきゃ A社用 コンテンツ1 A社用 コンテンツ2 B社用 コンテンツ1 C社用 コンテンツ1 コンテンツ マネージャー マネージャー 代行
  3. 最小権限を実現するために公開されている情報 – OWASPの場合 6:適切なアクセス制御の実装 • すべてのリクエストがアクセス制御を通るようにする • アクセス制御のデフォルトは「拒否」 • 最小権限の原則

    • アクセス制御をプログラムにハードコーディングしない • アクティビティに基づいて記述する • アクセス制御には、サーバー側の信頼できるデータを使う OWASP Top 10 Proactive Controls 2016 Japanese P18 – P20 <https://www.owasp.org/images/a/a8/OWASPTop10ProactiveControls2 016-Japanese.pdf>
  4. 何を守ろうとしているのか – どんな攻撃があるのか 別のユーザのデータが取得される →設計ミス、実装ミスで全データが取得される id コンテンツ 所有者 1 コンテンツA

    Tokyo 4 コンテンツC Kansai 8 コンテンツD Nagoya 12 コンテンツF Tokyo 15 コンテンツK Tokyo 22 コンテンツM Kansai コンテンツAから コンテンツMまで表示。。
  5. データとその特性の洗い出し 架空のコンテンツ管理システムを題材にしてみる コンテンツ管理ASP「コンテンチャー」 ユーザ スペース ユーザ スペース ユーザ スペース システム

    管理者 有料 ユーザ 無料 ユーザ • ユーザは契約したらスペース にコンテンツをアップロード して業務をする • システム管理者はアップロー ドしたコンテンツを分析する
  6. データとその特性の洗い出し – データのライフサイクルの検討 その他のデータの検討 作成契機 システム管理者が一 カ月に一回作成 削除契機 分析完了後削除 作成契機

    契約期間中にユーザ が任意のタイミング で作成 削除契機 ・ユーザが任意の タイミングで削除 ・契約終了後削除 先にアカウント関連 のデータのライフサ イクルを考えておく と発想しやすい
  7. データとその特性の洗い出し – データの操作権の特定 id name description group_id 1 コンテンツA ……

    Tokyo 4 コンテンツC …… Kansai 8 コンテンツD …… Nagoya 12 コンテンツF …… Tokyo id name description user_id 1 コンテンツA …… sSjp00231 4 コンテンツC …… Sato_python29 8 コンテンツD …… sSjp00231 12 コンテンツF …… Sato_python29 グループ 単位の テーブル ユーザ 単位の テーブル 検討結果によって参照するためのカラムが増える
  8. 操作方法の検討 – Howを考える 作成 契機 システム管理者が一 カ月に一回作成 認証後の管理者ユーザのみがア クセス可能な画面から作成する 削除

    契機 分析完了後削除 システムで定期的にバッチに よって削除 作成 契機 契約期間中にユーザ が任意のタイミング で作成 認証後の有料ユーザのみがアク セス可能な画面から作成する 削除 契機 ユーザが任意の タイミングで削除 認証後の有料ユーザのうち管理 権限のあるユーザのみがアクセ ス可能な画面から削除 契約終了後削除 システムで定期的にバッチに よって削除 具体的なインターフェース を考える
  9. 操作方法の検討 – Howを考える ユーザ ユーザ機能 管理機能 管理者 一時ユーザ ユーザ認証 登録用一時URLメール送信

    一時URL確認 アカウント関連のデータを利用した 認証についてはシーケンス図等でHowを検証 削除契機の 新たな発見 一時ユーザが 必要になった
  10. 実装するには – フレームワークのアクセス制御機能を利用 アクセス制御機能(ACL)を利用すると以下のようなことが簡単に実現可能 1.ログイン有無による制限 2.ページ単位のアクセス許可・禁止 残りのユーザ種別によるデータの取得のみ実装すれば良くなる Webアプリケーション cookieにてセッショ ンIDを送信

    id content group_id 1 コンテンツA Tokyo 4 コンテンツC Kansai 8 コンテンツD Nagoya 12 コンテンツF Tokyo 15 コンテンツK Tokyo 22 コンテンツM Kansai Tokyoグループの データだけ受信 セッションに紐づく ユーザIDや権限の取得 取得したユーザIDや権 限に合致したデータの 取得
  11. 実装するには – その他参考となる情報 ▪IPA セキュアプログラミング講座 第2章アクセス制御 アクセス認可 <https://www.ipa.go.jp/security/awareness/vendor/ programmingv2/web.html> ▪OWASP

    OWASP Top10 ProactiveControl2016 <https://www.owasp.org/images/a/a8/ OWASPTop10ProactiveControls2016-Japanese.pdf > 12の事例に学ぶWebアプリケーションのアクセス制御 <https://speakerdeck.com/owaspjapan/12-case-studies-for-the- access-controls-of-web-application-number-appsecapac2014>
  12. どのように検証すべきか – コードから権限表を生成する ドキュメンテーションとテストコード記述のコストを抑える View Model Contro ler 機能名 画面名

    無料 ユーザ 有料 ユーザ 管理者 ユーザ コ ン テ ン ツ 管 理 参照 ◦ ◦ ◦ 作成 × ◦ ◦ 削除 × ◦ ◦ ユ ー ザ 管 理 ユーザ 作成 × × ◦ パス ワード 編集 × × ◦ スクリプト
  13. どのように検証すべきか – コードから権限表を生成する 権限設計をユーザ視点とデータ視点双方から確認しやすくなる 機能名 画面名 無料 ユーザ 有料 ユーザ

    管理者 ユーザ コ ン テ ン ツ 管 理 参照 ◦ ◦ ◦ 作成 × ◦ ◦ 削除 × ◦ ◦ ユ ー ザ 管 理 ユーザ 作成 × × ◦ パス ワード 編集 × × ◦