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
開発運用研修2020セキュリティ / Development_Operations_Train...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Cybozu
PRO
August 19, 2020
Technology
60k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
開発運用研修2020セキュリティ / Development_Operations_Training_2020_Security
Cybozu
PRO
August 19, 2020
More Decks by Cybozu
See All by Cybozu
新卒1年目QAが リリース基準の"なぜ"をたどってみた
cybozuinsideout
PRO
1
370
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
83k
kintone リサーチ副部/UXリサーチャー 業務紹介
cybozuinsideout
PRO
0
98
私たちが『JaSST協賛』から『外部コネクト』チームになった理由
cybozuinsideout
PRO
0
380
LLMでもいつものテスト技術〜意外と半分はこれまでのテストでした〜
cybozuinsideout
PRO
1
950
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
1.4k
LLMアプリの品質保証
cybozuinsideout
PRO
1
680
技術広報チームに丸投げしない!「一緒につくる」スポンサー活動
cybozuinsideout
PRO
0
260
テクニカルライター (グループウェア) について
cybozuinsideout
PRO
0
230
Other Decks in Technology
See All in Technology
RAGの精度向上とエージェント活用
kintotechdev
2
120
【FinOps】データドリブンな意思決定を目指して
z63d
3
580
水を運ぶ人としてのリーダーシップ
izumii19
4
1.2k
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
140
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
870
きのこカンファレンス2026_肩書きを外したとき私は誰か
yamasatimi
1
120
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
180
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
140
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
610
5分でわかるDuckDB Quack
chanyou0311
4
300
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
420
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
400
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Statistics for Hackers
jakevdp
799
230k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
We Are The Robots
honzajavorek
0
260
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Deep Space Network (abreviated)
tonyrice
0
220
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Rails Girls Zürich Keynote
gr2m
96
14k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Transcript
開発運⽤研修 2020 セキュリティ PSIRT ⼤塚 純平
この講義の内容 ▌情報セキュリティ(5分) ▌サイボウズで検出している脆弱性の紹介 • クロスサイト・スクリプティング (XSS) • SQLインジェクション(SQLi) • クロスサイトリクエストフォージェリ(CSRF)
• HTTPのセキュリティ機能 ▌やられサイト (20分) ▌脆弱性の⾒つけ⽅(5分)
情報セキュリティ
情報セキュリティの3要素 「情報セキュリティ」とは「CIA(機密性、完全性、可⽤性)」を維持することです。 Confidentiality 認可されていない個⼈、 エンティティまたはプロセスに 対して、情報を使⽤させず、 また開⽰しない特性。 Integrity 正確さ及び完全さの特性。 Availability
認可されたエンティティが要 求したときに、アクセス及び使 ⽤が可能である特性。 JIS Q 27000
情報資産 ▌情報セキュリティで保護すべき対象となるもの。情報資産は様々であり、 組織そのものや⼈も該当します。 • 電⼦媒体(DVD・メモリスティック) • 印刷物 • 設備 •
パソコン 情報資産
脆弱性 ▌脆弱性とは、セキュリティ上の問題箇所のこと。 • ソフトウェア製品の本来の機能や性能を損なう原因となりうる箇所 • 不適切な運⽤により、セキュリティが維持できなくなっている状態 脆弱性
脅威 ▌組織に損害を与える可能性の「潜在的な原因」 • 脆弱性を利⽤して、リスクを現実化させる⼿段であり、⾃然災害など も含まれる。 脅威
サイボウズで検出している脆弱性
脆弱性の種別 サイボウズでは、脆弱性の種別として CWE 識別⼦を利⽤しています。 ▌CWE(Common Weakness Enumeration) とは ⾮営利団体のMITREが中⼼となって策定している、ソフトウェアにおけるセキュリティ 上の弱点(脆弱性)の種類を識別するための共通の基準です。
▌参考情報 https://www.ipa.go.jp/security/vuln/CWE.html
CWEタイプのツリー(全て/JVN iPedia) ▌CWEはツリー構造になっており、上位にある脆弱性ほど、抽象度が⾼く なります。企業ごとに取捨選択して利⽤しています。 CWE全体@NIST JVN iPedia @IPA
サイボウズで使⽤しているCWE識別⼦ ▌サイボウズで使⽤しているCWE識別⼦と脆弱性タイプ CWE番号 概要 CWE番号 概要 CWE-16 環境設定 CWE-264 認可・権限・アクセス制御
CWE-20 不適切な⼊⼒確認 CWE-287 不適切な認証 CWE-22 パス・トラバーサル CWE-352 クロスサイトリクエストフォージェリ(CSRF) CWE-78 OSコマンド・インジェクション CWE-362 競合状態 CWE-79 クロスサイト・スクリプティング (XSS) CWE-384 Session Fixation CWE-89 SQLインジェクション CWE-399 リソース管理の問題 CWE-93 CRLF Injection CWE-601 Open Redirect CWE-94 コードインジェクション CWE-614 ログインの不備 - クッキーのセキュア属性不備 CWE-113 HTTPヘッダ・インジェクション CWE-639 Authorization Bypass Through User- Controlled Key CWE-150 エスケープ、メタ、または制御シーケンスの不適 切な中和 CWE-918 サーバーサイドリクエストフォージェリ CWE-200 情報漏えい CWE-Other その他 CWE-255 証明書・パスワード管理 CWE- DesignError 設計上の問題
CWE-79 クロスサイト・スクリプティング (XSS) ▌XSS とは Webアプリケーションを通して、任意のスクリプトを利⽤者のブラウザで実施させる脆弱性 です。 1.被害者が使っているサイトAや攻撃⽤のサイト 攻撃⽤スクリプトが付いたURLを被害者にクリックさせる 2.被害者が使っているサイトA
サイトA上で、スクリプトが実⾏されてしまい、情報 が抜き取られたり、ページを改ざんされたり。
XSS の原理 ▌HTMLタグや JavaScript などの構造を破壊するような値を⼊⼒するこ とで、スクリプトを実⾏させます。
XSS の例① (対策前) URL: index.php?name=AAA <h1><?php echo $_GET['name'] ?>さん</h1> GETリクエストパラメーター
の値をそのまま表⽰させる AAAさん URL: index.php?name=<script>alert(1)</script> <h1><?php echo $_GET['name'] ?>さん</h1> GETリクエストパラメーター の値をそのまま表⽰させる <scrip>alert(1)</script>さん
XSS の例① (対策後) URL: index.php?name=AAA <h1><?php echo htmlspecialchars($_GET['nameʼ]) ?>さん</h1> GETリクエストパラメーター
の値をエスケープして表⽰させる AAAさん URL: index.php?name=<script>alert(1)</script> <script>alert(1)</script>さん
XSSの種類 Reflected XSS • 攻撃⽤のスクリプトが攻撃対象とは別の場所にある Stored XSS • 攻撃⽤のスクリプトが攻撃対象のDB等に保管されている DOM
Based XSS • サーバーを経由せず、JSのみで表⽰するパラメータを経由して攻撃が実⾏される
XSSの原因と対策 原因 • HTMLのエスケープ漏れ • ⽂字コードやコンテンツ型の⾃動判別への理解不⾜ 対策 • HTML は正しくエスケープする
• ⽂字コードは必ず宣⾔する • コンテンツ型が HTML と判定されないようにする
CWE-89 SQLインジェクション(SQLi) ▌SQL インジェクションとは Web アプリケーションを通して、任意のSQL⽂をデータベースに対して発⾏できる脆弱 性です。 1.攻撃対象のサイトA サイトAからのリクエストにSQL⽂をデー タベースに対して発⾏
2.攻撃対象サイトAのデータベース SQL⽂の結果をサイトAに返す。 通常閲覧できないような情報が含まれる 場合がある。
SQL インジェクションの原理 ▌DBMSに対して発⾏する SQL⽂の構造を破壊するような値を⼊⼒する ことでDBで不正な SQL⽂を実⾏します。
SELECT * FROM tbl_user WHERE id =ʻ{$_GET[ʻidʼ]}ʼ ʼ OR 1=1
-- id =ʻʼ OR 1=1 --ʼ userテーブルの情報がすべて表⽰される ▌SQL ⽂の構造を破壊され WHERE 句で指定される条件が常に「真」 になり、情報が漏えいします。 診断時には AND(ʻ and 1=0) を使うことが推奨です。
SQLインジェクションの原因と対策 原因 • ユーザーが⼊⼒した⽂字列をエスケープしていない 対策 • 静的プレースホルダやテンプレートエンジン等、フレームワークの⽀援機構 を利⽤する • 別のシステムにデータを渡す際、ユーザーが⼊⼒した⽂字列を正しくエス
ケープすること
CWE-200 情報漏えい ▌データの送り⽅次第では、情報が攻撃者に漏えいしてしまう場合がありま す。 • HTTPでの情報 • QueryString上の情報 • LocalStorageでの漏えい
秘密情報 ▌秘密情報とは外部に知られると致命的となる情報
HTTPで秘密情報をやり取りしちゃダメ ▌HTTPの通信には、HTTPとHTTPSがありHTTPの場合にはMiTM(通 信乗っ取り)されると情報を抜き取られてしまいます • HTTPは通信がそのままやり取りされています • HTTPSは通信が暗号化されてやり取りされています
QueryString に秘密情報は乗せちゃダメ ▌たとえ、HTTPS通信でやり取りしていたとしてもQueryStringの情報は 漏洩する可能性があります • Referer ヘッダからの漏えい • サーバーのログからの漏えい(管理者が閲覧可能)
Referer からの QueryString の漏えい ▌HTTP リクエストにはRefererというヘッダがあります。 ▌Referer は移動する前にどんなURLにアクセスしていたかの情報が記載 されます。 製品ページ
▽ アクセスしていたURL https://example.com/login?u ser=username&pass=passw ord 遷移 攻撃者のページ ▽ 送られるRefererヘッダ https://example.com/login? user=username&pass=pass word
CWE-352 クロスサイトリクエストフォージェリ(CSRF) ▌CSRF とは 被害者が罠リンクをクリックして意図せずに処理を実⾏させられてしまう脆弱性です。 1.掲⽰板サイト 広告のようなクリックを誘導するURL (実はサイトAの設定変更を⾏うURL) 2.被害者が使っているサイトA 例えば、⾮公開設定になっている記事を
公開設定へ本⼈が変更したことに…
CSRF対策⽤のトークン ▌事前にユーザーに共有してあるトークン(推測困難な⽂字列)を送信しないと処 理が⾏われないように対策します。 1.掲⽰板サイト 広告のようなクリックを誘導するURL (実はサイトAの設定変更を⾏うURL) 2.被害者が使っているサイトA トークンが無いのでエラーとしてはじかれる
サイボウズ製品のCSRF対策⽤のトークン ▌製品によってパラメーターが異なります トークンの値が削除されると、不正なリクエストとして処理され、実⾏されません。 ▼kintone、サイボウズ共通管理、Store ▼Garoon、Office、メールワイズ
セキュリティ機能 ▌HTTP では、セキュリティ機能を設定することができます • X-XSS-Protection • X-Content-Type-Options • X-Frame-Options •
Content-Security-Policy • Content-Disposition: attachment; • Strict-Transport-Security 共通仕様として定められているものもあります。
X-XSS-Protection: 1; mode=block ▌ブラウザ側でも XSS を防ぐための保護機能 X-XSS-Protection: 1; mode=block ブラウザの設定で、デフォルトで有効になっている
XSS フィルター機能に対して、ユー ザーが無効にしている場合にも、強制的に有効するための機能です。XSSと検知された 場合は、レスポンスのコンテンツ全体が「#」に置き換えられます。
X-Frame-Options:SAMEORIGIN ▌フレーム内のページ表⽰を同⼀オリジンにのみ許可する保護機能
脆弱性の⾒つけ⽅ 社内で実施している脆弱性を⾒つける⽅法を説明します 【重要】許可された環境や⾃分の所有する環境・ネットワーク以外には 攻撃しないようにしましょう︕
脆弱性検査の⼿法(1) 診断環境 診断対象システム Internet ブラックボックステスト 診断対象システムに対して、擬似的な攻撃を試⾏し 応答結果を分析して脆弱性を洗い出す
脆弱性検査の⼿法(2) ホワイトボックステスト 設計書、仕様書、コンフィグファイル、ソースコード などを直接分析して、脆弱性を洗い出す
診断対象(1) 診断環境 診断対象システム Internet Web アプリケーション / サイト Web アプリケーション
/ サイトに存在する脆弱性や、 設定不備が残っていないか把握するための試験
診断対象(2) ネットワークインフラ サーバーやネットワーク機器の設定に問題がないかを 把握するための試験 診断環境 診断対象システム Internet
ツールを利⽤する ▌検証を⾏うためのツールを利⽤して検証を実施することも出来ます lOpenVAS︓セキュリティ診断ツール。特定のサーバーで動作しているサービスの 脆弱性がないかを確認できる。 lnmap︓ポートスキャンツールの⼀つ。対象サーバーの空いているポートを探すの はもちろん、そこで動いているサービスが何かも調査できる。 lsqlmap︓SQLインジェクションを検証するためのツール。 lVuls︓サーバーに対して存在するサードパーティの脆弱性をスキャンしてくれるツー ル
参考書籍 ▌安全なウェブサイトの作り⽅ http://www.ipa.go.jp/security/vuln/websecurity.html ▌ウェブ健康診断仕様 http://www.ipa.go.jp/files/000017319.pdf ▌Webアプリケーション脆弱性診断ガイドライン https://github.com/ueno1000/WebAppPentestGuidelines ▌OWASP チートシート https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series
▌脆弱性診断スタートガイド(上野本) ▌安全なWebアプリケーションの作り⽅(徳丸本)
脆弱性評価
CVSSv3 ▌Common Vulnerability Scoring System version 3 ▌世界中で使われている数値化システム ▌CIAに加え5項⽬、計8項⽬を軸に評価 ▌脆弱性の影響度を0.0
~ 10.0で評価する
CVSSv3の評価に⽤いる8項⽬ ▌攻撃経路(AV):ネットワーク/隣接/ローカル/物理 ▌攻撃難易度(AC):低/⾼ ▌攻撃に必要な権限(PR):なし/低/⾼ ▌被害者の操作の必要性(UI):不要/要 ▌影響の範囲(S):変更なし/変更あり ▌機密性への影響(C):なし/低/⾼ ▌完全性への影響(I):なし/低/⾼ ▌可⽤性への影響(A):なし/低/⾼
CVSSv3の評価例 【攻撃シナリオ】 1. 攻撃者は細⼯をしたURLを被害 者に送り付ける 2. 被害者がそのリンクを開く 【被害】 被害者が利⽤しているサイトAのパス ワードが攻撃者に漏洩する
▌攻撃経路(AV):ネットワーク ▌攻撃難易度(AC):低 ▌攻撃に必要な権限(PR):なし ▌被害者の操作の必要性(UI):要 ▌影響の範囲(S):変更なし ▌機密性への影響(C):⾼ ▌完全性への影響(I):なし ▌可⽤性への影響(A):なし CVSSv3基本値:6.5