Mais conteúdo relacionado
Semelhante a ライブコーディングとデモで理解するWebセキュリティの基礎 (20)
ライブコーディングとデモで理解するWebセキュリティの基礎
- 1. ライブコーディングと
デモで理解する
Webセキュリティの基礎
2013/01/26
LOCAL DEVELOPER DAY '13 / Infra & Security
岸谷隆久
- 15. 脆弱性とは
• ○ぜいじゃくせい
×きじゃくせい ×ぼうじゃくせい
• 攻撃に対して弱い点、誰かが悪用で
きるバグ
• 一般的なものは対策方法が確立され
ており、対策は難しくない(設計時
から考慮しないと面倒なものも)
- 22. 攻撃者 サーバ
SQL
• アプリケーションからデータベースに発
行するSQLの構文がユーザーによって変
更され、データベースを操作される
• 影響:大規模な情報漏洩、データベース
の改ざん、破壊ほか、DBユーザーの権限
で可能な操作全て
- 26. 攻撃者 サーバ
Command
• シェルを呼び出す機能等のコマンドラ
イン構文をユーザーによって変更され
、任意のOS操作を実行される
• 影響:Webサーバ実行権限での任意の
OS操作(内部の脆弱性を攻撃できる
ため、多くの場合は永続的にroot権限
を得られる)
- 28. 原因と対策
• 入力値に含まれるシェル上でのメタ文字を無害
化せず実行してしまうことが原因
• シェルに任意の文字列が渡る実装をまず避けま
しょう
• プラットフォームが目的に応じた安全なAPIを
提供していればそれを利用しましょう
• 仕様が許す場合はホワイトリストからの選択、
[a-zA-Z0-9]のみ許可するなどの方法も
- 30. 攻撃者 被害者 サーバ
攻撃スクリプトを含む
誘導 リクエスト&レスポンス
• ユーザーが入力したデータを表示する
箇所でHTMLの文脈が変更され、任意の
スクリプト等の要素が挿入される
• 影響:ブラウザ上で動作するスクリプ
トでできること全て。Cookieの取得&設
定、画面の見た目上の改ざん、キーロ
ガー、ポートスキャンなど
- 32. 原因と対策
• 入力値に含まれるHTML上でのメタ文字
を無害化せずブラウザへレスポンスし
てしまうことが原因
• 出力時に最低限「”」「’」「<」「>」
「&」をHTMLエスケープしましょう
(属性値はクォートすること)
• <script>要素やイベントハンドラなどの
中への出力時は追加の対策が必要です
- 34. 攻撃者 被害者 サーバ
誘導 意図しない操作
• ユーザーが別のユーザーに、本人の意
思によらない操作を実行させてしまう
(最近は誤認逮捕事件でもおなじみ)
• 影響:対象サイトに対する意図しない
投稿や設定変更などの各種操作
- 40. 自動化?
• 多くの脆弱性はプログラム外との連
携結果として生じるため、ユニット
テストで評価しにくいことが多い。
• セキュリティスキャナ製品は一定の
効果が見込めるものの、原理的に検
出できない問題が少なくない。また
、商用製品は一般的に高価。
- 42. • “Burp Suite”, “Fiddler”, “Zed Attack Proxy”,
“WebScarab” などのHTTPデバッグツール
• Webアプリケーションテストスイート
• 基本的な機能はどれも似通っている
– リクエスト/レスポンスメッセージのインター
セプト・編集
– リプレイ
– アクティブ/パッシブスキャン(自動テスト)
– ブルートフォース
– リンク自動抽出などのWebサイト探査機能
- 44. • 単体テスト等のポイントではなくリ
リース前の段階でシステム全体として
行うのが効果的(な場合が多いと思わ
れる)
• hidden要素やCookieなどはもちろ
ん、HTTPリクエストの全ては任意に操
作可能であることを前提にしましょう。
「想定外の値」は脆弱性のもとです。
- 51. • Webシステムの脆弱性とその影響を
知って、安全なシステムを開発しま
しょう。
• 技術の進歩につれ攻撃と防御も変化
します。ときどき目を向けて、どう
向き合うか判断していきましょう。
- 52. Any Questions?
個別の質問・依頼・相談、
その他何かありましたらこちらへどうぞ
twitter: @tkishiya
mail: tkishiya@logicflaw.info
Notas do Editor
- キーメッセージ:Webセキュリティの基礎を知り、リスクを適切に評価できる目を養おう
- 最近はグローバルな ベストプラクティスを実践するオポチュニティのある会社らしいですが
- ただし DBMSとコネクタごとに様々なので、使用するバインド機構に既知の脆弱性がないことは確認する必要あり 自前でエスケープ処理を行うのは不完全になりやすく変更にも弱いため非推奨
- SQLと同様、自前でエスケープ処理を行うのは不完全になりやすく変更にも弱いため非推奨
- Test Driven で Security Spec を意識してコーディングするのは当然ながら効果的。ただしそれだけでカバーできないことが多いということ。 利用者間の権限、セッション系、CSRF等
- 早く始めるなら、画面や機能等の単位で開発完了したものから随時行うのもよい。