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
2019-11 Webアプリケーションセキュリティ/2019-11 Web applicati...
Search
Cybozu
PRO
June 25, 2019
Technology
170k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2019-11 Webアプリケーションセキュリティ/2019-11 Web application Security
Cybozu
PRO
June 25, 2019
More Decks by Cybozu
See All by Cybozu
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
91k
新卒1年目QAが リリース基準の"なぜ"をたどってみた
cybozuinsideout
PRO
1
890
kintone リサーチ副部/UXリサーチャー 業務紹介
cybozuinsideout
PRO
0
190
私たちが『JaSST協賛』から『外部コネクト』チームになった理由
cybozuinsideout
PRO
0
600
LLMでもいつものテスト技術〜意外と半分はこれまでのテストでした〜
cybozuinsideout
PRO
1
1.2k
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
1
1.7k
LLMアプリの品質保証
cybozuinsideout
PRO
1
840
技術広報チームに丸投げしない!「一緒につくる」スポンサー活動
cybozuinsideout
PRO
0
310
テクニカルライター (グループウェア) について
cybozuinsideout
PRO
0
300
Other Decks in Technology
See All in Technology
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
520
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
520
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
820
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
2.9k
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
670
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
720
インバスケット試験対策アプリを 作って見えたAIエージェント構築 ナレッジ2選
shichijoyuhi
1
110
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
140
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
390
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
AWS FinOps Agent 結局何が得意なの?
siromi
0
230
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
Unsuck your backbone
ammeep
672
58k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
430
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Navigating Weather and Climate Data
rabernat
0
540
We Are The Robots
honzajavorek
0
380
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Transcript
開発運用研修 2019 セキュリティ PSIRT 大塚 純平
この講義の内容 ▌情報セキュリティ(5分) ▌サイボウズで検出している脆弱性とハンズオン(60分) • クロスサイト・スクリプティング (XSS) ★ハンズオン • SQLインジェクション(SQLi) ★ハンズオン
• 情報漏えい • クロスサイトリクエストフォージェリ(CSRF)★ハンズオン • HTTPのセキュリティ機能 ▌やられサイト (20分) ▌脆弱性の見つけ方(5分)
情報セキュリティ
情報セキュリティ 「情報セキュリティ」とは「CIA(機密性、完全性、可用性)」を維持することです。 Confidentiality 認可されていない個人、 エンティティまたはプロセスに 対して、情報を使用させず、 また開示しない特性。 Availability 認可されたエンティティが要 求したときに、アクセス及び使
用が可能である特性。 Integrity 正確さ及び完全さの特性。 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-16 環境設定 CWE-287 不適切な認証 CWE-20 不適切な入力確認 CWE-352 クロスサイトリクエストフォージェリ(CSRF)
CWE-22 パス・トラバーサル CWE-362 競合状態 CWE-78 OSコマンド・インジェクション CWE-384 Session Fixation CWE-79 クロスサイト・スクリプティング (XSS) CWE-399 リソース管理の問題 CWE-89 SQLインジェクション CWE-601 Open Redirect CWE-93 CRLF Injection CWE-614 ログインの不備 - クッキーのセキュア属性不備 CWE-94 コードインジェクション CWE-Other その他 CWE-113 HTTPヘッダ・インジェクション CWE- DesignError 設計上の問題 CWE-200 情報漏えい CWE-264 認可・権限・アクセス制御
CWE-79 クロスサイト・スクリプティング (XSS) ▌XSS とは Webアプリケーションを通して、任意のスクリプトを利用者のブラウザで実施させる脆弱性 です。 被害者が使っているサイトA サイトA上で、スクリプトが実行されてしまい、情報 が抜き取られたり、ページを改ざんされたり。
被害者が使っているサイトAや攻撃用のサイト クリックを誘導するURL (パラメーターにスクリプトがついている) 情報を収集するための攻撃用のサイト
XSS の原理(1) ▌HTMLタグや JavaScript などの構造を破壊するような値を入力するこ とで、スクリプトを実行させます。
XSS の例① (対策前) <h1><?php echo $_GET['name'] ?>さん</h1> index.php?name=AAA URL: GETリクエストパラメーター
の値をそのまま表示させる AAAさん <scrip>alert(1)</script>さん index.php?name=<script>alert(1)</script>
<h1><?php echo htmlspecialchars($_GET['name’]) ?>さん</h1> index.php?name=AAA URL: GETリクエストパラメーター の値をエスケープして表示させる AAAさん <script>alert(1)</script>さん
XSS の例① (対策後) index.php?name=<script>alert(1)</script>
XSS の原理(2) ▌出力時に value の「””」の構造が破壊されて、任意の属性が追加され る。
XSS の例② (対策前) <input type=“text” value= “a” onfocus=“alert(1)“ /> index.php?id=a”
onfocus=“alert(1) フォーカス時に、alert(1) が表示される <input type=“text” value=“<?php echo $_GET[‘id’] ?>” />
XSS の例② (対策後) index.php?id=a” onfocus=“alert(1) フォーカス時に何もならない <input type=“text” value=“<?php echo
htmlspecialchars($_GET[‘id’]) ?>” /> <input type=“text” value= "" onfocus="alert(1)"/>
XSSの種類 • 攻撃用のスクリプトが攻撃対象とは別の場所にある Reflected XSS • 攻撃用のスクリプトが攻撃対象のDB等に保管されている Stored XSS •
サーバーを経由せず、JSのみで表示するパラメータを経由して攻撃が実行される DOM Based XSS
原因と対策 • HTMLのエスケープ漏れ • 文字コードやコンテンツ型の自動判別への理解不足 原因 • HTML は正しくエスケープする •
文字コードは必ず宣言する • コンテンツ型が HTML と判定されないようにする 対策
CWE-89 SQLインジェクション(SQLi) ▌SQL インジェクションとは Web アプリケーションを通して、任意のSQL文をデータベースに対して発行できる脆弱 性です。 攻撃対象のサイトA サイトAからのリクエストにSQL文をデー タベースに対して発行
攻撃対象サイトAのデータベース SQL文の結果をサイトAに返す。 通常閲覧できないような情報が含まれる ことも…。
SQL インジェクションの原理(1) ▌DBMSに対して発行する SQL文の構造を破壊するような値を入力する ことでDBで不正な SQL文を実行します。 SELECT * FROM tbl_user
WHERE id =‘{$_GET[‘id’]}’ id =‘{$_GET[‘id’]}’
SQL インジェクションの原理(2) ▌SQL 文の構造を破壊され WHERE 句で指定される条件が常に「真」 になり、情報が漏えいします。 SELECT * FROM
tbl_user WHERE id =‘{$_GET[‘id’]}’ id =‘’ OR 1=1 --’ ’ OR 1=1 -- userテーブルの情報がすべて表示される 診断時には AND(‘ and 1=0) を使うことが推奨です。
原因と対策 • ユーザーが入力した文字列をエスケープしていない 原因 • 静的プレースホルダやテンプレートエンジン等、フレームワークの支援機構 を利用する • 別のシステムにデータを渡す際、ユーザーが入力した文字列を正しくエス ケープすること
対策
CWE-200 情報漏えい ▌データの送り方次第では、情報が攻撃者に漏えいしてしまう場合がありま す。 • HTTPでの情報 • QueryString上の情報 • LocalStorageでの漏えい
秘密情報 ▌秘密情報とは外部に知られると致命的となる情報 共通仕様として漏洩してはいけない情報を定義しています。 認証情報もしくは、それに類する情報を秘密情報としています。 • アカウント • パスワード • 特定の人にしか送信しないURL情報
• CSRFチケット
HTTPで機密情報をやり取りしちゃダメ ▌HTTPの通信には、HTTPとHTTPSがありHTTPの場合にはMiTM(通 信乗っ取り)されると情報を抜き取られてしまいます • HTTPは通信がそのままやり取りされています • HTTPSは通信が暗号化されてやり取りされています
QueryString に機密情報は乗せちゃダメ ▌たとえ、HTTPS通信でやり取りしていたとしてもQueryStringの情報は 漏洩する可能性があります • Referer ヘッダからの漏えい • サーバーのログからの漏えい(管理者が閲覧可能)
Referer からの QueryString の漏えい ▌HTTP リクエストにはRefererというヘッダがあります。 ▌Referer は移動する前にどんなURLにアクセスしていたかの情報が記載 されます 製品ページ
▽ アクセスしていたURL https://hogehoge.cybozu.co m/hoge.cgi?user=username &pass=password 攻撃者のページ ▽ 送られるRefererヘッダ https://hogehoge.cybozu.co m/hoge.cgi?user=username &pass=password 遷移 usernameというユー ザーのパスワードは passwordか。
CWE-352 クロスサイトリクエストフォージェリ(CSRF) ▌CSRF とは 被害者が罠リンクをクリックして意図せずに処理を実行させられてしまう脆弱性です。 ▌参考情報 https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/301.html 掲示板サイト 広告のようなクリックを誘導するURL (実はサイトAの設定変更を行うURL)
被害者が使っているサイトA 例えば、非公開設定になっている記事を 公開設定へ本人が変更したことに…
CSRF対策用のトークン ▌トークンをPOSTのリクエストボディのパラメーター送信しないと処理が行わ れないように対策します。 掲示板サイト 広告のようなクリックを誘導するURL (実はサイトAの設定変更を行うURL) 被害者が使っているサイトA 非公開設定を変えるためには POSTでアクセス且つ、サイトAのトークンが必要 GETだし、トークンは無いしで
エラーとしてはじかれる
サイボウズ製品の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 ▌フレーム内のページ表示を同一オリジンにのみ許可する保護機能