Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
開発運用研修2020セキュリティ / Development_Operations_Train...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Cybozu
PRO
August 19, 2020
Technology
61k
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
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
89k
新卒1年目QAが リリース基準の"なぜ"をたどってみた
cybozuinsideout
PRO
1
830
kintone リサーチ副部/UXリサーチャー 業務紹介
cybozuinsideout
PRO
0
170
私たちが『JaSST協賛』から『外部コネクト』チームになった理由
cybozuinsideout
PRO
0
590
LLMでもいつものテスト技術〜意外と半分はこれまでのテストでした〜
cybozuinsideout
PRO
1
1.1k
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
1
1.7k
LLMアプリの品質保証
cybozuinsideout
PRO
1
820
技術広報チームに丸投げしない!「一緒につくる」スポンサー活動
cybozuinsideout
PRO
0
300
テクニカルライター (グループウェア) について
cybozuinsideout
PRO
0
290
Other Decks in Technology
See All in Technology
LLMに渡さなかった仕事
nanaism
0
850
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
おい、エージェントを使って終わらせろ
nwiizo
1
690
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
170
SREへの勘違いに気づいた後の話
tomodakengo
0
110
2026_devsumi_ozono.pdf
o3
3
520
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.6k
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
210
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
29
16k
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
210
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
16k
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Embracing the Ebb and Flow
colly
88
5.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
510
Unsuck your backbone
ammeep
672
58k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
The browser strikes back
jonoalderson
0
1.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Are puppies a ranking factor?
jonoalderson
2
3.9k
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