Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

12 Case Studies for the Access Controls of Web ...

Avatar for OWASP Japan OWASP Japan
March 19, 2014
1.7k

12 Case Studies for the Access Controls of Web Application #appsecapac2014

Avatar for OWASP Japan

OWASP Japan

March 19, 2014
Tweet

More Decks by OWASP Japan

Transcript

  1. !  Takashi Honda 本田 厇(ほんだ たかし) ◊  セキュリティも開発もやる兌業゚ンゞニアです。 !  Business -

    ◊  C/Sアプリ開発 5幎 ◊  Webアプリ開発 5幎 ◊  Webアプリ脆匱性怜査 7幎 !  Private - ◊  『脆匱性はどこにある?』をテヌマに‚ Webアプリケヌションのセキュリティ‚ に぀いお぀ぶやいおいたす。‚ (twitter @hagurese) ◊  C#でFiddlerアドオンを䜜ったり、‚ JavaでAndroidアプリを䜜ったり‚ しおいたす。
  2. !  怜査報告評䟡察策蚈画察策実斜再怜査 クロスサむト スクリプティング (XSS) SQLむンゞェクション (その他のむンゞェクション) 開発者 (XSS) 意倖ず箇所が倚いけど察策はちゃんず分かる。

    個別に察策ではなく党䜓で察策できないものか・・・。 (SQL) 急いで察策しないず・・・。 䞀旊は個別に察策するけど、ホントは 党䜓で察策した方がいいな・・・。 クロスサむト リク゚ストフォヌゞェリ (CSRF / XSRF) (CSRF) 攻撃方法がトリッキヌで分かりにくい けど察策はシンプルで分かりやすい。 システム党䜓に圱響するので 察策した埌のテストが倧倉そうだ・・・。 怜査員 これなら倧䞈倫ww
  3. !  混沌、混乱、誀解、䞍平䞍満  怜査員 開発者 (怜査前) アクセス制埡はちゃんず䜜っおありたす。 バッチリ問題ないはずですよ。 ネットワヌクでもしっかり防いでいたす し・・・。 (報告)

    怖さが䌝わらないかも・・・。 盎し方もお䌝えするのが難しいな・・・。 システム党䜓に展開しおいただける だろうか・・・。 アクセス 制埡の問題 (再怜査) ああ、やっぱり盎っおない・・・orz (怜査) アクセス制埡の定矩を確認でき ないず事象の刀断が難しい・・・。 怜査環境によっお怜出できたり、 できなかったりしたす。 ツヌルでは芋぀けられないこず が倚いです。 (評䟡) ちゃんず䜜ったはずなのに指摘されるなんお・・・。 フレヌムワヌクがやっおくれおるのではないの こんなの倧した問題ではないのでは・・・。 (察策) どう察策したらいいのかさっぱり分からないよ・・・。 この察策でちゃんずできおいるだろうか・・・。 䜕だか他の堎所にもあるような気がしおきた・・・。
  4. !  JVN iPedia 脆匱性察策情報デヌタベヌス‚ (http://jvndb.jvn.jp/index.html) ◊  CVSSによる深刻床 !  CVSS共通脆匱性評䟡システムCommon Vulnerability

    Scoring System) ◊  IPA/情報セキュリティ/共通脆匱性評䟡システムCVSS抂説‚ (http://www.ipa.go.jp/security/vuln/CVSS.html) 深刻床 CVSS基本倀 レベルⅢ (危険) 7.010.0 レベルⅡ (譊告) 4.06.9 レベルⅠ (泚意) 0.03.9 アクセス制埡の問題は 倧倉危険!!!
  5. !  OWASP 「OWASP TOP 10 – 2013 日本語版」 ◊  OWASP

    / OWASP Top 10 – 2013 日本語版‚ (https://www.owasp.org/images/7/79/ OWASP_Top_10_2013_JPN.pdf) 「A4 - 安党でない    オブゞェクト盎接参照」 「A7 - 機胜レベル    アクセス制埡の欠萜」
  6. !  「あるサブゞェクト胜動䜓、人間やプロセスが、どのオブ ゞェクト受動䜓、システムやファむルに察しお、どのアク セス読み曞き実行ができるかを蚱可したり拒吊し たりする機胜を指す。」 !  Wikipedia / アクセス制埡 /

    コンピュヌタセキュリティのアクセス制埡 (http://ja.wikipedia.org/wiki/アクセス制埡) !  「システム内のリ゜ヌスに察するアクセス芁求に察し、その 可吊を制埡するこずによっお、セキュリティの目的を達成す るための技術である。 」 !  IPA 2004 情財第 736 号 / アクセス制埡に関するセキュリティポリ シヌモデルの調査 報告曞 / 2.1.2 アクセス制埡(http:// www.ipa.go.jp/security/fy16/reports/access_control/ documents/PolicyModelSurvey.pdf)
  7. !  䜕を芋お刀定するのか?(xは䜕か?) ◊  芁求のコンテキスト 機胜(Verb)に 察する芁求の コンテキスト その他 (Else) 䞻䜓

    (Subject) 察象 (Object) 刀定匏 result = ACF(S,V,O,E)‹           = ACFV (S,O,E) コンテキストの組み合わせは7通り‚ [S], [O], [E], [S-O], [S-E], [O-E], [S-O-E] その他(E:else)の芁玠 (システム日付、通信経路など) 芁求の察象(O:object)ずその 属性(所有者、状態、期間など) 芁求の䞻䜓(S:subject)ず その属性(暩限、ロヌルなど) 芁求されおいる 機胜(V:verb)
  8. !  どのように刀定するか? ◊  刀定論理 → プログラムコヌド ◊  刀定基準(アクセス制埡ポリシヌ)  → マスタデヌタ 刀定論理 コンテキスト 刀定基準

    刀定結果 コンテキストを評䟡 コンテキスト間の関連、敎合性を評䟡 コンテキストを基準に察しお照䌚 刀定論理の挙動を パラメヌタ化
  9. 1.  操䜜無効のボタン・リンクを有効化 2.  URLを盎接指定 3.  リク゚ストを盎接指定 4.  埌続凊理のURL・リク゚ストを盎接指定 5.  怜玢結果䞀芧衚瀺から詳现衚瀺におオブゞェクトIDを指定

    6.  ニュヌス機胜の詳现衚瀺におオブゞェクトIDを指定 7.  削陀枈みのオブゞェクトIDを指定 8.  リスト遞択でリストにない項目IDを指定 9.  ダりンロヌドコンテンツのURLを盎接指定 10.  ブラりザから枡される制埡パラメヌタを改ざん 11.  デヌタ項目の参照・曎新制埡 12.  䞍完党な゚ラヌ凊理
  10. !  攻撃者は、任意のHTTPリク゚ストを䜜成しお、サヌバヌに送 信するこずが可胜です。 POST https://appsecapac.org/2014/page/ HTTP/1.1 Referer: https://appsecapac.org/2014/ Content-Type: application/x-www-form-urlencoded

    Host: appsecapac.org Content-Length: 10 Cookie: wfvt_3032309459=52e3b9f192d
 func=admin HTTPリク゚スト ※クッキヌは䞀般ナヌザヌでログむンしたずきに蚭定されたもの
  11. !  攻撃者は、管理者甚機胜のリク゚スト(ダりンロヌド凊理)を盎 接指定したす。 ◊  システムには「メニュヌ」 → 「怜玢」 → 「䞀芧衚瀺」 →

    「入力」 → 「確 認」 → 「完了」 ずいった凊理フロヌがありたす。 ◊  凊理フロヌの先頭でチェックした埌はアクセス制埡をチェックしおいたせ ん。 POST https://appsecapac.org/2014/page/ HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: appsecapac.org Content-Length: 17 Cookie: wfvt_3032309459=52e3b9f192d
 func=admin.export HTTPリク゚スト
  12. !  攻撃者は、「詳现衚瀺」のリク゚ストに含たれるニュヌスIDを 改ざんしたす。 ◊  事前にニュヌスIDを知っおいる必芁がありたす。 GET http://acshopping.test/20140201 HTTP/1.1 Host: acshopping.test

    Referer: http://acshopping.test/ Cookie: ASP.NET_SessionId=idtbjidawiwgmwrv02cwn54t;
 HTTPリク゚スト GET http://acshopping.test/20140321 HTTP/1.1 Host: acshopping.test Referer: http://acshopping.test/ Cookie: ASP.NET_SessionId=idtbjidawiwgmwrv02cwn54t; 

  13. !  攻撃者は、フォヌラム投皿IDを改ざんしたす。 ◊  事前にフォヌラム投皿IDを知っおいる必芁がありたす。 GET http://acshopping.test/boards/topic/5 HTTP/1.1 Host: acshopping.test Referer:

    http://acshopping.test/customer/orders Cookie: ASP.NET_SessionId=o0ijy1o5hky4yeta033s0i3w;
 HTTPリク゚スト GET http://acshopping.test/boards/topic/4 HTTP/1.1 Host: acshopping.test Referer: http://acshopping.test/customer/orders Cookie: ASP.NET_SessionId=o0ijy1o5hky4yeta033s0i3w;

  14. !  攻撃者は、リク゚ストに含たれる店舗IDを改ざんしたす。 ◊  他瀟の店舗IDを事前に知っおいる必芁がありたす。 HTTPリク゚スト POST http://acshopping.test/Admin HTTP/1.1 Host: acshopping.test

    Content-Type: application/x-www-form-urlencoded Content-Length: 17 Cookie: ASP.NET_SessionId=o0ijy1o5hky4yeta033s0i3w;
 shopId=C0050S0001 POST http://acshopping.test/Admin HTTP/1.1 Host: acshopping.test Content-Type: application/x-www-form-urlencoded Content-Length: 17 Cookie: ASP.NET_SessionId=o0ijy1o5hky4yeta033s0i3w;
 shopId=C0121S0002 HTML゜ヌスに蚘述された自瀟店舗䞀芧 <select> <option value="C0121S0001">Tokyo</option> <option value="C0121S0002">Osaka</option> <option value="C0121S0003">London</option> <option value="C0121S0004">Paris</option> <option value="C0121S0005">NewYork</option> </select>
  15. !  攻撃者は、コンテンツのURLを盎接指定したす。 ◊  事前にコンテンツのURLを知っおいる必芁がありたす。 GET http://acshopping.test/images/iphone.jpg HTTP/1.1 Host: acshopping.test Connection:

    keep-alive Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9 ,image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit /537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537 .36 Accept-Encoding: gzip,deflate,sdch Accept-Language: ja,en-US;q=0.8,en;q=0.6 Pragma: no-cache HTTPリク゚スト
  16. !  攻撃者は、「クッキヌ」で枡される「暩限レベル」の倀を改ざん したす。 ◊  「暩限レベル」 = { 0: 䞀般ナヌザヌ、9: 管理者ナヌザヌ

    } GET http://acshopping.test/ HTTP/1.1 Host: acshopping.test Referer: http://acshopping.test/ Cookie: ASP.NET_SessionId=riy0n2ir3vm410abeuu3cael; aclv=0
 HTTPリク゚スト GET http://acshopping.test/ HTTP/1.1 Host: acshopping.test Referer: http://acshopping.test/ Cookie: ASP.NET_SessionId=riy0n2ir3vm410abeuu3cael; aclv=9

  17. !  攻撃者は、曎新凊理のリク゚ストを改ざんしたす。 POST http://acshopping.test/Admin/ProductReview/Edit/2 HTTP/1.1 Host: acshopping.test Cookie: ASP.NET_SessionId=0diwftbjzf5sxlhs20td3yzm; ...

    save=save-continue&Id=2&Title=%E3%81
%80%82&IsApproved=true HTTPリク゚スト POST http://acshopping.test/Admin/ProductReview/Edit/2 HTTP/1.1 Host: acshopping.test Cookie: ASP.NET_SessionId=0diwftbjzf5sxlhs20td3yzm; ... save=save-continue&Id=2&Title=%E3%81
%80%82&IsApproved=true &Rating=1
  18. !  デヌタ項目「レヌティング」が曎新されたす。 怜査員 デヌタ項目レベルのアクセス制埡にも泚意する必芁がありたす。 ・参照すべきでないデヌタ項目をレスポンスしないこず  「画面に衚瀺しない」だけではダメ!! ・曎新すべきでないデヌタ項目がリク゚ストに枡されおも  曎新しないこず 開発者 でも、この事䟋そんなに怖くないのでは???

    今たでの䞭にもさほど怖くないものもあったような・・・ 怜査員 ですよね。 アクセス制埡がないのは確かですが、そもそも必芁か どうかを明確に定矩しなければ刀断できたせん。 ずころで、アクセス制埡の定矩曞はございたすか?
  19. HTTPリク゚スト GET http://acshopping.test/orderdetails/3 HTTP/1.1 Host: acshopping.test Referer: http://acshopping.test/customer/orders Cookie: ASP.NET_SessionId=o0ijy1o5hky4yeta033s0i3w;


    HTTP/1.1 301 Moved Permanently Content-Type: text/html; charset=UTF-8 Location: http://acshopping.test/error_accessdenied Server: Microsoft-IIS/7.5 Content-Length: 0 HTTPレスポンス HTTPリク゚スト GET http://acshopping.test/error_accessdenied HTTP/1.1 Host: acshopping.test Referer: http://acshopping.test/customer/orderdetails/3 Cookie: ASP.NET_SessionId=o0ijy1o5hky4yeta033s0i3w;

  20. [システム蚭蚈実装テスト工皋] !  ブラりザ偎のアクセス制埡には頌らないこず !  ブラりザ偎の制埡はナヌザビリティ向䞊が目的だず認識する。 !  党おのリク゚ストにおサヌバ偎でアクセスの可吊を刀定‚ するこず !  「A4

    –安党でないオブゞェクト盎接参照」 !  「A7 – 機胜レベルアクセス制埡の欠萜」 !  制埡パラメヌタをブラりザから枡さないこず !  セッション管理を行い、サヌバ偎で保持するこず !  デヌタ項目の参照・曎新制埡に泚意するこず !  アクセス制埡゚ラヌ時の凊理に泚意するこず
  21. [システム蚭蚈工皋] !  埓来のC/SアプリずWebアプリは違うず認識するこず ◊  ブラりザからやっおくるリク゚ストは信甚できない。 ◊  HTTPはオヌプンなプロトコル、HTML、CSS、JavaScriptは解析可胜 !  フレヌムワヌクに隠蔜されたHTTPを意識するこず ◊ 

    党おのHTTPリク゚ストでアクセス制埡できおいるのが望たしい。 [芁件定矩システム分析工皋] !  アクセス制埡を挏れ抜けなく掗い出し、誀りなく定矩するこず ◊  あるべき仕様が定矩されなければ、あるべき実装は期埅できない。 ◊  定矩されおいなければ、怜査時にも刀断が぀かない堎合がある。