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
Learn about vulnerability
Search
Akira Morikawa
August 24, 2018
Technology
1
220
Learn about vulnerability
#駆け出しエンジニア 向けのセキュリティ勉強用資料
Akira Morikawa
August 24, 2018
Tweet
Share
More Decks by Akira Morikawa
See All by Akira Morikawa
コロナ禍だからこそ考えるオフラインコミュニティの意義 / significance of community
ariaki
0
1.8k
アウトプットの始め方/start output 20230121
ariaki
0
260
web-secure-phpcon2020
ariaki
3
3.3k
オブジェクトライフサイクルとメモリ管理を学ぼう / OOC 2020
ariaki
8
3.5k
エンジニアはアウトプットによって成長できるのか? / Grow with your output
ariaki
24
6.3k
アウトプットを始めよう / How to begin output jawsug-bgnr
ariaki
2
3.7k
参加者の安全を守れていますか? / Protecting community safety
ariaki
1
6.7k
タピオカに学ぶ二段階認証 / tapioca-mfa
ariaki
5
1.2k
古に学ぶ個人開発のススメ / My recommendation of personal development
ariaki
1
1.4k
Other Decks in Technology
See All in Technology
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
260
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
270
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
17
45k
30→150人のエンジニア組織拡大に伴うアジャイル文化を醸成する役割と取り組みの変化
nagata03
0
140
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
120
設計を積み重ねてシステムを刷新する
sansantech
PRO
0
160
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
210
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
210
Goで作って学ぶWebSocket
ryuichi1208
3
2.7k
クラウド食堂とは?
hiyanger
0
110
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
190
急成長する企業で作った、エンジニアが輝ける制度/ 20250227 Rinto Ikenoue
shift_evolve
0
130
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
990
Done Done
chrislema
182
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Building an army of robots
kneath
303
45k
Side Projects
sachag
452
42k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
GraphQLとの向き合い方2022年版
quramy
44
14k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Music & Morning Musume
bryan
46
6.4k
Automating Front-end Workflow
addyosmani
1368
200k
Transcript
Learn about vulnerability and how to secure your website Aug
24, 2018 @ariaki4dev CC-BY-4.0
Why ?
何でセキュリティって必要? 資産と安全
資産 ヒト モノ カネ
生命 生活 生活資産(衣食住) その他の有形資産 現預金・有価証券 その他の無形資産 安全
考えてみよう カード情報漏洩 想定される被害
考えてみよう カード情報漏洩 - 不正利用 - 利用妨害 - 信用情報漏洩 - 利用履歴漏洩
- 利用履歴操作 - 信用失墜 : 想定される被害
考えてみよう 印鑑盗難 PC 盗難 スマホ盗難 ① あなたはどんな被害を受けるだろう? ② あなたはどう対策する?
リスクを多方面から考える
「あなたの豊かな暮らし」 を守ることがとても重要
What ?
分類 脅威の例 人為的脅威 意図的脅威 攻撃(不正侵入、ウイルス、改ざん、盗聴、な りすまし、等) 偶発的脅威 人為的ミス(ヒューマンエラー)、障害 環境的脅威 災害(地震、洪水、台風、火事、等)
JIS Q 27002:2006 脅威の分類
物理的脅威 人的脅威 技術的脅威 脅威の発生原因
物理的脅威 - 物理的な破損等 - 天災(地震・洪水・火災) - 人災(破損・紛失・等) - 物理的攻撃(盗難・破壊・等) -
経年劣化
人的脅威 - 人によって引き起こされる脅威 - 操作ミス - 情報流出 - 人災(破損・紛失・等) -
物理的攻撃(盗難・破壊・等)
- プログラムによって引き起こされる脅威 - 偽装攻撃(マルウェア・フィッシング詐欺・等) - 標的型攻撃 - 脆弱性への攻撃 - 総当たり等の攻撃
技術的脅威
内的要因 外的要因 - 攻撃そのものに対する知識 - 攻撃を受けないための知識
脅 威 インシデント リスク (脅威の顕在化)
全ての攻撃からは守りきれない
危殆化 - かつて安全とされていた仕組みが、技術進歩によって危険度が増加した状態 - ハードウェアの高速化 - 高速なアルゴリズム発明 など - ゼロデイ攻撃を受ける可能性
How ?
分類 脅威の例 機密性 アクセスを認可された者だけが、情報にアクセス できることを確実にすること 完全性 情報および処理方法が正確であること及び完全 であることを保護すること 可用性 認可された利用者が、必要なときに、情報及び関連
する資産にアクセスできることを確実にすること ISO/IEC17799 情報セキュリティの概念
分類 脅威の例 技術的対策 プログラム・ネットワーク等に関するセキュリティ 物理的対策 建物・設備等に対するセキュリティ 管理的対策 教育、発注先管理、人的セキュリティ セキュリティ対策
対策のポイント 防止 (抑止) 検出 (検知) 対応 (回復) 今日はここを中心に話します
対策の観点 - 個人情報保護 … 保管される個人情報が漏洩しない為の対策 - 事業継続担保 … 攻撃等による事業停止が最小限に収まる為の対策
攻撃を受けない為の知識 攻撃を発見する為の知識 攻撃を緩和する為の知識 被害を最小限に抑える知識 被害から復帰する為の知識 セキュリティ = 知識
- 商用サービスは通常、脆弱性診断を受ける - 有名な脆弱性が存在しないかチェックしてくれるサービス - 精度は 100% ではないので常に自分が最後の砦だと認識しておく 脆弱性診断
- データベースに平文のままパスワードを格納しない - bcrypt ライブラリを使用する - SHA-256 等を使ってハッシュ化する - sha256
( “password” + “salt” ) - salt : サーバ上でのみ保管する鍵データのようなもの 安全なパスワード格納
Attacks
ここで話さない内容 - 内部犯行の予防について - 検知と事後対応について - 情報リテラシー - ここからセキュリティ(情報処理推進機構) -
情報セキュリティ対策(情報処理推進機構) - 国民のための情報セキュリティサイト(総務省)
CSRF Cross-Site Request Forgeries
受け取る おめでとうございます あなたはこの度、インターネットの50 周年を記念した1億円プレゼントの自 動抽選に当選しました。 以下のリンクより受け取れます。 CSRF 意図しない操作実行 1万円の送金を完了しました。 ・送金先:△△銀行 □□支店
・名義人:悪意太郎 ◦◦銀行 サイト A サイト B
- リンク元→リンク先の遷移が正当か検証する必要がある - CSRF トークンを使った検証 - リクエスト元ページにトークンを埋め込む - リクエスト先ページでトークンの正当性を検証 -
CSRF トークン実装例 - https://qiita.com/mpyw/items/8f8989f8575159ce95fc CSRF / 対策
CSRF / 対策 クッキー情報 : YYYY 2つの値の関連性を検証
XSS Cross Site Scripting
XSS 確認 NAME <script> alert(‘HELLO’) </script> ニックネーム登録 登録 ニックネーム確認 OK
HELLO 意図しない JavaScript 動作
- XSS は HTML Injection の一形態 - HTML Injection …
悪意ある HTML を表示してしまう問題 - XSS … 悪意ある JavaScript を表示してしまう問題 - 外部からの入力データを表示する際はサニタイズする - HTML として表示させない - org.apache.commons.lang3.StringEscapeUtils - java-html-sanitizer XSS / 対策
SQL injection
SQL injection ID 1’ OR 1=1; /* PASS */-- SELECT
* FROM USERS WHERE ID=’1’ OR 1=1; /* AND PASS=’*/--’; 確認 ログイン 意図しない SQL 動作
- 意図しない SQL がサーバに送信される - データベースに対して任意の SQL を実行される危険性 - SQL
処理時にプレースホルダを使う - 入力文字列を SQL として処理させない - https://www.jpcert.or.jp/java-rules/ids00-j.html - java.sql.PreparedStatement SQL injection / 対策
Directory traversal
Directory traversal 意図しないサーバ内ファイル流出 ariaki:xxxxxxxx admin:yyyyyyyyy http://weaksite.jp/show-image?file=../../../etc/passwrd
- ファイル表示処理で意図しないファイルパスを指定される - サーバ上のあらゆるファイルを読み取られる可能性 - ファイルパスを適切に処理する - パス指定を許可しない - パス区切り文字を検知してエスケープする
Directory traversal / 対策
Command injection
Command injection NAME `date` 確認 ニックネーム登録 意図しない OS コマンド動作 NAME
登録 ニックネーム確認 2018-08-24 12:34:56 ※上記例は主に PHP を想定しています
- 意図しない OS コマンドが送信される - サーバ上で任意の OS コマンドを実行される危険性 - コマンド処理時にシェルエスケープする
- 入力文字列をコマンドとして処理させない - https://www.jpcert.or.jp/java-rules/ids07-j.html Command injection / 対策
Header injection
Header injection 意図しないクッキー設定 HTTP/1.1 302 Found Date: Fri, 24 Aug
2018 12:34:56 GMT Location: http://weaksite.jp/b Set-Cookie: SID=ABCD1234 : http://weaksite.jp/a?redirect=http://weaksite.jp/b%0D%0ASet-Cookie:+SID=ABCD1234
- 意図しないヘッダを構築してしまう - ユーザに対する様々な攻撃を許してしまう可能性 - ヘッダーを適切に処理する - 改行コードを適切に取り扱える API を利用する
- 改行コードが含まれる場合に処理を中断する Header injection / 対策
DDoS Distributed Denial of Service
- 意図的に過剰なリクエストを送信する - サイトが負荷限界によりサービスを継続できなくなる - F5 アタック - SYN フラッド
- DNS ポイズニング - ウイルス等 - バルス、あけおめ DDoS
- ハードウェア / OS レベルの対策が必要 - 攻撃元 IP アドレスからのアクセスを遮断 -
Firewall / Proxy 導入 - SYN Cache 等の対策 DDoS / 対策
その他の脆弱性
- オープンリダイレクト - ブルートフォース攻撃可能なログイン画面 - 親切過ぎるエラーメッセージ - ディレクトリリスティング - クリックジャッキング
- サイズ制限の無いファイルアップロード など、有名な攻撃手法だけでも多数あります その他の脆弱性
One More Thing !
ソーシャルエンジニアリング 人を介した機密情報漏洩 今期の決算って どうだった? 多分超黒字 ボーナス多そう 人間を介した機密情報漏洩は最もシンプルかつ簡単に行えるものです。 技術的な情報以外も該当するので普段から充分な注意をしましょう。
- あなたが利用しているサイトパスワードは? 複数サイトで使い回していない 十分に複雑な文字列にしている 公開されたサイト上に保管していない - あなたの情報端末は? 離席時に画面ロックしている スマホのパスワードを 4
桁にしていない 安全なパスワード強度
- 最近のフィッシング詐欺は PC だけじゃない - 佐川急便を装った迷惑メール - LINEフレンドからのプリペイドカード要求 - エンジニアはフィッシング格好の標的
- 他職種より重要な情報を保持している事を肝に銘じる - 私物からも機密情報漏洩の可能性が十分にある フィッシング攻撃に注意
Conclude
This JavaScript code powers a 1,500 user intranet application 最悪なログインコード
Security NEXT by NEWSGAIA 相次ぐ個人情報漏洩事件
- セキュリティインシデントは絶対起こしたくない - 多くは知識不足によって起こります - しかし知識不足を理由にしても許されない - 我々は安全なウェブサイトの作り方を学び活かす必要がある 知識不足では済まない
インシデントは発生する前提で考える 被害を最小限に抑える為の予防と準備を行う 技術以外にもセキュリティリスクは存在する 危殆化しない為に継続的な情報収集を行う 一般的な脆弱性に対してしっかり対策する 覚えておくこと
Appendix 以下のコンテンツをひととおり読んでおこう - 安全なウェブサイトの作り方 - 守るべき情報資産の考え方 - Web アプリケーションセキュリティ -
OWASP TOP-10 2017年度版 - 他人事じゃない!WEB サイトに対する 10 の攻撃パターンと対策方法まとめ - Web アプリケーションの脆弱性の解説&体験ページ
Build Something Amazing ariaki4dev written by