Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OWT2017jp - Least Privilege
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
OWASP Japan
September 30, 2017
Technology
4.3k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OWT2017jp - Least Privilege
OWT2017jp
Least Privilege Design and Implementation
by 長山哲也, 神戸デジタル・ラボ
OWASP Japan
September 30, 2017
More Decks by OWASP Japan
See All by OWASP Japan
OWASP Night 2019.03 Tokyo
owaspjapan
0
400
OWASP SAMMを活用したセキュア開発の推進
owaspjapan
0
1.1k
20190107_AbuseCaseCheatSheet
owaspjapan
0
220
セキュリティ要求定義で使える非機能要求グレードとASVS
owaspjapan
5
1.2k
AWSクラスタに捧ぐウェブを衛っていく方法論と死なない程度の修羅場の価値
owaspjapan
9
3.5k
Shifting Left Like a Boss
owaspjapan
2
340
OWASP Top 10 and Your Web Apps
owaspjapan
2
430
OWASP Japan Proposal: Encouraging Japanese Translation
owaspjapan
1
290
elegance_of_OWASP_Top10_2017
owaspjapan
2
580
Other Decks in Technology
See All in Technology
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
170
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
150
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
540
攻撃者視点で考えるDetection Engineering
cryptopeg
3
2k
自宅LLMの話
jacopen
1
670
フィジカル版Github Onshapeの紹介
shiba_8ro
0
290
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.6k
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
440
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
180
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Tell your own story through comics
letsgokoyo
1
960
How to Talk to Developers About Accessibility
jct
2
240
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Deep Space Network (abreviated)
tonyrice
0
210
The agentic SEO stack - context over prompts
schlessera
0
820
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
How to train your dragon (web standard)
notwaldorf
97
6.7k
Docker and Python
trallard
47
3.9k
For a Future-Friendly Web
brad_frost
183
10k
Transcript
最小権限の具体的な実現方法 長山哲也 (株)神戸デジタル・ラボ
あなた誰? 長山 哲也 所属 株式会社神戸デジタル・ラボ セキュリティソリューション事業部 セキュリティ運用支援チーム リーダー 経歴 •
Sierでの金融機関システムのインフラを担当。セキュリ ティ要件定義を作成したことでセキュリティに興味を持つ • KDLにてWebアプリケーション/プラットフォーム脆弱性 診断/標的型攻撃メール訓練を担当 • その後、コンサルタントとしてリスク分析、セキュリティ 要件定義支援、ポリシー策定支援、セキュア開発支援等を 実施 • コンサルタントと並行してASPの企画開発主導 言語 Python
最も伝えたいこと 情報・データ起点権限設計しましょう
アジェンダ • 最小権限とは • 最小権限の重要性と難しさ • 何を守ろうとしているのか • 権限設計をするには •
実装するには • どのように検証すべきか • 最小権限を維持するには
テーマの対象 • Webアプリケーションの権限設計 • サーバ、OSの権限設計 • 組織運用上の権限設計
権限 最小権限とは アクセス制御を設計する際は、ユーザーやシステム・コンポーネン トごとに操作の実行に要求される最低限の権限を、最低限の期間だ け割り当てる必要があります 範 囲 期間 OWASP Top
10 Proactive Controls 2016 Japanese P19 <https://www.owasp.org/images/a/a8/OWASPTop10ProactiveControls2 016-Japanese.pdf >
最小権限の重要性と難しさ - ビジネスとの結びつきが強い - ツールでは脆弱性を見つけにくい - 脆弱性を見つけても修正しにくい
最小権限の重要性と難しさ - ビジネスとの結びつきが強い 権限設計に失敗した場合利用プラン自体を見直す必要がでる 機能 無料 ユーザ 有料 ユーザ 管理者
ユーザ 対応す る画面 A ◯ ◯ ◯ 画面1 画面2 B ◯ ◯ ◯ 画面4 C × ◯ ◯ 画面1 D × × ◯ 画面7
最小権限の重要性と難しさ - ツールでは脆弱性を見つけにくい <script>alert(‘XSS’)</script> Web アプリケーション GET http://…/?role=trial GET http://…/?role=manager
無料ユーザ用 の画面 管理者ユーザ用 の画面 Web アプリケーション XSS! レスポンス違 うけど OK?NG?
最小権限の重要性と難しさ - 脆弱性を見つけても修正しにくい Q .代行は全てのコンテンツを 操作していいのか? A社用 コンテンツ1 A社用 コンテンツ2
B社用 コンテンツ1 C社用 コンテンツ1 コンテンツ マネージャー マネージャー 代行
最小権限の重要性と難しさ - 脆弱性を見つけても修正しにくい A1.代行は自社内の限られた者 が使うため操作して良い A2.代行は委託先も利用するた め全て操作できてはいけない A3.そもそもどこまで使うか想 定していない 後一週間で、、
• そもそも権限設定の機能なかったから作らなきゃ • 権限での絞り込み機能を作らなきゃ A社用 コンテンツ1 A社用 コンテンツ2 B社用 コンテンツ1 C社用 コンテンツ1 コンテンツ マネージャー マネージャー 代行
最小権限の重要性と難しさ ビジネスと結びつきが強いにも関わらず、脆弱性 を見つけにくく、見つかった時の影響が大きい 影響の大きさ • 失敗すると不必要に許可された権限を利用して情報漏 洩を起こすことが可能、利用プランやサービスメ ニューも見直すかも • 脆弱性診断で見つけるには手間が必要だし、見つかっ
たところで修正するための工数が必要
最小権限を実現するために公開されている情報 - IPAの場合 - OWASPの場合
最小権限を実現するために公開されている情報 - IPAの場合 要約:外部のパラメータを利用してアクセス制御しないように! Web アプリ ケー ション http://…/?user=naga http://…/?user=yama
無料ユーザ用 の画面 管理者ユーザ用 の画面 IPA 安全なWebサイトの作り方 P46 – P47 <https://www.ipa.go.jp/files/000017316.pdf>
最小権限を実現するために公開されている情報 – OWASPの場合 6:適切なアクセス制御の実装 • すべてのリクエストがアクセス制御を通るようにする • アクセス制御のデフォルトは「拒否」 • 最小権限の原則
• アクセス制御をプログラムにハードコーディングしない • アクティビティに基づいて記述する • アクセス制御には、サーバー側の信頼できるデータを使う OWASP Top 10 Proactive Controls 2016 Japanese P18 – P20 <https://www.owasp.org/images/a/a8/OWASPTop10ProactiveControls2 016-Japanese.pdf>
最小権限を実現するために公開されている情報 実装上やらなければいけないこと 設計上やらなければいけないこと
何を守ろうとしているのか - どんな攻撃があるのか - 守るべき対象
何を守ろうとしているのか – どんな攻撃があるのか • 認証後の画面に未認証状態でアクセスする • 認証後のみ閲覧可能なコンテンツを未認証状態でダウン ロードする • 別の権限を持つユーザ用に用意した画面にアクセスする
• 権限設定をしているパラメータを改ざんする • 別のユーザのデータが取得される
ID PASS https://example.com/login 何を守ろうとしているのか – どんな攻撃があるのか 認証後の画面に未認証状態でアクセスする →誰でも認証後のユーザのみが閲覧できる情報が見える https://example.com/mypage 脆弱性を突いたルート
直接URLにアクセスして 認証回避を行う 正常なルート
何を守ろうとしているのか – どんな攻撃があるのか 認証後のみ閲覧可能なコンテンツを未認証状態でダウンロードする →公開領域にあるので誰でも情報が見える ID PASS https://example.com/login 正常なルート PDF
https://example.com/guide.pdf 脆弱性を突いたルート
何を守ろうとしているのか – どんな攻撃があるのか 別の権限を持つユーザ用に用意した画面にアクセスする →認証後において特定のユーザのみが閲覧可能な情報を 認証されたユーザであれば誰でも見れる ID PASS 正常なルート 脆弱性を突いたルート
https://example.com/ manage/?id=27 https://example.com/ mypage/?id=43 違うIDを指定することで アクセス制御を強制する
何を守ろうとしているのか – どんな攻撃があるのか 権限設定をしているパラメータを改ざんする →特定の権限を持つユーザのみが閲覧可能な情報が 認証されたユーザであれば誰でも見れる ID PASS https://example.com/manager/ Cookie”role:manager”
https://example.com/mypage/ Cookie”role:trial” 違う権限を指定することで アクセス制御を強制する 正常なルート 脆弱性を突いたルート
何を守ろうとしているのか – どんな攻撃があるのか 別のユーザのデータが取得される →設計ミス、実装ミスで全データが取得される id コンテンツ 所有者 1 コンテンツA
Tokyo 4 コンテンツC Kansai 8 コンテンツD Nagoya 12 コンテンツF Tokyo 15 コンテンツK Tokyo 22 コンテンツM Kansai コンテンツAから コンテンツMまで表示。。
何を守ろうとしているのか – 守るべき対象 画面・UI データ (ファイル、 データベース) 守りたいのは 情報(データ) データ中心に
アクセス権限を考える
小ネタ:リスクアセスメントでも一緒 情報資産の 洗い出し 脅威の明確化 リスクアセスメント 情報資産の特定をして 誰がアクセス可能かで 脅威や脆弱性を探る 権限設計 システムで扱うデータを
特定して誰がアクセス して良いかを探る ≒
権限設計をするには - データとその特性の洗い出し - 操作方法の検討
データとその特性の洗い出し - 扱うデータの特定 - データのライフサイクルの検討 - データの操作権の特定
データとその特性の洗い出し 架空のコンテンツ管理システムを題材にしてみる コンテンツ管理ASP「コンテンチャー」 ユーザ スペース ユーザ スペース ユーザ スペース システム
管理者 有料 ユーザ 無料 ユーザ • ユーザは契約したらスペース にコンテンツをアップロード して業務をする • システム管理者はアップロー ドしたコンテンツを分析する
データとその特性の洗い出し – 扱うデータの特定 PDF Image ER図の作成 扱うファイル の洗い出し データベースに格納するデータ、ストレージに格納するデータ、 それぞれ洗い出す
データとその特性の洗い出し – データのライフサイクルの検討 サービス提供期間に紐づきやすいためアカウント関連のデータは、 その他のデータとは分けて考える アカウント 関連のデータ その他のデータ (アカウント関連のデータ やサービス提供期間に依存)
その他のデータ (システム稼働期間に依存) サービス提供期間 システム稼働期間
データとその特性の洗い出し – データのライフサイクルの検討 作成契機 ・システム管理者が 申請の度に作成 ・管理権限のある ユーザが作成 削除契機 ・ユーザが任意の
タイミングで削除 ・契約終了後削除 アカウント関連のデータの検討
データとその特性の洗い出し – データのライフサイクルの検討 その他のデータの検討 作成契機 システム管理者が一 カ月に一回作成 削除契機 分析完了後削除 作成契機
契約期間中にユーザ が任意のタイミング で作成 削除契機 ・ユーザが任意の タイミングで削除 ・契約終了後削除 先にアカウント関連 のデータのライフサ イクルを考えておく と発想しやすい
データとその特性の洗い出し – データの操作権の特定 1. 認証の有無によってアクセスできるかどう かを検討する 2. 認証後のアクセスするデータのアクセスさ れる単位を検討する
データとその特性の洗い出し – データの操作権の特定 未認証でも アクセス できる範囲 認証後に アクセス できる範囲 認証後でないと
アクセスできない 公開領域に設置しない 未ログイン時の画面に表示しない =
データとその特性の洗い出し – データの操作権の特定 以下のどれにあたるか? • ユーザ単位で管理 • グループ単位で管理 • 権限単位で管理
• 上記組み合わせで管理 レコードの操作 単位を把握する 操作権限を渡す 対象を理解する =
データとその特性の洗い出し – データの操作権の特定 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 グループ 単位の テーブル ユーザ 単位の テーブル 検討結果によって参照するためのカラムが増える
操作方法の検討 - Howを考える - シーケンス図で検証する
操作方法の検討 – Howを考える 作成 契機 システム管理者が一 カ月に一回作成 認証後の管理者ユーザのみがア クセス可能な画面から作成する 削除
契機 分析完了後削除 システムで定期的にバッチに よって削除 作成 契機 契約期間中にユーザ が任意のタイミング で作成 認証後の有料ユーザのみがアク セス可能な画面から作成する 削除 契機 ユーザが任意の タイミングで削除 認証後の有料ユーザのうち管理 権限のあるユーザのみがアクセ ス可能な画面から削除 契約終了後削除 システムで定期的にバッチに よって削除 具体的なインターフェース を考える
操作方法の検討 – Howを考える ユーザ ユーザ機能 管理機能 管理者 一時ユーザ ユーザ認証 登録用一時URLメール送信
一時URL確認 アカウント関連のデータを利用した 認証についてはシーケンス図等でHowを検証 削除契機の 新たな発見 一時ユーザが 必要になった
実装するには - フレームワークのアクセス制御機能を利用 - その他参考となる情報
実装するには – フレームワークのアクセス制御機能を利用 アクセス制御機能(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や権 限に合致したデータの 取得
実装するには – その他参考となる情報 ▪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>
どのように検証すべきか - テストコードに含める - コードから権限表を生成する
どのように検証すべきか – テストコードに含める 設計者や開発者:結果が正しいか判断可能 第三者の診断担当者:権限表がない限り推測での判断となる A社用 コンテンツ1 A社用 コンテンツ2 B社用
コンテンツ1 C社用 コンテンツ1 権限X 権限Y 開発者 第三者の 診断担当者
どのように検証すべきか – コードから権限表を生成する ドキュメンテーションとテストコード記述のコストを抑える View Model Contro ler 機能名 画面名
無料 ユーザ 有料 ユーザ 管理者 ユーザ コ ン テ ン ツ 管 理 参照 ◦ ◦ ◦ 作成 × ◦ ◦ 削除 × ◦ ◦ ユ ー ザ 管 理 ユーザ 作成 × × ◦ パス ワード 編集 × × ◦ スクリプト
最小権限を維持するために - コードから権限表を再生成する
どのように検証すべきか – コードから権限表を生成する 権限設計をユーザ視点とデータ視点双方から確認しやすくなる 機能名 画面名 無料 ユーザ 有料 ユーザ
管理者 ユーザ コ ン テ ン ツ 管 理 参照 ◦ ◦ ◦ 作成 × ◦ ◦ 削除 × ◦ ◦ ユ ー ザ 管 理 ユーザ 作成 × × ◦ パス ワード 編集 × × ◦
まとめ 設計 システムで扱うデータとその特性を洗い 出して、データの権限設計を行う 実装 フレームワークの機能を利用して、 自前でのアクセス制御を減らす 検証 テストコード内で権限設計を検証する 維持
権限表を自動生成させて権限設計の面倒 なドキュメンテーション作業を減らす